/*
  MIT License http://www.opensource.org/licenses/mit-license.php
  Author Tobias Koppers @sokra
*/

/*
  options.target         - name of the target object
  options.global         - target is the global object
  options.stat           - export as static methods of target
  options.proto          - export as prototype methods of target
  options.real           - real prototype method for the `pure` version
  options.forced         - export even if the native feature is available
  options.bind           - bind methods to the target, required for the `pure` version
  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version
  options.unsafe         - use the simple assignment of property instead of delete + defineProperty
  options.sham           - add a flag to not completely full polyfills
  options.enumerable     - export as enumerable property
  options.dontCallGetSet - prevent calling a getter on target
  options.name           - the .name of the function if it does not match the key
*/

/*
 Modernizr 3.0.0pre (Custom Build) | MIT
*/

/*
object-assign
(c) Sindre Sorhus
@license MIT
*/

/* , ...args */

/* , ...arguments */

/* , ...items */

/* , ...substitutions */

/* , base */

/* , end */

/* , endPosition = @length */

/* , fillString = ' ' */

/* , fromIndex */

/* , fromIndex = 0 */

/* , fromIndex = @[*-1] */

/* , init */

/* , initialValue */

/* , insertFn */

/* , littleEndian */

/* , mapFn, thisArg */

/* , mapfn = undefined, thisArg = undefined */

/* , mapfn, thisArg */

/* , newTarget */

/* , offset */

/* , options */

/* , position = 0 */

/* , receiver */

/* , start = 0, end = @length */

/* , start, end */

/* , targetKey */

/* , that = undefined */

/* , thisArg */

/* , thunk */

/* , { transfer } */

/* . */

/* ...iterables */

/* 0 */

/* 1 */

/* 10 */

/* 100 */

/* 101 */

/* 102 */

/* 103 */

/* 104 */

/* 105 */

/* 106 */

/* 107 */

/* 108 */

/* 109 */

/* 11 */

/* 110 */

/* 111 */

/* 112 */

/* 113 */

/* 114 */

/* 115 */

/* 116 */

/* 117 */

/* 118 */

/* 119 */

/* 12 */

/* 120 */

/* 121 */

/* 122 */

/* 123 */

/* 124 */

/* 125 */

/* 126 */

/* 127 */

/* 128 */

/* 129 */

/* 13 */

/* 130 */

/* 131 */

/* 132 */

/* 133 */

/* 134 */

/* 135 */

/* 136 */

/* 137 */

/* 138 */

/* 139 */

/* 14 */

/* 140 */

/* 141 */

/* 142 */

/* 143 */

/* 144 */

/* 145 */

/* 146 */

/* 147 */

/* 148 */

/* 149 */

/* 15 */

/* 150 */

/* 151 */

/* 152 */

/* 153 */

/* 154 */

/* 155 */

/* 156 */

/* 157 */

/* 158 */

/* 159 */

/* 16 */

/* 160 */

/* 161 */

/* 162 */

/* 163 */

/* 164 */

/* 165 */

/* 166 */

/* 167 */

/* 168 */

/* 169 */

/* 17 */

/* 170 */

/* 171 */

/* 172 */

/* 173 */

/* 174 */

/* 175 */

/* 176 */

/* 177 */

/* 178 */

/* 179 */

/* 18 */

/* 180 */

/* 181 */

/* 182 */

/* 183 */

/* 184 */

/* 185 */

/* 186 */

/* 187 */

/* 188 */

/* 189 */

/* 19 */

/* 190 */

/* 191 */

/* 192 */

/* 193 */

/* 194 */

/* 195 */

/* 196 */

/* 197 */

/* 198 */

/* 199 */

/* 2 */

/* 20 */

/* 200 */

/* 201 */

/* 202 */

/* 203 */

/* 204 */

/* 205 */

/* 206 */

/* 207 */

/* 208 */

/* 209 */

/* 21 */

/* 210 */

/* 211 */

/* 212 */

/* 213 */

/* 214 */

/* 215 */

/* 216 */

/* 217 */

/* 218 */

/* 219 */

/* 22 */

/* 220 */

/* 221 */

/* 222 */

/* 223 */

/* 224 */

/* 225 */

/* 226 */

/* 227 */

/* 228 */

/* 229 */

/* 23 */

/* 230 */

/* 231 */

/* 232 */

/* 233 */

/* 234 */

/* 235 */

/* 236 */

/* 237 */

/* 238 */

/* 239 */

/* 24 */

/* 240 */

/* 241 */

/* 242 */

/* 243 */

/* 244 */

/* 245 */

/* 246 */

/* 247 */

/* 248 */

/* 249 */

/* 25 */

/* 250 */

/* 251 */

/* 252 */

/* 253 */

/* 254 */

/* 255 */

/* 256 */

/* 257 */

/* 258 */

/* 259 */

/* 26 */

/* 260 */

/* 261 */

/* 262 */

/* 263 */

/* 264 */

/* 265 */

/* 266 */

/* 267 */

/* 268 */

/* 269 */

/* 27 */

/* 270 */

/* 271 */

/* 272 */

/* 273 */

/* 274 */

/* 275 */

/* 276 */

/* 277 */

/* 278 */

/* 279 */

/* 28 */

/* 280 */

/* 281 */

/* 282 */

/* 283 */

/* 284 */

/* 285 */

/* 286 */

/* 287 */

/* 288 */

/* 289 */

/* 29 */

/* 290 */

/* 291 */

/* 292 */

/* 293 */

/* 294 */

/* 295 */

/* 296 */

/* 297 */

/* 298 */

/* 299 */

/* 3 */

/* 30 */

/* 300 */

/* 301 */

/* 302 */

/* 303 */

/* 304 */

/* 305 */

/* 306 */

/* 307 */

/* 308 */

/* 309 */

/* 31 */

/* 310 */

/* 311 */

/* 312 */

/* 313 */

/* 314 */

/* 315 */

/* 316 */

/* 317 */

/* 318 */

/* 319 */

/* 32 */

/* 320 */

/* 321 */

/* 322 */

/* 323 */

/* 324 */

/* 325 */

/* 326 */

/* 327 */

/* 328 */

/* 329 */

/* 33 */

/* 330 */

/* 331 */

/* 332 */

/* 333 */

/* 334 */

/* 335 */

/* 336 */

/* 337 */

/* 338 */

/* 339 */

/* 34 */

/* 340 */

/* 341 */

/* 342 */

/* 343 */

/* 344 */

/* 345 */

/* 346 */

/* 347 */

/* 348 */

/* 349 */

/* 35 */

/* 350 */

/* 351 */

/* 352 */

/* 353 */

/* 354 */

/* 355 */

/* 356 */

/* 357 */

/* 358 */

/* 359 */

/* 36 */

/* 360 */

/* 361 */

/* 362 */

/* 363 */

/* 364 */

/* 365 */

/* 366 */

/* 367 */

/* 368 */

/* 369 */

/* 37 */

/* 370 */

/* 371 */

/* 372 */

/* 373 */

/* 374 */

/* 375 */

/* 376 */

/* 377 */

/* 378 */

/* 379 */

/* 38 */

/* 380 */

/* 381 */

/* 382 */

/* 383 */

/* 384 */

/* 385 */

/* 386 */

/* 387 */

/* 388 */

/* 389 */

/* 39 */

/* 390 */

/* 391 */

/* 392 */

/* 393 */

/* 394 */

/* 395 */

/* 396 */

/* 397 */

/* 398 */

/* 399 */

/* 4 */

/* 40 */

/* 400 */

/* 401 */

/* 402 */

/* 403 */

/* 404 */

/* 405 */

/* 406 */

/* 407 */

/* 408 */

/* 409 */

/* 41 */

/* 410 */

/* 411 */

/* 412 */

/* 413 */

/* 414 */

/* 415 */

/* 416 */

/* 417 */

/* 418 */

/* 419 */

/* 42 */

/* 420 */

/* 421 */

/* 422 */

/* 423 */

/* 424 */

/* 425 */

/* 426 */

/* 427 */

/* 428 */

/* 429 */

/* 43 */

/* 430 */

/* 431 */

/* 432 */

/* 433 */

/* 434 */

/* 435 */

/* 436 */

/* 437 */

/* 438 */

/* 439 */

/* 44 */

/* 440 */

/* 441 */

/* 442 */

/* 443 */

/* 444 */

/* 445 */

/* 446 */

/* 447 */

/* 448 */

/* 449 */

/* 45 */

/* 450 */

/* 451 */

/* 452 */

/* 453 */

/* 454 */

/* 455 */

/* 456 */

/* 457 */

/* 458 */

/* 459 */

/* 46 */

/* 460 */

/* 461 */

/* 462 */

/* 463 */

/* 464 */

/* 465 */

/* 466 */

/* 467 */

/* 468 */

/* 469 */

/* 47 */

/* 470 */

/* 471 */

/* 472 */

/* 473 */

/* 474 */

/* 475 */

/* 476 */

/* 477 */

/* 478 */

/* 479 */

/* 48 */

/* 480 */

/* 481 */

/* 482 */

/* 483 */

/* 484 */

/* 485 */

/* 486 */

/* 487 */

/* 488 */

/* 489 */

/* 49 */

/* 490 */

/* 491 */

/* 492 */

/* 493 */

/* 494 */

/* 495 */

/* 496 */

/* 497 */

/* 498 */

/* 499 */

/* 5 */

/* 50 */

/* 500 */

/* 501 */

/* 502 */

/* 503 */

/* 504 */

/* 505 */

/* 506 */

/* 507 */

/* 508 */

/* 509 */

/* 51 */

/* 510 */

/* 511 */

/* 512 */

/* 513 */

/* 514 */

/* 515 */

/* 516 */

/* 517 */

/* 518 */

/* 519 */

/* 52 */

/* 520 */

/* 521 */

/* 522 */

/* 523 */

/* 524 */

/* 525 */

/* 526 */

/* 527 */

/* 528 */

/* 529 */

/* 53 */

/* 530 */

/* 531 */

/* 532 */

/* 533 */

/* 534 */

/* 535 */

/* 536 */

/* 537 */

/* 538 */

/* 539 */

/* 54 */

/* 540 */

/* 541 */

/* 542 */

/* 543 */

/* 544 */

/* 545 */

/* 546 */

/* 547 */

/* 548 */

/* 549 */

/* 55 */

/* 550 */

/* 551 */

/* 552 */

/* 553 */

/* 554 */

/* 555 */

/* 556 */

/* 557 */

/* 558 */

/* 559 */

/* 56 */

/* 560 */

/* 561 */

/* 562 */

/* 563 */

/* 564 */

/* 565 */

/* 566 */

/* 567 */

/* 568 */

/* 569 */

/* 57 */

/* 570 */

/* 571 */

/* 572 */

/* 573 */

/* 574 */

/* 575 */

/* 576 */

/* 577 */

/* 578 */

/* 579 */

/* 58 */

/* 580 */

/* 581 */

/* 582 */

/* 583 */

/* 584 */

/* 585 */

/* 586 */

/* 587 */

/* 588 */

/* 589 */

/* 59 */

/* 590 */

/* 591 */

/* 592 */

/* 593 */

/* 594 */

/* 595 */

/* 596 */

/* 597 */

/* 598 */

/* 599 */

/* 6 */

/* 60 */

/* 600 */

/* 601 */

/* 602 */

/* 603 */

/* 604 */

/* 605 */

/* 606 */

/* 607 */

/* 608 */

/* 609 */

/* 61 */

/* 610 */

/* 611 */

/* 612 */

/* 613 */

/* 614 */

/* 615 */

/* 616 */

/* 617 */

/* 618 */

/* 619 */

/* 62 */

/* 620 */

/* 621 */

/* 622 */

/* 623 */

/* 624 */

/* 625 */

/* 626 */

/* 627 */

/* 628 */

/* 629 */

/* 63 */

/* 630 */

/* 631 */

/* 632 */

/* 633 */

/* 634 */

/* 635 */

/* 636 */

/* 637 */

/* 638 */

/* 639 */

/* 64 */

/* 640 */

/* 641 */

/* 642 */

/* 643 */

/* 644 */

/* 645 */

/* 646 */

/* 647 */

/* 648 */

/* 649 */

/* 65 */

/* 650 */

/* 651 */

/* 652 */

/* 653 */

/* 654 */

/* 655 */

/* 656 */

/* 657 */

/* 658 */

/* 659 */

/* 66 */

/* 660 */

/* 661 */

/* 662 */

/* 663 */

/* 664 */

/* 665 */

/* 666 */

/* 667 */

/* 668 */

/* 669 */

/* 67 */

/* 670 */

/* 671 */

/* 672 */

/* 673 */

/* 674 */

/* 675 */

/* 676 */

/* 677 */

/* 678 */

/* 679 */

/* 68 */

/* 680 */

/* 681 */

/* 682 */

/* 683 */

/* 684 */

/* 685 */

/* 686 */

/* 687 */

/* 688 */

/* 689 */

/* 69 */

/* 690 */

/* 691 */

/* 692 */

/* 693 */

/* 694 */

/* 695 */

/* 696 */

/* 697 */

/* 698 */

/* 699 */

/* 7 */

/* 70 */

/* 700 */

/* 701 */

/* 702 */

/* 703 */

/* 704 */

/* 705 */

/* 706 */

/* 707 */

/* 708 */

/* 709 */

/* 71 */

/* 710 */

/* 711 */

/* 712 */

/* 713 */

/* 714 */

/* 715 */

/* 716 */

/* 717 */

/* 718 */

/* 719 */

/* 72 */

/* 720 */

/* 721 */

/* 722 */

/* 723 */

/* 724 */

/* 725 */

/* 726 */

/* 727 */

/* 728 */

/* 729 */

/* 73 */

/* 730 */

/* 731 */

/* 732 */

/* 733 */

/* 734 */

/* 735 */

/* 736 */

/* 737 */

/* 738 */

/* 739 */

/* 74 */

/* 740 */

/* 741 */

/* 742 */

/* 743 */

/* 744 */

/* 745 */

/* 746 */

/* 747 */

/* 748 */

/* 749 */

/* 75 */

/* 750 */

/* 751 */

/* 752 */

/* 753 */

/* 754 */

/* 755 */

/* 756 */

/* 757 */

/* 758 */

/* 759 */

/* 76 */

/* 760 */

/* 761 */

/* 762 */

/* 763 */

/* 764 */

/* 765 */

/* 766 */

/* 767 */

/* 768 */

/* 769 */

/* 77 */

/* 770 */

/* 771 */

/* 772 */

/* 773 */

/* 774 */

/* 775 */

/* 776 */

/* 777 */

/* 778 */

/* 779 */

/* 78 */

/* 780 */

/* 781 */

/* 782 */

/* 783 */

/* 784 */

/* 785 */

/* 786 */

/* 787 */

/* 788 */

/* 789 */

/* 79 */

/* 790 */

/* 791 */

/* 792 */

/* 793 */

/* 794 */

/* 795 */

/* 796 */

/* 797 */

/* 798 */

/* 799 */

/* 8 */

/* 80 */

/* 800 */

/* 801 */

/* 802 */

/* 803 */

/* 804 */

/* 805 */

/* 806 */

/* 807 */

/* 808 */

/* 809 */

/* 81 */

/* 810 */

/* 811 */

/* 812 */

/* 813 */

/* 814 */

/* 815 */

/* 816 */

/* 817 */

/* 818 */

/* 819 */

/* 82 */

/* 820 */

/* 821 */

/* 822 */

/* 823 */

/* 824 */

/* 825 */

/* 826 */

/* 827 */

/* 828 */

/* 829 */

/* 83 */

/* 830 */

/* 831 */

/* 832 */

/* 833 */

/* 834 */

/* 835 */

/* 836 */

/* 837 */

/* 838 */

/* 839 */

/* 84 */

/* 840 */

/* 841 */

/* 842 */

/* 843 */

/* 844 */

/* 845 */

/* 846 */

/* 847 */

/* 848 */

/* 849 */

/* 85 */

/* 850 */

/* 851 */

/* 852 */

/* 853 */

/* 854 */

/* 855 */

/* 856 */

/* 857 */

/* 858 */

/* 859 */

/* 86 */

/* 860 */

/* 861 */

/* 862 */

/* 87 */

/* 88 */

/* 89 */

/* 9 */

/* 90 */

/* 91 */

/* 92 */

/* 93 */

/* 94 */

/* 95 */

/* 96 */

/* 97 */

/* 98 */

/* 99 */

/* = 0 */

/* = 0, end = @length */

/* BEGIN.ATTRIBUTION */

/* Built-in method references for those with the same name as other `lodash` methods. */

/* Built-in method references that are verified to be native. */

/* END.ATTRIBUTION */

/* WEBPACK VAR INJECTION */

/* empty */

/* entries */

/* eslint-disable dot-notation */

/* eslint-disable es/no-array-prototype-indexof -- required for testing */

/* eslint-disable es/no-array-prototype-keys -- safe */

/* eslint-disable es/no-array-prototype-lastindexof -- safe */

/* eslint-disable es/no-bigint -- safe */

/* eslint-disable es/no-json -- safe */

/* eslint-disable es/no-object-getownpropertynames -- safe */

/* eslint-disable es/no-string-prototype-matchall -- safe */

/* eslint-disable es/no-symbol -- required for testing */

/* eslint-disable es/no-symbol -- safe */

/* eslint-disable no-new -- required for testing */

/* eslint-disable no-proto -- safe */

/* eslint-disable no-self-assign -- prototype methods protection */

/* eslint-disable no-unused-vars */

/* eslint-disable no-unused-vars -- required for functions `.length` */

/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */

/* eslint-disable regexp/no-useless-quantifier -- testing */

/* eslint-enable */

/* eslint-enable no-new -- required for testing */

/* eslint-enable no-self-assign -- prototype methods protection */

/* global ActiveXObject -- old IE, WSH */

/* global Bun -- Deno case */

/* global Deno -- Deno case */

/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */

/* global define */

/* harmony default export */

/* harmony export (binding) */

/* harmony import */

/* ignore */

/* istanbul ignore if  */

/* istanbul ignore next  */

/*!
	Copyright (c) 2018 Jed Watson.
	Licensed under the MIT License (MIT), see
	http://jedwatson.github.io/classnames
*/

/*! no static exports found */

/*!**********************!*\
  !*** ./src/index.ts ***!
  \**********************/

/*!**************************!*\
  !*** ./src/fetchable.ts ***!
  \**************************/

/*!*****************************************!*\
  !*** external "@majeure/typed-actions" ***!
  \*****************************************/

/*#__PURE__*/

/**
   * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction
   * of new styles we needed to differentiate between them. Prefix `fa` is now an alias
   * for `fas` so we'll ease the upgrade process for our users by automatically defining
   * this as well.
   */

/**
 *
 * Creates an array cache object to store unique values.
 *
 * @private
 * @constructor
 * @param {Array} [values] The values to cache.
 */

/**
 * # Reduce
 *
 * A fast object `.reduce()` implementation.
 *
 * @param  {Object}   subject      The object to reduce over.
 * @param  {Function} fn           The reducer function.
 * @param  {mixed}    initialValue The initial value for the reducer, defaults to subject[0].
 * @param  {Object}   thisContext  The context for the reducer.
 * @return {mixed}                 The final result.
 */

/**
 * A specialized version of `_.filter` for arrays without support for
 * iteratee shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {Array} Returns the new filtered array.
 */

/**
 * A specialized version of `_.map` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the new mapped array.
 */

/**
 * A specialized version of `_.memoize` which clears the memoized function's
 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
 *
 * @private
 * @param {Function} func The function to have its output memoized.
 * @returns {Function} Returns the new memoized function.
 */

/**
 * A specialized version of `_.some` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} predicate The function invoked per iteration.
 * @returns {boolean} Returns `true` if any element passes the predicate check,
 *  else `false`.
 */

/**
 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the raw `toStringTag`.
 */

/**
 * A specialized version of `baseIsEqualDeep` for arrays with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Array} array The array to compare.
 * @param {Array} other The other array to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `array` and `other` objects.
 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
 */

/**
 * A specialized version of `baseIsEqualDeep` for comparing objects of
 * the same `toStringTag`.
 *
 * **Note:** This function only supports comparing values with tags of
 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {string} tag The `toStringTag` of the objects to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */

/**
 * A specialized version of `baseIsEqualDeep` for objects with support for
 * partial deep comparisons.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} stack Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */

/**
 * A specialized version of `baseIsEqual` for arrays and objects which performs
 * deep comparisons and tracks traversed objects enabling objects with circular
 * references to be compared.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
 * @param {Function} customizer The function to customize comparisons.
 * @param {Function} equalFunc The function to determine equivalents of values.
 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
 */

/**
 * A specialized version of `baseProperty` which supports deep paths.
 *
 * @private
 * @param {Array|string} path The path of the property to get.
 * @returns {Function} Returns the new accessor function.
 */

/**
 * A specialized version of `matchesProperty` for source values suitable
 * for strict equality comparisons, i.e. `===`.
 *
 * @private
 * @param {string} key The key of the property to get.
 * @param {*} srcValue The value to match.
 * @returns {Function} Returns the new spec function.
 */

/**
 * Adds `value` to the array cache.
 *
 * @private
 * @name add
 * @memberOf SetCache
 * @alias push
 * @param {*} value The value to cache.
 * @returns {Object} Returns the cache instance.
 */

/**
 * Appends the elements of `values` to `array`.
 *
 * @private
 * @param {Array} array The array to modify.
 * @param {Array} values The values to append.
 * @returns {Array} Returns `array`.
 */

/**
 * Casts `value` to a path array if it's not one.
 *
 * @private
 * @param {*} value The value to inspect.
 * @param {Object} [object] The object to query keys on.
 * @returns {Array} Returns the cast property path array.
 */

/**
 * Checks if `func` has its source masked.
 *
 * @private
 * @param {Function} func The function to check.
 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
 */

/**
 * Checks if `path` exists on `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array|string} path The path to check.
 * @param {Function} hasFunc The function to check properties.
 * @returns {boolean} Returns `true` if `path` exists, else `false`.
 */

/**
 * Checks if `path` is a direct or inherited property of `object`.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Object
 * @param {Object} object The object to query.
 * @param {Array|string} path The path to check.
 * @returns {boolean} Returns `true` if `path` exists, else `false`.
 * @example
 *
 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
 *
 * _.hasIn(object, 'a');
 * // => true
 *
 * _.hasIn(object, 'a.b');
 * // => true
 *
 * _.hasIn(object, ['a', 'b']);
 * // => true
 *
 * _.hasIn(object, 'b');
 * // => false
 */

/**
 * Checks if `value` is a property name and not a property path.
 *
 * @private
 * @param {*} value The value to check.
 * @param {Object} [object] The object to query keys on.
 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
 */

/**
 * Checks if `value` is a valid array-like index.
 *
 * @private
 * @param {*} value The value to check.
 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
 */

/**
 * Checks if `value` is a valid array-like length.
 *
 * **Note:** This method is loosely based on
 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
 * @example
 *
 * _.isLength(3);
 * // => true
 *
 * _.isLength(Number.MIN_VALUE);
 * // => false
 *
 * _.isLength(Infinity);
 * // => false
 *
 * _.isLength('3');
 * // => false
 */

/**
 * Checks if `value` is array-like. A value is considered array-like if it's
 * not a function and has a `value.length` that's an integer greater than or
 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
 * @example
 *
 * _.isArrayLike([1, 2, 3]);
 * // => true
 *
 * _.isArrayLike(document.body.children);
 * // => true
 *
 * _.isArrayLike('abc');
 * // => true
 *
 * _.isArrayLike(_.noop);
 * // => false
 */

/**
 * Checks if `value` is classified as a `Function` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 * @example
 *
 * _.isFunction(_);
 * // => true
 *
 * _.isFunction(/abc/);
 * // => false
 */

/**
 * Checks if `value` is classified as a `Symbol` primitive or object.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
 * @example
 *
 * _.isSymbol(Symbol.iterator);
 * // => true
 *
 * _.isSymbol('abc');
 * // => false
 */

/**
 * Checks if `value` is classified as an `Array` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
 * @example
 *
 * _.isArray([1, 2, 3]);
 * // => true
 *
 * _.isArray(document.body.children);
 * // => false
 *
 * _.isArray('abc');
 * // => false
 *
 * _.isArray(_.noop);
 * // => false
 */

/**
 * Checks if `value` is in the array cache.
 *
 * @private
 * @name has
 * @memberOf SetCache
 * @param {*} value The value to search for.
 * @returns {number} Returns `true` if `value` is found, else `false`.
 */

/**
 * Checks if `value` is likely a prototype object.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
 */

/**
 * Checks if `value` is object-like. A value is object-like if it's not `null`
 * and has a `typeof` result of "object".
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 * @example
 *
 * _.isObjectLike({});
 * // => true
 *
 * _.isObjectLike([1, 2, 3]);
 * // => true
 *
 * _.isObjectLike(_.noop);
 * // => false
 *
 * _.isObjectLike(null);
 * // => false
 */

/**
 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` if suitable for strict
 *  equality comparisons, else `false`.
 */

/**
 * Checks if `value` is suitable for use as unique object key.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
 */

/**
 * Checks if `value` is the
 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 * @example
 *
 * _.isObject({});
 * // => true
 *
 * _.isObject([1, 2, 3]);
 * // => true
 *
 * _.isObject(_.noop);
 * // => true
 *
 * _.isObject(null);
 * // => false
 */

/**
 * Checks if a `cache` value for `key` exists.
 *
 * @private
 * @param {Object} cache The cache to query.
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */

/**
 * Checks if a hash value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Hash
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */

/**
 * Checks if a list cache value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf ListCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */

/**
 * Checks if a map value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf MapCache
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */

/**
 * Checks if a stack value for `key` exists.
 *
 * @private
 * @name has
 * @memberOf Stack
 * @param {string} key The key of the entry to check.
 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
 */

/**
 * Compares values to sort them in ascending order.
 *
 * @private
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {number} Returns the sort order indicator for `value`.
 */

/**
 * Converts `func` to its source code.
 *
 * @private
 * @param {Function} func The function to convert.
 * @returns {string} Returns the source code.
 */

/**
 * Converts `map` to its key-value pairs.
 *
 * @private
 * @param {Object} map The map to convert.
 * @returns {Array} Returns the key-value pairs.
 */

/**
 * Converts `set` to an array of its values.
 *
 * @private
 * @param {Object} set The set to convert.
 * @returns {Array} Returns the values.
 */

/**
 * Converts `value` to a string key if it's not a string or symbol.
 *
 * @private
 * @param {*} value The value to inspect.
 * @returns {string|symbol} Returns the key.
 */

/**
 * Converts `value` to a string using `Object.prototype.toString`.
 *
 * @private
 * @param {*} value The value to convert.
 * @returns {string} Returns the converted string.
 */

/**
 * Converts `value` to a string. An empty string is returned for `null`
 * and `undefined` values. The sign of `-0` is preserved.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to convert.
 * @returns {string} Returns the converted string.
 * @example
 *
 * _.toString(null);
 * // => ''
 *
 * _.toString(-0);
 * // => '-0'
 *
 * _.toString([1, 2, 3]);
 * // => '1,2,3'
 */

/**
 * Copyright (c) 2013-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

/**
 * Creates a `baseEach` or `baseEachRight` function.
 *
 * @private
 * @param {Function} eachFunc The function to iterate over a collection.
 * @param {boolean} [fromRight] Specify iterating from right to left.
 * @returns {Function} Returns the new base function.
 */

/**
 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
 *
 * @private
 * @param {boolean} [fromRight] Specify iterating from right to left.
 * @returns {Function} Returns the new base function.
 */

/**
 * Creates a function that memoizes the result of `func`. If `resolver` is
 * provided, it determines the cache key for storing the result based on the
 * arguments provided to the memoized function. By default, the first argument
 * provided to the memoized function is used as the map cache key. The `func`
 * is invoked with the `this` binding of the memoized function.
 *
 * **Note:** The cache is exposed as the `cache` property on the memoized
 * function. Its creation may be customized by replacing the `_.memoize.Cache`
 * constructor with one whose instances implement the
 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Function
 * @param {Function} func The function to have its output memoized.
 * @param {Function} [resolver] The function to resolve the cache key.
 * @returns {Function} Returns the new memoized function.
 * @example
 *
 * var object = { 'a': 1, 'b': 2 };
 * var other = { 'c': 3, 'd': 4 };
 *
 * var values = _.memoize(_.values);
 * values(object);
 * // => [1, 2]
 *
 * values(other);
 * // => [3, 4]
 *
 * object.a = 2;
 * values(object);
 * // => [1, 2]
 *
 * // Modify the result cache.
 * values.cache.set(object, ['a', 'b']);
 * values(object);
 * // => ['a', 'b']
 *
 * // Replace `_.memoize.Cache`.
 * _.memoize.Cache = WeakMap;
 */

/**
 * Creates a function that returns the value at `path` of a given object.
 *
 * @static
 * @memberOf _
 * @since 2.4.0
 * @category Util
 * @param {Array|string} path The path of the property to get.
 * @returns {Function} Returns the new accessor function.
 * @example
 *
 * var objects = [
 *   { 'a': { 'b': 2 } },
 *   { 'a': { 'b': 1 } }
 * ];
 *
 * _.map(objects, _.property('a.b'));
 * // => [2, 1]
 *
 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
 * // => [1, 2]
 */

/**
 * Creates a hash object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

/**
 * Creates a map cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

/**
 * Creates a stack cache object to store key-value pairs.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

/**
 * Creates a unary function that invokes `func` with its argument transformed.
 *
 * @private
 * @param {Function} func The function to wrap.
 * @param {Function} transform The argument transform.
 * @returns {Function} Returns the new function.
 */

/**
 * Creates an array of own enumerable property names and symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names and symbols.
 */

/**
 * Creates an array of the enumerable property names of the array-like `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @param {boolean} inherited Specify returning inherited property names.
 * @returns {Array} Returns the array of property names.
 */

/**
 * Creates an array of the own enumerable property names of `object`.
 *
 * **Note:** Non-object values are coerced to objects. See the
 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
 * for more details.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Object
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 * @example
 *
 * function Foo() {
 *   this.a = 1;
 *   this.b = 2;
 * }
 *
 * Foo.prototype.c = 3;
 *
 * _.keys(new Foo);
 * // => ['a', 'b'] (iteration order is not guaranteed)
 *
 * _.keys('hi');
 * // => ['0', '1']
 */

/**
 * Creates an list cache object.
 *
 * @private
 * @constructor
 * @param {Array} [entries] The key-value pairs to cache.
 */

/**
 * Gets the data for `map`.
 *
 * @private
 * @param {Object} map The map to query.
 * @param {string} key The reference key.
 * @returns {*} Returns the map data.
 */

/**
 * Gets the hash value for `key`.
 *
 * @private
 * @name get
 * @memberOf Hash
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */

/**
 * Gets the index at which the `key` is found in `array` of key-value pairs.
 *
 * @private
 * @param {Array} array The array to inspect.
 * @param {*} key The key to search for.
 * @returns {number} Returns the index of the matched value, else `-1`.
 */

/**
 * Gets the list cache value for `key`.
 *
 * @private
 * @name get
 * @memberOf ListCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */

/**
 * Gets the map value for `key`.
 *
 * @private
 * @name get
 * @memberOf MapCache
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */

/**
 * Gets the native function at `key` of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {string} key The key of the method to get.
 * @returns {*} Returns the function if it's native, else `undefined`.
 */

/**
 * Gets the property names, values, and compare flags of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the match data of `object`.
 */

/**
 * Gets the stack value for `key`.
 *
 * @private
 * @name get
 * @memberOf Stack
 * @param {string} key The key of the value to get.
 * @returns {*} Returns the entry value.
 */

/**
 * Gets the value at `key` of `object`.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {string} key The key of the property to get.
 * @returns {*} Returns the property value.
 */

/**
 * Gets the value at `path` of `object`. If the resolved value is
 * `undefined`, the `defaultValue` is returned in its place.
 *
 * @static
 * @memberOf _
 * @since 3.7.0
 * @category Object
 * @param {Object} object The object to query.
 * @param {Array|string} path The path of the property to get.
 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
 * @returns {*} Returns the resolved value.
 * @example
 *
 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
 *
 * _.get(object, 'a[0].b.c');
 * // => 3
 *
 * _.get(object, ['a', '0', 'b', 'c']);
 * // => 3
 *
 * _.get(object, 'a.b.c', 'default');
 * // => 'default'
 */

/**
 * Internal helper to bind a function known to have 4 arguments
 * to a given context.
 */

/**
 * Performs a
 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
 * comparison between two values to determine if they are equivalent.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 * @example
 *
 * var object = { 'a': 1 };
 * var other = { 'a': 1 };
 *
 * _.eq(object, object);
 * // => true
 *
 * _.eq(object, other);
 * // => false
 *
 * _.eq('a', 'a');
 * // => true
 *
 * _.eq('a', Object('a'));
 * // => false
 *
 * _.eq(NaN, NaN);
 * // => true
 */

/**
 * Removes `key` and its value from the hash.
 *
 * @private
 * @name delete
 * @memberOf Hash
 * @param {Object} hash The hash to modify.
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */

/**
 * Removes `key` and its value from the list cache.
 *
 * @private
 * @name delete
 * @memberOf ListCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */

/**
 * Removes `key` and its value from the map.
 *
 * @private
 * @name delete
 * @memberOf MapCache
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */

/**
 * Removes `key` and its value from the stack.
 *
 * @private
 * @name delete
 * @memberOf Stack
 * @param {string} key The key of the value to remove.
 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
 */

/**
 * Removes all key-value entries from the hash.
 *
 * @private
 * @name clear
 * @memberOf Hash
 */

/**
 * Removes all key-value entries from the list cache.
 *
 * @private
 * @name clear
 * @memberOf ListCache
 */

/**
 * Removes all key-value entries from the map.
 *
 * @private
 * @name clear
 * @memberOf MapCache
 */

/**
 * Removes all key-value entries from the stack.
 *
 * @private
 * @name clear
 * @memberOf Stack
 */

/**
 * Sets the hash `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Hash
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the hash instance.
 */

/**
 * Sets the list cache `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf ListCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the list cache instance.
 */

/**
 * Sets the map `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf MapCache
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the map cache instance.
 */

/**
 * Sets the stack `key` to `value`.
 *
 * @private
 * @name set
 * @memberOf Stack
 * @param {string} key The key of the value to set.
 * @param {*} value The value to set.
 * @returns {Object} Returns the stack cache instance.
 */

/**
 * The base implementation of `_.forEach` without support for iteratee shorthands.
 *
 * @private
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array|Object} Returns `collection`.
 */

/**
 * The base implementation of `_.forOwn` without support for iteratee shorthands.
 *
 * @private
 * @param {Object} object The object to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Object} Returns `object`.
 */

/**
 * The base implementation of `_.get` without support for default values.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array|string} path The path of the property to get.
 * @returns {*} Returns the resolved value.
 */

/**
 * The base implementation of `_.hasIn` without support for deep paths.
 *
 * @private
 * @param {Object} [object] The object to query.
 * @param {Array|string} key The key to check.
 * @returns {boolean} Returns `true` if `key` exists, else `false`.
 */

/**
 * The base implementation of `_.isArguments`.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 */

/**
 * The base implementation of `_.isEqual` which supports partial comparisons
 * and tracks traversed objects.
 *
 * @private
 * @param {*} value The value to compare.
 * @param {*} other The other value to compare.
 * @param {boolean} bitmask The bitmask flags.
 *  1 - Unordered comparison
 *  2 - Partial comparison
 * @param {Function} [customizer] The function to customize comparisons.
 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
 */

/**
 * The base implementation of `_.isMatch` without support for iteratee shorthands.
 *
 * @private
 * @param {Object} object The object to inspect.
 * @param {Object} source The object of property values to match.
 * @param {Array} matchData The property names, values, and compare flags to match.
 * @param {Function} [customizer] The function to customize comparisons.
 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
 */

/**
 * The base implementation of `_.isNative` without bad shim checks.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a native function,
 *  else `false`.
 */

/**
 * The base implementation of `_.isTypedArray` without Node.js optimizations.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 */

/**
 * The base implementation of `_.iteratee`.
 *
 * @private
 * @param {*} [value=_.identity] The value to convert to an iteratee.
 * @returns {Function} Returns the iteratee.
 */

/**
 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 */

/**
 * The base implementation of `_.map` without support for iteratee shorthands.
 *
 * @private
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the new mapped array.
 */

/**
 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
 *
 * @private
 * @param {string} path The path of the property to get.
 * @param {*} srcValue The value to match.
 * @returns {Function} Returns the new spec function.
 */

/**
 * The base implementation of `_.matches` which doesn't clone `source`.
 *
 * @private
 * @param {Object} source The object of property values to match.
 * @returns {Function} Returns the new spec function.
 */

/**
 * The base implementation of `_.orderBy` without param guards.
 *
 * @private
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.
 * @param {string[]} orders The sort orders of `iteratees`.
 * @returns {Array} Returns the new sorted array.
 */

/**
 * The base implementation of `_.property` without support for deep paths.
 *
 * @private
 * @param {string} key The key of the property to get.
 * @returns {Function} Returns the new accessor function.
 */

/**
 * The base implementation of `_.sortBy` which uses `comparer` to define the
 * sort order of `array` and replaces criteria objects with their corresponding
 * values.
 *
 * @private
 * @param {Array} array The array to sort.
 * @param {Function} comparer The function to define sort order.
 * @returns {Array} Returns `array`.
 */

/**
 * The base implementation of `_.times` without support for iteratee shorthands
 * or max array length checks.
 *
 * @private
 * @param {number} n The number of times to invoke `iteratee`.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the array of results.
 */

/**
 * The base implementation of `_.toString` which doesn't convert nullish
 * values to empty strings.
 *
 * @private
 * @param {*} value The value to process.
 * @returns {string} Returns the string.
 */

/**
 * The base implementation of `_.unary` without support for storing metadata.
 *
 * @private
 * @param {Function} func The function to cap arguments for.
 * @returns {Function} Returns the new capped function.
 */

/**
 * The base implementation of `baseForOwn` which iterates over `object`
 * properties returned by `keysFunc` and invokes `iteratee` for each property.
 * Iteratee functions may exit iteration early by explicitly returning `false`.
 *
 * @private
 * @param {Object} object The object to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @param {Function} keysFunc The function to get the keys of `object`.
 * @returns {Object} Returns `object`.
 */

/**
 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
 * symbols of `object`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Function} keysFunc The function to get the keys of `object`.
 * @param {Function} symbolsFunc The function to get the symbols of `object`.
 * @returns {Array} Returns the array of property names and symbols.
 */

/**
 * The base implementation of `getTag` without fallbacks for buggy environments.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */

/**
 * This method is like `_.sortBy` except that it allows specifying the sort
 * orders of the iteratees to sort by. If `orders` is unspecified, all values
 * are sorted in ascending order. Otherwise, specify an order of "desc" for
 * descending or "asc" for ascending sort order of corresponding values.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Collection
 * @param {Array|Object} collection The collection to iterate over.
 * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]
 *  The iteratees to sort by.
 * @param {string[]} [orders] The sort orders of `iteratees`.
 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.
 * @returns {Array} Returns the new sorted array.
 * @example
 *
 * var users = [
 *   { 'user': 'fred',   'age': 48 },
 *   { 'user': 'barney', 'age': 34 },
 *   { 'user': 'fred',   'age': 40 },
 *   { 'user': 'barney', 'age': 36 }
 * ];
 *
 * // Sort by `user` in ascending order and by `age` in descending order.
 * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);
 * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
 */

/**
 * This method returns `false`.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {boolean} Returns `false`.
 * @example
 *
 * _.times(2, _.stubFalse);
 * // => [false, false]
 */

/**
 * This method returns a new empty array.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {Array} Returns the new empty array.
 * @example
 *
 * var arrays = _.times(2, _.stubArray);
 *
 * console.log(arrays);
 * // => [[], []]
 *
 * console.log(arrays[0] === arrays[1]);
 * // => false
 */

/**
 * This method returns the first argument it receives.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Util
 * @param {*} value Any value.
 * @returns {*} Returns `value`.
 * @example
 *
 * var object = { 'a': 1 };
 *
 * console.log(_.identity(object) === object);
 * // => true
 */

/**
 * Used by `_.orderBy` to compare multiple properties of a value to another
 * and stable sort them.
 *
 * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,
 * specify an order of "desc" for descending or "asc" for ascending sort order
 * of corresponding values.
 *
 * @private
 * @param {Object} object The object to compare.
 * @param {Object} other The other object to compare.
 * @param {boolean[]|string[]} orders The order to sort by for each property.
 * @returns {number} Returns the sort order indicator for `object`.
 */

/**
 * Used to match `RegExp`
 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
 */

/**
 * ucs2decode() and codePointAt() are both works of Mathias Bynens and licensed under MIT
 *
 * Copyright Mathias Bynens <https://mathiasbynens.be/>

 * Permission is hereby granted, free of charge, to any person obtaining
 * a copy of this software and associated documentation files (the
 * "Software"), to deal in the Software without restriction, including
 * without limitation the rights to use, copy, modify, merge, publish,
 * distribute, sublicense, and/or sell copies of the Software, and to
 * permit persons to whom the Software is furnished to do so, subject to
 * the following conditions:

 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.

 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

/** @license React v0.20.2
 * scheduler.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

/** @license React v17.0.2
 * react-dom.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

/** @license React v17.0.2
 * react.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

/** Built-in value references. */

/** Detect free variable `exports`. */

/** Detect free variable `global` from Node.js. */

/** Detect free variable `self`. */

/** Error message constants. */

/** Used as references for various `Number` constants. */

/** Used as the maximum memoize cache size. */

/** Used as the size to enable large array optimizations. */

/** Used for built-in method references. */

/** Used to compose bitmasks for value comparisons. */

/** Used to detect overreaching core-js shims. */

/** Used to match property names within property paths. */

/** Used to stand-in for `undefined` hash values. */

/** `Object#toString` result references. */

/************************************************************************/

/******/

/***/

//

//   captures = result.slice(1).map(maybeToString)

//   for `%IteratorHelperPrototype%.next` - just a value

//   for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`

//   https://github.com/zloirock/core-js/issues/1128

//   https://github.com/zloirock/core-js/issues/1130

//  0..25 map to ASCII a..z or A..Z

// (for example, `DOMQuad` and similar in FF41-)

// - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.

// - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).

// 2 ** 53 - 1 == 9007199254740991

// 25.4.3.1 Promise(executor)

// 26..35 map to ASCII 0..9

// @@match logic

// @@replace logic

// @@search logic

// @@split logic

// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805

// @see https://github.com/webpack-contrib/style-loader/issues/177

// Adapted from convert-source-map (MIT)

// Add methods to `Hash`.

// Add methods to `ListCache`.

// Add methods to `MapCache`.

// Add methods to `SetCache`.

// Add methods to `Stack`.

// All non-basic code points < n have been handled already. Find the next larger one:

// Allow a fallback from the regular style to solid if regular is not available

// Array#includes uses SameValueZero equality algorithm

// Array#indexOf ignores holes, Array#includes - not

// Array.prototype[@@unscopables]

// Assume cyclic values are equal.

// Avoid an infinite loop

// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`

// Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should

// Bun / IE9- setInterval additional parameters fix

// Bun / IE9- setTimeout additional parameters fix

// By explicitly using `prop-types` you are opting into new production behavior.

// CONCATENATED MODULE: ./node_modules/@fortawesome/fontawesome-svg-core/index.mjs

// CONCATENATED MODULE: ./node_modules/@fortawesome/react-fontawesome/index.es.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_DataView.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_Hash.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_ListCache.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_Map.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_MapCache.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_SetCache.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_Stack.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_Uint8Array.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayFilter.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayMap.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayPush.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_arraySome.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_assocIndexOf.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseEach.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseFor.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseForOwn.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGetAllKeys.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGetTag.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseHasIn.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsArguments.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsEqual.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsEqualDeep.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsMatch.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsNative.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsTypedArray.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIteratee.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMap.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMatches.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMatchesProperty.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseOrderBy.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseProperty.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_basePropertyDeep.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseSortBy.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseTimes.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_baseUnary.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_cacheHas.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_castPath.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_compareAscending.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_compareMultiple.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_coreJsData.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_createBaseEach.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_createBaseFor.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_equalArrays.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_equalByTag.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_equalObjects.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_getAllKeys.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_getMapData.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_getMatchData.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_getNative.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_getSymbols.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_getValue.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_hasPath.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_hashClear.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_hashDelete.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_hashGet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_hashHas.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_hashSet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_isKey.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_isKeyable.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_isPrototype.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_isStrictComparable.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheClear.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheDelete.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheGet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheHas.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_listCacheSet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheClear.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheDelete.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheGet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheHas.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_mapCacheSet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_mapToArray.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_matchesStrictComparable.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_memoizeCapped.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_nativeCreate.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_nativeKeys.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_objectToString.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_overArg.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_setCacheAdd.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_setCacheHas.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_setToArray.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_stackClear.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_stackDelete.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_stackGet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_stackHas.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_stackSet.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_stringToPath.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_toKey.js

// CONCATENATED MODULE: ./node_modules/lodash-es/_toSource.js

// CONCATENATED MODULE: ./node_modules/lodash-es/eq.js

// CONCATENATED MODULE: ./node_modules/lodash-es/get.js

// CONCATENATED MODULE: ./node_modules/lodash-es/hasIn.js

// CONCATENATED MODULE: ./node_modules/lodash-es/identity.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isArguments.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isArray.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isArrayLike.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isFunction.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isLength.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isObject.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isObjectLike.js

// CONCATENATED MODULE: ./node_modules/lodash-es/isSymbol.js

// CONCATENATED MODULE: ./node_modules/lodash-es/keys.js

// CONCATENATED MODULE: ./node_modules/lodash-es/memoize.js

// CONCATENATED MODULE: ./node_modules/lodash-es/orderBy.js

// CONCATENATED MODULE: ./node_modules/lodash-es/property.js

// CONCATENATED MODULE: ./node_modules/lodash-es/stubArray.js

// CONCATENATED MODULE: ./node_modules/lodash-es/toString.js

// CONCATENATED MODULE: ./src/api.ts

// CONCATENATED MODULE: ./src/fredonia/button/button.tsx

// CONCATENATED MODULE: ./src/fredonia/classes.ts

// CONCATENATED MODULE: ./src/fredonia/intent.ts

// CONCATENATED MODULE: ./src/fredonia/spinner/spinner.tsx

// CONCATENATED MODULE: ./src/mainView.tsx

// Camelize taken from humps

// Check if module is in cache

// Check that cyclic values are equal.

// Chrome 32- incorrectly call accessor

// Chrome 38 Symbol has incorrect toString conversion

// Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances

// Coerce booleans to `1` or `0` and dates to milliseconds.

// Coerce regexes to strings and treat strings, primitives and objects,

// Convert the input in UCS-2 to an array of Unicode code points.

// Create a new module (and put it into the cache)

// DCE check should happen before ReactDOM bundle executes so that

// Defaults to the classic family if family is not available

// Delete the old one, since we're replacing it with a new one

// Deno throws a ReferenceError on `location` access without `--location` flag

// Detect IE8's incomplete defineProperty implementation

// Detect buggy property enumeration order in older V8 versions.

// Detect correctness of subclassing with @@species support

// DevTools can report bad minification during injection.

// DevTools shouldn't crash React, no matter what.

// Don't enum bug & hidden keys

// Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.

// ES3:

// ESM COMPAT FLAG

// EXTERNAL MODULE: ./node_modules/@majeure/fetchable/dist/index.js

// EXTERNAL MODULE: ./node_modules/core-js/index.js

// EXTERNAL MODULE: ./node_modules/lodash-es/_nodeUtil.js

// EXTERNAL MODULE: ./node_modules/react/index.js

// EXTERNAL MODULE: ./src/mainView.less

// Escaped control codes need to be individually processed.

// Escaped line terminators just skip the char.

// Exclamation

// Execute the module function

// Exit early for strings to avoid a performance hit in some environments.

// Exports

// Expose `MapCache`.

// FF fix

// FF10- does not properly handle non-strings

// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it

// FF30- typed arrays doesn't properly convert objects to typed array values

// FF36- DOMException is a function, but can't be constructed

// FF44- legacy iterators case

// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.

// Finish the basic string with a delimiter unless it's empty.

// Fix browsers whose `exec` methods don't consistently return `undefined`

// Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications

// Flag the module as loaded

// For old IE

// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>

// Forced replacement object prototype accessors methods

// Function instances `.name` property

// Get CSS class list from a props object

// Getting an empty string will occur if the attribute is set on the HTML tag but without a value

// Handle the basic code points.

// Helper for a popular repeating case of the spec:

// Hex escapes must contain 2 hex chars.

// IE11 WeakMap frozen keys fix

// IE7-

// IE8 returns string on undefined

// IE8- don't enum bug keys

// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix

// IEEE754 conversions based on https://github.com/feross/ieee754

// If `separator` is not a regex, use native split

// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).

// If the backslash is the last char of the string, then it was an invalid sequence.

// If url is already wrapped in quotes, remove them

// If we already have a replaced node we do not want to continue nesting within it.

// If we have a Kit, we can't determine if regular is available since we

// If we've already processed it but the current computed style does not result in a font-family,

// Ignore non-index properties.

// Important!

// Imports

// In FF throws only define methods

// Includes

// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>, but guard against overflow.

// Invalid dates are coerced to `NaN`.

// It's a high surrogate, and there is a next character.

// It's an unmatched surrogate; only append this code unit, in case the

// JSON[@@toStringTag] property

// Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.

// Legacy `process.binding('util')` for Node.js < 10.

// Let integer be ? ToInteger(index).

// Load entry module and return exports

// Low surrogate.

// MS Edge 17-18 Reflect.set allows setting the property to object

// MS Edge converts symbol values to JSON as {}

// Main encoding loop:

// Math[@@toStringTag] property

// Module

// NOTE: If size is undefined, then numSize will be NaN

// NOTE: This cannot be properly polyfilled in engines that don't support

// NOTE: This is equivalent to

// Nashorn bug:

// Node.js 0.10 has enumerable non-index properties on buffers.

// Node.js 0.8-

// Node.js 0.9+ & IE10+ has setImmediate, otherwise:

// Non `Object` object instances with different constructors are not equal.

// Number('+0x1') should be NaN, old V8 fix

// Object.prototype.hasOwnProperty.call

// Only convert the pseudo element in this ::before/::after position into an icon if we haven't

// Parsing the key

// Parsing value

// Perform ? RequireInternalSlot(M, [[MapData]])

// Perform ? RequireInternalSlot(M, [[SetData]])

// Perform ? RequireInternalSlot(M, [[WeakMapData]])

// Perform ? RequireInternalSlot(M, [[WeakSetData]])

// Performant way to determine if object coerces to a number

// PhantomJS / old WebKit fails here:

// PhantomJS / old WebKit has a broken implementations

// PhantomJS 2 has enumerable non-index properties on typed arrays.

// Promise.resolve without an argument throws an error in LG WebOS 2

// Recursively compare arrays (susceptible to call stack limits).

// Recursively compare objects (susceptible to call stack limits).

// Recursively convert values (susceptible to call stack limits).

// Reflect[@@toStringTag] property

// RegExp constructor can alter flags and IsRegExp works correct with @@match

// RegExp[@@split] doesn't call the regex's exec method, but first creates

// Released under the MIT license.

// Represent delta as a generalized variable-length integer.

// Return the exports of the module

// Ring

// Safari (11+) bug - a reason why even Safari 13 should load a typed array polyfill

// Safari 10.1 / Chrome 32- / IE8- DOMException.prototype.toString bugs

// Safari 12 bug

// Safari 13- bug: WebAssembly errors does not have a proper `.name`

// Safari 8 has buggy iterators w/o `next`

// Safari 9 ImageData is a constructor, but typeof ImageData is 'object'

// Safari 9 bug

// Safari 9 has enumerable `arguments.length` in strict mode.

// See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.

// See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.

// See https://drafts.csswg.org/css-values-3/#urls

// Set @@toStringTag to native iterators

// SharedArrayBuffer should use shared memory, we can't polyfill it, so return the original

// Short-circuit to the standard replacement

// Should url be wrapped?

// Shouldn't skip holes

// Skip index properties.

// Some versions of I.E. have different rules for clearTimeout vs setTimeout

// Special case to return head of iframe instead of iframe itself

// String methods call symbol-named RegEp methods

// Support anchored sticky behavior.

// Symbol-named RegExp methods call .exec

// TODO can we stop doing this? We can't get the icons by 'fa-solid' any longer so this probably needs to change

// TODO: Drop the first `typeof` check after removing lagacy methods in `core-js@4`

// TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation

// TODO: Obsolete version, remove from `core-js@4`

// TODO: Remove from `core-js@4`

// TODO: Remove from `core-js@4` since it's moved to entry points

// TODO: Remove this block from `core-js@4`

// TODO: Remove this line from `core-js@4`

// TODO: Remove this module from `core-js@4` since it's replaced to module below

// TODO: Remove this module from `core-js@4` since it's split to modules listed below

// TODO: fix export logic

// TODO: improve accuracy with big fraction digits

// TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`

// TODO: remove from `core-js@4`

// Test for IE <= 9 as proposed by Browserhacks

// Tests for existence of standard globals is to allow style-loader

// Thanks to IE8 for its funny defineProperty

// The fa prefix is not canonical. So if it has made it through until this point

// The hex value must not overflow 0x10FFFF.

// The module cache

// The require function

// The use of `Object#toString` avoids issues with the `typeof` operator

// This also ensures a stable sort in V8 and other engines.

// This can't actually happen in a tagged template literal, but could happen if you manually

// This feature detection crashes old WebKit

// This node is already being processed

// This will throw an exception if access to iframe is blocked

// This works if eval is allowed (see CSP)

// This works if the window reference is available

// This works in non-strict mode

// Tor Browser bug: Math.asinh(0) -> -0

// Tor Browser bug: Math.atanh(-0) -> 0

// Treat `\r\n` as a single terminator.

// Unhandled rejections tracking support, NodeJS Promise without it fails @@species test

// Unicode escapes contain either 4 chars, or an unlimited number between `{` and `}`.

// Use `internal/copy-constructor-properties` helper in `core-js@4`

// Use `util.types` for Node.js 10+.

// V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables

// V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006

// V8 near Chromium 38 has a problem with very small numbers

// V8 ~ Android 4.3-

// V8 ~ Chrome 36-

// V8 ~ Chrome 45- bug

// V8 ~ Chrome 49-50 `%TypedArray%` methods are non-writable non-configurable

// V8 ~ Chromium 42- fails only with 5+ elements

// Verify that the code above has been dead code eliminated (DCE'd).

// WSH

// We can't detect it synchronously, so just check versions

// We can't use @@species feature detection in V8 since it causes

// We can't use InternalStateModule.getterFor because

// We can't use feature detection because it crash some old IE builds

// We can't use real regex here since it causes deoptimization

// We can't use this feature detection in V8 since it causes

// We don't expect any of the above to throw, but better to be safe.

// We need Promise#{ catch, finally } in the pure version for preventing prototype pollution

// We return undefined, instead of nothing here, so it's

// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected

// We should still report in case we break this code.

// We'll assume that this is an indication that it should be toggled to true

// WebKit Array.of isn't generic

// WebKit bug - one more object in Uint8ClampedArray prototype chain

// WebKit bug - the same parent prototype for typed arrays and data view

// WebKit bug - typed arrays constructors prototype is Object.prototype

// When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally

// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally

// Works with __proto__ only. Old v8 can't work with null proto objects.

// Wrap `fetch` and `Request` for correct work with polyfilled `URLSearchParams`

// \d\d?

// ^(? + rx + ) is needed, in combination with some str slicing, to

// __webpack_public_path__

// `%ArrayIteratorPrototype%.next` method

// `%IteratorPrototype%[@@iterator]()` method

// `%StringIteratorPrototype%.next` method

// `%TypedArray%.fromAsync` method

// `%TypedArray%.from` method

// `%TypedArray%.of` method

// `%TypedArray%.prototype.at` method

// `%TypedArray%.prototype.copyWithin` method

// `%TypedArray%.prototype.entries` method

// `%TypedArray%.prototype.every` method

// `%TypedArray%.prototype.fill` method

// `%TypedArray%.prototype.filterOut` method

// `%TypedArray%.prototype.filterReject` method

// `%TypedArray%.prototype.filter` method

// `%TypedArray%.prototype.findIndex` method

// `%TypedArray%.prototype.findLastIndex` method

// `%TypedArray%.prototype.findLast` method

// `%TypedArray%.prototype.find` method

// `%TypedArray%.prototype.forEach` method

// `%TypedArray%.prototype.groupBy` method

// `%TypedArray%.prototype.includes` method

// `%TypedArray%.prototype.indexOf` method

// `%TypedArray%.prototype.join` method

// `%TypedArray%.prototype.keys` method

// `%TypedArray%.prototype.lastIndexOf` method

// `%TypedArray%.prototype.map` method

// `%TypedArray%.prototype.reduceRight` method

// `%TypedArray%.prototype.reduce` method

// `%TypedArray%.prototype.reverse` method

// `%TypedArray%.prototype.set` method

// `%TypedArray%.prototype.slice` method

// `%TypedArray%.prototype.some` method

// `%TypedArray%.prototype.sort` method

// `%TypedArray%.prototype.subarray` method

// `%TypedArray%.prototype.toLocaleString` method

// `%TypedArray%.prototype.toReversed` method

// `%TypedArray%.prototype.toSorted` method

// `%TypedArray%.prototype.toSpliced` method

// `%TypedArray%.prototype.toString` method

// `%TypedArray%.prototype.uniqueBy` method

// `%TypedArray%.prototype.values` method

// `%TypedArray%.prototype.with` method

// `%TypedArray%.prototype[@@iterator]` method

// `AddDisposableResource` abstract operation

// `AdvanceStringIndex` abstract operation

// `AggregateError` constructor

// `Array.fromAsync` method

// `Array.fromAsync` method implementation

// `Array.from` method

// `Array.from` method implementation

// `Array.isArray` method

// `Array.isTemplateObject` method

// `Array.of` method

// `Array.prototype.at` method

// `Array.prototype.concat` method

// `Array.prototype.copyWithin` method

// `Array.prototype.copyWithin` method implementation

// `Array.prototype.entries` method

// `Array.prototype.every` method

// `Array.prototype.fill` method

// `Array.prototype.fill` method implementation

// `Array.prototype.filterOut` method

// `Array.prototype.filterReject` method

// `Array.prototype.filter` method

// `Array.prototype.findIndex` method

// `Array.prototype.findLastIndex` method

// `Array.prototype.findLast` method

// `Array.prototype.find` method

// `Array.prototype.flatMap` method

// `Array.prototype.flat` method

// `Array.prototype.forEach` method

// `Array.prototype.forEach` method implementation

// `Array.prototype.groupByToMap` method

// `Array.prototype.groupBy` method

// `Array.prototype.groupToMap` method

// `Array.prototype.group` method

// `Array.prototype.includes` method

// `Array.prototype.indexOf` method

// `Array.prototype.join` method

// `Array.prototype.keys` method

// `Array.prototype.lastIndexOf` method

// `Array.prototype.lastIndexOf` method implementation

// `Array.prototype.lastIndex` accessor

// `Array.prototype.lastIndex` getter

// `Array.prototype.map` method

// `Array.prototype.push` method

// `Array.prototype.reduceRight` method

// `Array.prototype.reduce` method

// `Array.prototype.reverse` method

// `Array.prototype.slice` method

// `Array.prototype.some` method

// `Array.prototype.sort` method

// `Array.prototype.splice` method

// `Array.prototype.toReversed` method

// `Array.prototype.toSorted` method

// `Array.prototype.toSpliced` method

// `Array.prototype.uniqueBy` method

// `Array.prototype.unshift` method

// `Array.prototype.values` method

// `Array.prototype.with` method

// `Array.prototype[@@iterator]` method

// `ArrayBuffer#slice` and `DataView` are not available in old FF

// `ArrayBuffer#slice` is not available in IE10

// `ArrayBuffer.isView` method

// `ArrayBuffer.prototype.slice` method

// `ArrayBuffer.prototype.transferToFixedLength` method

// `ArrayBuffer.prototype.transfer` method

// `ArrayBuffer` constructor

// `ArraySpeciesCreate` abstract operation

// `Array[@@species]` getter

// `Assert: IsCallable(argument) is true`

// `Assert: IsConstructor(argument) is true`

// `Assert: Type(argument) is Object`

// `AsyncIterator.from` method

// `AsyncIterator.prototype.asIndexedPairs` method

// `AsyncIterator.prototype.drop` method

// `AsyncIterator.prototype.every` method

// `AsyncIterator.prototype.filter` method

// `AsyncIterator.prototype.find` method

// `AsyncIterator.prototype.flaMap` method

// `AsyncIterator.prototype.forEach` method

// `AsyncIterator.prototype.indexed` method

// `AsyncIterator.prototype.map` method

// `AsyncIterator.prototype.reduce` method

// `AsyncIterator.prototype.some` method

// `AsyncIterator.prototype.take` method

// `AsyncIterator.prototype.toArray` method

// `AsyncIterator` constructor

// `BigInt.range` method

// `CreateArrayIterator` internal method

// `CreateHTML` abstract operation

// `CreateIterResultObject` abstract operation

// `DOMException.prototype.code` getter

// `DOMException.prototype.message` getter

// `DOMException.prototype.name` getter

// `DOMException.prototype[@@toStringTag]` property

// `DOMException` constants

// `DOMException` constructor

// `DOMException` constructor patch for `.stack` where it's required

// `DataView` constructor

// `Date.now` method

// `Date.prototype.getYear` method

// `Date.prototype.setYear` method

// `Date.prototype.toGMTString` method

// `Date.prototype.toISOString` method

// `Date.prototype.toISOString` method implementation

// `Date.prototype.toJSON` method

// `Date.prototype.toString` method

// `Date.prototype[@@toPrimitive](hint)` method implementation

// `Date.prototype[@@toPrimitive]` method

// `Error.prototype.toString` method fix

// `Float32Array` constructor

// `Float64Array` constructor

// `Function#toString` throws on some built-it function in some legacy engines

// `Function.isCallable` method

// `Function.isConstructor` method

// `Function.prototype.bind` method

// `Function.prototype.bind` method implementation

// `Function.prototype.demethodize` method

// `Function.prototype.unThis` method

// `Function.prototype[@@hasInstance]` method

// `GetMethod` abstract operation

// `GetSetRecord` abstract operation

// `GetSubstitution` abstract operation

// `HasOwnProperty` abstract operation

// `InstallErrorCause` abstract operation

// `Int16Array` constructor

// `Int32Array` constructor

// `Int8Array` constructor

// `IsArray` abstract operation

// `IsCallable` abstract operation

// `IsConstructor` abstract operation

// `IsIntegralNumber` abstract operation

// `IsRegExp` abstract operation

// `Iterator.from` method

// `Iterator.prototype.asIndexedPairs` method

// `Iterator.prototype.drop` method

// `Iterator.prototype.every` method

// `Iterator.prototype.filter` method

// `Iterator.prototype.find` method

// `Iterator.prototype.flatMap` method

// `Iterator.prototype.forEach` method

// `Iterator.prototype.indexed` method

// `Iterator.prototype.map` method

// `Iterator.prototype.reduce` method

// `Iterator.prototype.some` method

// `Iterator.prototype.take` method

// `Iterator.prototype.toArray` method

// `Iterator.prototype.toAsync` method

// `Iterator.range` method

// `Iterator` constructor

// `JSON.parse` method

// `JSON.stringify` method

// `LengthOfArrayLike` abstract operation

// `Map.from` method

// `Map.groupBy` method

// `Map.keyBy` method

// `Map.of` method

// `Map.prototype.deleteAll` method

// `Map.prototype.emplace` method

// `Map.prototype.every` method

// `Map.prototype.filter` method

// `Map.prototype.findKey` method

// `Map.prototype.find` method

// `Map.prototype.get(key)` method

// `Map.prototype.includes` method

// `Map.prototype.keyOf` method

// `Map.prototype.mapKeys` method

// `Map.prototype.mapValues` method

// `Map.prototype.merge` method

// `Map.prototype.reduce` method

// `Map.prototype.set(key, value)` method

// `Map.prototype.some` method

// `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.emplace`)

// `Map.prototype.update` method

// `Map.prototype.upsert` method

// `Map.prototype.upsert` method (replaced by `Map.prototype.emplace`)

// `Map` constructor

// `Math.DEG_PER_RAD` constant

// `Math.RAD_PER_DEG` constant

// `Math.acosh` method

// `Math.asinh` method

// `Math.atanh` method

// `Math.cbrt` method

// `Math.clamp` method

// `Math.clz32` method

// `Math.cosh` method

// `Math.degrees` method

// `Math.expm1` method

// `Math.expm1` method implementation

// `Math.fround` method

// `Math.fround` method implementation

// `Math.fscale` method

// `Math.hypot` method

// `Math.iaddh` method

// `Math.imul` method

// `Math.imulh` method

// `Math.isubh` method

// `Math.log10` method

// `Math.log1p` method

// `Math.log1p` method implementation

// `Math.log2` method

// `Math.radians` method

// `Math.scale` method

// `Math.scale` method implementation

// `Math.seededPRNG` method

// `Math.sign` method

// `Math.sign` method implementation

// `Math.signbit` method

// `Math.sinh` method

// `Math.tanh` method

// `Math.trunc` method

// `Math.umulh` method

// `NewPromiseCapability` abstract operation

// `Number.EPSILON` constant

// `Number.MAX_SAFE_INTEGER` constant

// `Number.MIN_SAFE_INTEGER` constant

// `Number.fromString` method

// `Number.isFinite` method

// `Number.isInteger` method

// `Number.isNaN` method

// `Number.isSafeInteger` method

// `Number.parseFloat` method

// `Number.parseInt` method

// `Number.prototype.toExponential` method

// `Number.prototype.toFixed` method

// `Number.prototype.toPrecision` method

// `Number.range` method

// `Object.assign` method

// `Object.create` method

// `Object.defineProperties` method

// `Object.defineProperty` method

// `Object.entries` method

// `Object.freeze` method

// `Object.fromEntries` method

// `Object.getOwnPropertyDescriptor` method

// `Object.getOwnPropertyDescriptors` method

// `Object.getOwnPropertyNames` method

// `Object.getOwnPropertySymbols` method

// `Object.getPrototypeOf` method

// `Object.hasOwn` method

// `Object.isExtensible` method

// `Object.isFrozen` method

// `Object.isSealed` method

// `Object.is` method

// `Object.iterateEntries` method

// `Object.iterateKeys` method

// `Object.iterateValues` method

// `Object.keys` method

// `Object.preventExtensions` method

// `Object.prototype.__defineGetter__` method

// `Object.prototype.__defineSetter__` method

// `Object.prototype.__lookupGetter__` method

// `Object.prototype.__lookupSetter__` method

// `Object.prototype.__proto__` accessor

// `Object.prototype.propertyIsEnumerable` method implementation

// `Object.prototype.toString` method

// `Object.prototype.toString` method implementation

// `Object.seal` method

// `Object.setPrototypeOf` method

// `Object.values` method

// `Observable.from` method

// `Observable.of` method

// `OrdinaryToPrimitive` abstract operation

// `Promise.allSettled` method

// `Promise.all` method

// `Promise.any` method

// `Promise.prototype.catch` method

// `Promise.prototype.finally` method

// `Promise.prototype.then` method

// `Promise.race` method

// `Promise.reject` method

// `Promise.resolve` method

// `Promise.try` method

// `Reflect.apply` method

// `Reflect.defineMetadata` method

// `Reflect.defineProperty` method

// `Reflect.deleteMetadata` method

// `Reflect.deleteProperty` method

// `Reflect.getMetadataKeys` method

// `Reflect.getMetadata` method

// `Reflect.getOwnMetadataKeys` method

// `Reflect.getOwnMetadata` method

// `Reflect.getOwnPropertyDescriptor` method

// `Reflect.getPrototypeOf` method

// `Reflect.get` method

// `Reflect.hasMetadata` method

// `Reflect.hasOwnMetadata` method

// `Reflect.has` method

// `Reflect.isExtensible` method

// `Reflect.metadata` method

// `Reflect.ownKeys` method

// `Reflect.preventExtensions` method

// `Reflect.setPrototypeOf` method

// `Reflect.set` method

// `RegExp.prototype.dotAll` getter

// `RegExp.prototype.exec` method

// `RegExp.prototype.flags` getter

// `RegExp.prototype.flags` getter implementation

// `RegExp.prototype.sticky` getter

// `RegExp.prototype.test` method

// `RegExp.prototype.toString` method

// `RegExp.prototype[@@match]` method

// `RegExp.prototype[@@replace]` method

// `RegExp.prototype[@@search]` method

// `RegExp.prototype[@@split]` method

// `RegExpExec` abstract operation

// `RegExp` constructor

// `RequireObjectCoercible` abstract operation

// `SameValueZero` abstract operation

// `SameValue` abstract operation

// `Set.from` method

// `Set.of` method

// `Set.prototype.add(value)` method

// `Set.prototype.addAll` method

// `Set.prototype.deleteAll` method

// `Set.prototype.difference` method

// `Set.prototype.every` method

// `Set.prototype.filter` method

// `Set.prototype.find` method

// `Set.prototype.intersection` method

// `Set.prototype.isDisjointFrom` method

// `Set.prototype.isSubsetOf` method

// `Set.prototype.isSupersetOf` method

// `Set.prototype.join` method

// `Set.prototype.map` method

// `Set.prototype.reduce` method

// `Set.prototype.some` method

// `Set.prototype.symmetricDifference` method

// `Set.prototype.union` method

// `Set` constructor

// `SpeciesConstructor` abstract operation

// `String.cooked` method

// `String.dedent` method

// `String.fromCodePoint` method

// `String.prototype.anchor` method

// `String.prototype.at` method

// `String.prototype.big` method

// `String.prototype.blink` method

// `String.prototype.bold` method

// `String.prototype.codePointAt` method

// `String.prototype.codePoints` method

// `String.prototype.endsWith` method

// `String.prototype.fixed` method

// `String.prototype.fontcolor` method

// `String.prototype.fontsize` method

// `String.prototype.includes` method

// `String.prototype.isWellFormed` method

// `String.prototype.italics` method

// `String.prototype.link` method

// `String.prototype.matchAll` method

// `String.prototype.match` method

// `String.prototype.padEnd` method

// `String.prototype.padStart` method

// `String.prototype.repeat` method

// `String.prototype.repeat` method implementation

// `String.prototype.replaceAll` method

// `String.prototype.replace` method

// `String.prototype.search` method

// `String.prototype.small` method

// `String.prototype.split` method

// `String.prototype.startsWith` method

// `String.prototype.strike` method

// `String.prototype.sub` method

// `String.prototype.substr` method

// `String.prototype.sup` method

// `String.prototype.toWellFormed` method

// `String.prototype.trimEnd` method

// `String.prototype.trimLeft` method

// `String.prototype.trimRight` method

// `String.prototype.trimStart` method

// `String.prototype.trim` method

// `String.prototype.{ trimEnd, trimRight }` method

// `String.prototype.{ trimLeft, trimStart }` methods

// `String.prototype.{ trimRight, trimEnd }` methods

// `String.prototype.{ trimStart, trimLeft }` method

// `String.prototype[@@iterator]` method

// `String.raw` method

// `SuppressedError` constructor

// `Symbol.asyncDispose` well-known symbol

// `Symbol.asyncIterator` well-known symbol

// `Symbol.dispose` well-known symbol

// `Symbol.for` method

// `Symbol.hasInstance` well-known symbol

// `Symbol.isConcatSpreadable` well-known symbol

// `Symbol.isRegistered` method

// `Symbol.isWellKnown` method

// `Symbol.iterator` well-known symbol

// `Symbol.keyFor` method

// `Symbol.matchAll` well-known symbol

// `Symbol.match` well-known symbol

// `Symbol.matcher` well-known symbol

// `Symbol.metadataKey` well-known symbol

// `Symbol.metadata` well-known symbol

// `Symbol.observable` well-known symbol

// `Symbol.patternMatch` well-known symbol

// `Symbol.prototype.description` getter

// `Symbol.prototype[@@toPrimitive]` method

// `Symbol.prototype[@@toStringTag]` property

// `Symbol.replace` well-known symbol

// `Symbol.search` well-known symbol

// `Symbol.species` well-known symbol

// `Symbol.split` well-known symbol

// `Symbol.toPrimitive` well-known symbol

// `Symbol.toStringTag` well-known symbol

// `Symbol.unscopables` well-known symbol

// `Symbol` constructor

// `ToBigInt` abstract operation

// `ToIndex` abstract operation

// `ToIntegerOrInfinity` abstract operation

// `ToLength` abstract operation

// `ToObject` abstract operation

// `ToPrimitive` abstract operation

// `ToPropertyKey` abstract operation

// `URL.createObjectURL` method

// `URL.prototype.hash` accessors pair

// `URL.prototype.host` accessors pair

// `URL.prototype.hostname` accessors pair

// `URL.prototype.href` accessors pair

// `URL.prototype.origin` getter

// `URL.prototype.password` accessors pair

// `URL.prototype.pathname` accessors pair

// `URL.prototype.port` accessors pair

// `URL.prototype.protocol` accessors pair

// `URL.prototype.searchParams` getter

// `URL.prototype.search` accessors pair

// `URL.prototype.toJSON` method

// `URL.prototype.toString` method

// `URL.prototype.username` accessors pair

// `URL.revokeObjectURL` method

// `URLSearchParams.prototype.append` method

// `URLSearchParams.prototype.delete` method

// `URLSearchParams.prototype.entries` method

// `URLSearchParams.prototype.forEach` method

// `URLSearchParams.prototype.getAll` method

// `URLSearchParams.prototype.get` method

// `URLSearchParams.prototype.has` method

// `URLSearchParams.prototype.keys` method

// `URLSearchParams.prototype.set` method

// `URLSearchParams.prototype.sort` method

// `URLSearchParams.prototype.toString` method

// `URLSearchParams.prototype.values` method

// `URLSearchParams.prototype[@@iterator]` method

// `URLSearchParams` constructor

// `URL` constructor

// `Uint16Array` constructor

// `Uint32Array` constructor

// `Uint8Array` constructor

// `Uint8ClampedArray` constructor

// `WeakMap.from` method

// `WeakMap.of` method

// `WeakMap.prototype.deleteAll` method

// `WeakMap.prototype.emplace` method

// `WeakMap.prototype.get(key)` method

// `WeakMap.prototype.set(key, value)` method

// `WeakMap.prototype.upsert` method (replaced by `WeakMap.prototype.emplace`)

// `WeakSet.from` method

// `WeakSet.of` method

// `WeakSet.prototype.add(value)` method

// `WeakSet.prototype.addAll` method

// `WeakSet.prototype.deleteAll` method

// `WeakSet` constructor

// `\0` is a null control char, but `\0` followed by another digit is an illegal octal escape.

// `atob` method

// `btoa` method

// `clearImmediate` method

// `escape` method

// `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances

// `globalThis` object

// `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247

// `parseFloat` method

// `parseInt` method

// `queueMicrotask` method

// `self` getter

// `setImmediate` method

// `structuredClone` method

// `thisNumberValue` abstract operation

// `unescape` method

// `webpack` dev server bug on IE global methods - use bind(fn, global)

// `webpack` dev server bug on IE global methods - use call(fn, global, ...)

// `{ Map, Set }.prototype.clear()` methods

// `{ Map, Set }.prototype.delete(key)` methods

// `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods

// `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods

// `{ Map, Set }.prototype[@@species]` accessors

// `{ Map, Set}.prototype.has(key)` methods

// `{ WeakMap, WeakSet }.prototype.delete(key)` methods

// `{ WeakMap, WeakSet }.prototype.has(key)` methods

// a new one. We need to return the patched regex when creating the new one.

// a part of `ArraySpeciesCreate` abstract operation

// a part of `TypedArraySpeciesCreate` abstract operation

// a string of all valid unicode whitespaces

// adapted from https://github.com/jridgewell/string-dedent

// add "__proto__" for Object.getPrototypeOf polyfill

// add a flag to not completely full polyfills

// add a key to Array.prototype[@@unscopables]

// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative

// add missing metadata

// add to index

// all object keys, includes non-enumerable and symbols

// already done so with the same prefix and iconName

// also except WebOS Webkit https://github.com/zloirock/core-js/issues/898

// and a value of value

// and serious performance degradation in V8

// argumentsList[@@iterator] is %ArrayProto_values%

// as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring

// avoid memory leak

// based on es5-shim implementation, need to rework it

// based on https://github.com/bestiejs/punycode.js/blob/master/punycode.js

// based on https://github.com/tc39/proposal-seeded-random/blob/78b8258835b57fc2100d076151ab506bc3202ae6/demo.html

// break omitted

// browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339

// but ToNumber should return NaN if a string contains unavailable symbols

// but for some reason `nativeSlice.call(result, 1, result.length)` (called in

// but only if we aren't auto-fetching SVGs

// but since it's a `null` prototype object, we can safely use `in`

// but their correct versions are not interesting for us

// cached from whatever global is present so that test runners that stub it

// call something on iterator step with safe closing on error

// can be a 3rd party polyfill

// can throw

// can't set metadata to uncaught frozen object

// causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.

// change existing entry

// check on default Array iterator

// check that a method works with the correct list

// check the existence of a method, lowercase

// child nodes

// constructor polyfill

// contained in target

// convert -0 to +0

// could be auto-fetching it. We'll have to assume that it is available.

// create a fake namespace object

// create collection constructor

// creates an object with a key of key

// cross-realm fallback

// css base code, injected by the css-loader

// define __esModule on exports

// define getter function for harmony exports

// define iterator

// deoptimization and performance degradation

// deoptimization and serious performance degradation

// detached buffers throws in `DataView` and `.slice`

// directly from an icon svg package

// don't break things.  But we need to wrap it in a try catch in case it is

// due to cross-origin restrictions

// early implementations not supports chaining

// easier to handle this case. if(!global) { ...}

// effectively preserves circular references

// empty string to avoid regexp issues

// eslint-disable-line eqeqeq

// eslint-disable-line no-new-wrappers

// eslint-disable-line no-unused-vars -- required for `.length`

// eslint-disable-line no-useless-call

// eslint-disable-next-line es/no-array-from -- required for testing

// eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing

// eslint-disable-next-line es/no-array-isarray -- safe

// eslint-disable-next-line es/no-array-of -- safe

// eslint-disable-next-line es/no-array-prototype-copywithin -- safe

// eslint-disable-next-line es/no-array-prototype-foreach -- safe

// eslint-disable-next-line es/no-array-prototype-includes -- detection

// eslint-disable-next-line es/no-array-prototype-lastindexof -- required for testing

// eslint-disable-next-line es/no-array-string-prototype-at -- safe

// eslint-disable-next-line es/no-bigint -- safe

// eslint-disable-next-line es/no-date-prototype-getyear-setyear -- detection

// eslint-disable-next-line es/no-function-prototype-bind -- detection

// eslint-disable-next-line es/no-function-prototype-bind -- safe

// eslint-disable-next-line es/no-global-this -- safe

// eslint-disable-next-line es/no-map -- safe

// eslint-disable-next-line es/no-math-asinh -- required for testing

// eslint-disable-next-line es/no-math-atanh -- required for testing

// eslint-disable-next-line es/no-math-expm1 -- required for testing

// eslint-disable-next-line es/no-math-expm1 -- safe

// eslint-disable-next-line es/no-math-fround -- safe

// eslint-disable-next-line es/no-math-hypot -- required for testing

// eslint-disable-next-line es/no-math-log10 -- safe

// eslint-disable-next-line es/no-math-log1p -- safe

// eslint-disable-next-line es/no-math-sign -- safe

// eslint-disable-next-line es/no-math-sinh -- required for testing

// eslint-disable-next-line es/no-math-trunc -- safe

// eslint-disable-next-line es/no-number-isfinite -- safe

// eslint-disable-next-line es/no-number-isinteger -- safe

// eslint-disable-next-line es/no-number-parsefloat -- required for testing

// eslint-disable-next-line es/no-number-parseint -- required for testing

// eslint-disable-next-line es/no-object-assign -- required for testing

// eslint-disable-next-line es/no-object-create -- safe

// eslint-disable-next-line es/no-object-defineproperties -- safe

// eslint-disable-next-line es/no-object-defineproperty -- required for testing

// eslint-disable-next-line es/no-object-defineproperty -- safe

// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe

// eslint-disable-next-line es/no-object-getownpropertynames -- safe

// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing

// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe

// eslint-disable-next-line es/no-object-getprototypeof -- required for testing

// eslint-disable-next-line es/no-object-getprototypeof -- safe

// eslint-disable-next-line es/no-object-hasown -- safe

// eslint-disable-next-line es/no-object-is -- safe

// eslint-disable-next-line es/no-object-isextensible -- safe

// eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe

// eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing

// eslint-disable-next-line es/no-object-keys -- safe

// eslint-disable-next-line es/no-object-setprototypeof -- safe

// eslint-disable-next-line es/no-reflect -- required for testing

// eslint-disable-next-line es/no-reflect -- safe

// eslint-disable-next-line es/no-set -- safe

// eslint-disable-next-line es/no-string-prototype-trimleft-trimright -- safe

// eslint-disable-next-line es/no-string-prototype-trimstart-trimend -- safe

// eslint-disable-next-line es/no-typed-arrays -- required for testing

// eslint-disable-next-line es/no-typed-arrays -- safe

// eslint-disable-next-line es/no-weak-map -- safe

// eslint-disable-next-line es/no-weak-map, unicorn/require-post-message-target-origin -- safe

// eslint-disable-next-line es/no-weak-set -- safe

// eslint-disable-next-line func-names

// eslint-disable-next-line max-statements -- TODO

// eslint-disable-next-line no-console -- safe

// eslint-disable-next-line no-extend-native -- required

// eslint-disable-next-line no-new-func -- fallback

// eslint-disable-next-line no-new-func -- safe

// eslint-disable-next-line no-new-func -- we have no alternatives without usage of modern syntax

// eslint-disable-next-line no-param-reassign

// eslint-disable-next-line no-prototype-builtins

// eslint-disable-next-line no-prototype-builtins -- safe

// eslint-disable-next-line no-restricted-globals -- safe

// eslint-disable-next-line no-self-assign -- dirty hack

// eslint-disable-next-line no-self-compare -- NaN check

// eslint-disable-next-line no-shadow -- safe

// eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing

// eslint-disable-next-line no-undef, no-useless-call, es/no-legacy-object-prototype-accessor-methods -- required for testing

// eslint-disable-next-line no-underscore-dangle, no-param-reassign

// eslint-disable-next-line no-unused-vars -- required for .length

// eslint-disable-next-line no-unused-vars -- required for `.length`

// eslint-disable-next-line no-unused-vars -- required for functions `.length`

// eslint-disable-next-line no-useless-call -- required for testing

// eslint-disable-next-line no-useless-escape

// eslint-disable-next-line prefer-destructuring

// eslint-disable-next-line redos/no-vulnerable -- safe

// eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing

// eslint-disable-next-line regexp/no-empty-group -- required for testing

// eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive

// eslint-disable-next-line unicorn/no-thenable -- required for testing

// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing

// eslint-disable-next-line unicorn/relative-url-style -- required for testing

// every

// export additional methods

// expose the module cache

// expose the modules object (__webpack_modules__)

// fails in old engines, but we have no alternatives for unsupported regex syntax

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window

// fallback for non-array-like ES3 and non-enumerable old V8 strings

// fallback for not array-like ES3 strings and DOM objects

// fallback old -> new set methods proposal arguments

// familyPrefix is deprecated as of 6.2.0 and should be removed in 7.0.0

// familyPrefix is deprecated but we must still support it if present

// fast case

// fast equal of /^0b[01]+$/i

// fast equal of /^0o[0-7]+$/i

// feature detection can be too slow, so check engines versions

// filter

// filterReject

// find

// findIndex

// findLast

// findLastIndex

// fix Array.prototype.{ values, @@iterator }.name in V8 / FF

// fix for Safari 12.0 bug

// fix native

// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods

// for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/

// for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:

// for more details.

// for prevent leaking, start from objects

// for simplification:

// frozen object case

// function because try/catches deoptimize in certain engines.

// g can still be undefined, but nothing to do about it...

// generate an array with more 512 elements (Chakra and old V8 fails only in this case)

// get next entry

// getDefaultExport function for compatibility with non-harmony modules

// getting tag from ES6+ `Object.prototype.toString`

// http://fb.me/prop-types-in-prod

// http://w3c.github.io/setImmediate/#si-clearImmediate

// http://w3c.github.io/setImmediate/#si-setImmediate

// https://bugs.chromium.org/p/chromium/issues/detail?id=830565

// https://bugs.chromium.org/p/v8/issues/detail?id=3056

// https://bugs.chromium.org/p/v8/issues/detail?id=3334

// https://bugs.chromium.org/p/v8/issues/detail?id=4118

// https://bugs.webkit.org/show_bug.cgi?id=188794

// https://bugs.webkit.org/show_bug.cgi?id=236541

// https://bugzilla.mozilla.org/show_bug.cgi?id=773687

// https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

// https://developer.mozilla.org/en-US/docs/Web/API/URL/revokeObjectURL

// https://gist.github.com/BrendanEich/4294d5c212a6d2254703

// https://github.com/caitp/TC39-Proposals/blob/trunk/tc39-reflect-isconstructor-iscallable.md

// https://github.com/denoland/deno/issues/15765

// https://github.com/js-choi/proposal-function-demethodize

// https://github.com/keithamus/proposal-array-last

// https://github.com/mathiasbynens/String.prototype.at

// https://github.com/oven-sh/bun/issues/1633

// https://github.com/rbuckton/reflect-metadata

// https://github.com/tc39/proposal-Math.signbit

// https://github.com/tc39/proposal-Number.range

// https://github.com/tc39/proposal-Symbol-description

// https://github.com/tc39/proposal-accessible-object-hasownproperty

// https://github.com/tc39/proposal-array-filtering

// https://github.com/tc39/proposal-array-find-from-last

// https://github.com/tc39/proposal-array-from-async

// https://github.com/tc39/proposal-array-grouping

// https://github.com/tc39/proposal-array-is-template-object

// https://github.com/tc39/proposal-array-unique

// https://github.com/tc39/proposal-async-explicit-resource-management

// https://github.com/tc39/proposal-async-iterator-helpers

// https://github.com/tc39/proposal-change-array-by-copy/pull/86

// https://github.com/tc39/proposal-collection-methods

// https://github.com/tc39/proposal-decorator-metadata

// https://github.com/tc39/proposal-decorators

// https://github.com/tc39/proposal-error-cause

// https://github.com/tc39/proposal-explicit-resource-management

// https://github.com/tc39/proposal-is-usv-string

// https://github.com/tc39/proposal-iterator-helpers

// https://github.com/tc39/proposal-json-parse-with-source

// https://github.com/tc39/proposal-number-fromstring

// https://github.com/tc39/proposal-object-from-entries

// https://github.com/tc39/proposal-object-iteration

// https://github.com/tc39/proposal-observable

// https://github.com/tc39/proposal-pattern-matching

// https://github.com/tc39/proposal-promise-try

// https://github.com/tc39/proposal-relative-indexing-method

// https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey

// https://github.com/tc39/proposal-seeded-random

// https://github.com/tc39/proposal-set-methods

// https://github.com/tc39/proposal-string-cooked

// https://github.com/tc39/proposal-string-dedent

// https://github.com/tc39/proposal-string-dedent/issues/75

// https://github.com/tc39/proposal-string-pad-start-end

// https://github.com/tc39/proposal-string-prototype-codepoints

// https://github.com/tc39/proposal-upsert

// https://github.com/thumbsupep/proposal-upsert

// https://github.com/zloirock/core-js/issues/232

// https://github.com/zloirock/core-js/issues/280

// https://github.com/zloirock/core-js/issues/306

// https://github.com/zloirock/core-js/issues/475

// https://github.com/zloirock/core-js/issues/485

// https://github.com/zloirock/core-js/issues/640

// https://github.com/zloirock/core-js/issues/677

// https://github.com/zloirock/core-js/issues/679

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028

// https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone

// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask

// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval

// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout

// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers

// https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob

// https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa

// https://html.spec.whatwg.org/multipage/window-object.html#dom-self

// https://rwaldron.github.io/proposal-math-extensions/

// https://tc39.es/ecma262/#String.prototype.trimleft

// https://tc39.es/ecma262/#String.prototype.trimright

// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next

// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator

// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next

// https://tc39.es/ecma262/#sec-%typedarray%.from

// https://tc39.es/ecma262/#sec-%typedarray%.of

// https://tc39.es/ecma262/#sec-%typedarray%.prototype-@@iterator

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.copywithin

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.entries

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.every

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.fill

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.filter

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.find

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.findindex

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.foreach

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.includes

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.indexof

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.join

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.keys

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.lastindexof

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduce

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reduceright

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.reverse

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.set

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.slice

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.some

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.sort

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.subarray

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tolocalestring

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.tostring

// https://tc39.es/ecma262/#sec-%typedarray%.prototype.values

// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot

// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec

// https://tc39.es/ecma262/#sec-advancestringindex

// https://tc39.es/ecma262/#sec-aggregate-error-constructor

// https://tc39.es/ecma262/#sec-array.from

// https://tc39.es/ecma262/#sec-array.isarray

// https://tc39.es/ecma262/#sec-array.of

// https://tc39.es/ecma262/#sec-array.prototype-@@iterator

// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables

// https://tc39.es/ecma262/#sec-array.prototype.concat

// https://tc39.es/ecma262/#sec-array.prototype.copywithin

// https://tc39.es/ecma262/#sec-array.prototype.entries

// https://tc39.es/ecma262/#sec-array.prototype.every

// https://tc39.es/ecma262/#sec-array.prototype.fill

// https://tc39.es/ecma262/#sec-array.prototype.filter

// https://tc39.es/ecma262/#sec-array.prototype.find

// https://tc39.es/ecma262/#sec-array.prototype.findIndex

// https://tc39.es/ecma262/#sec-array.prototype.findindex

// https://tc39.es/ecma262/#sec-array.prototype.flat

// https://tc39.es/ecma262/#sec-array.prototype.flatmap

// https://tc39.es/ecma262/#sec-array.prototype.foreach

// https://tc39.es/ecma262/#sec-array.prototype.includes

// https://tc39.es/ecma262/#sec-array.prototype.indexof

// https://tc39.es/ecma262/#sec-array.prototype.join

// https://tc39.es/ecma262/#sec-array.prototype.keys

// https://tc39.es/ecma262/#sec-array.prototype.lastindexof

// https://tc39.es/ecma262/#sec-array.prototype.map

// https://tc39.es/ecma262/#sec-array.prototype.push

// https://tc39.es/ecma262/#sec-array.prototype.reduce

// https://tc39.es/ecma262/#sec-array.prototype.reduceright

// https://tc39.es/ecma262/#sec-array.prototype.reverse

// https://tc39.es/ecma262/#sec-array.prototype.slice

// https://tc39.es/ecma262/#sec-array.prototype.some

// https://tc39.es/ecma262/#sec-array.prototype.sort

// https://tc39.es/ecma262/#sec-array.prototype.splice

// https://tc39.es/ecma262/#sec-array.prototype.unshift

// https://tc39.es/ecma262/#sec-array.prototype.values

// https://tc39.es/ecma262/#sec-arraybuffer-constructor

// https://tc39.es/ecma262/#sec-arraybuffer.isview

// https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice

// https://tc39.es/ecma262/#sec-arrayspeciescreate

// https://tc39.es/ecma262/#sec-createarrayiterator

// https://tc39.es/ecma262/#sec-createhtml

// https://tc39.es/ecma262/#sec-createiterresultobject

// https://tc39.es/ecma262/#sec-createmappedargumentsobject

// https://tc39.es/ecma262/#sec-createunmappedargumentsobject

// https://tc39.es/ecma262/#sec-dataview-constructor

// https://tc39.es/ecma262/#sec-date.now

// https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive

// https://tc39.es/ecma262/#sec-date.prototype.getyear

// https://tc39.es/ecma262/#sec-date.prototype.setyear

// https://tc39.es/ecma262/#sec-date.prototype.togmtstring

// https://tc39.es/ecma262/#sec-date.prototype.toisostring

// https://tc39.es/ecma262/#sec-date.prototype.tojson

// https://tc39.es/ecma262/#sec-date.prototype.tostring

// https://tc39.es/ecma262/#sec-error.prototype.tostring

// https://tc39.es/ecma262/#sec-escape-string

// https://tc39.es/ecma262/#sec-function-instances-name

// https://tc39.es/ecma262/#sec-function.prototype-@@hasinstance

// https://tc39.es/ecma262/#sec-function.prototype.bind

// https://tc39.es/ecma262/#sec-get-array-@@species

// https://tc39.es/ecma262/#sec-get-map-@@species

// https://tc39.es/ecma262/#sec-get-regexp-@@species

// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall

// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags

// https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky

// https://tc39.es/ecma262/#sec-get-set-@@species

// https://tc39.es/ecma262/#sec-getmethod

// https://tc39.es/ecma262/#sec-getsubstitution

// https://tc39.es/ecma262/#sec-globalthis

// https://tc39.es/ecma262/#sec-hasownproperty

// https://tc39.es/ecma262/#sec-isarray

// https://tc39.es/ecma262/#sec-iscallable

// https://tc39.es/ecma262/#sec-isconstructor

// https://tc39.es/ecma262/#sec-isintegralnumber

// https://tc39.es/ecma262/#sec-isregexp

// https://tc39.es/ecma262/#sec-json-@@tostringtag

// https://tc39.es/ecma262/#sec-json.parse

// https://tc39.es/ecma262/#sec-json.stringify

// https://tc39.es/ecma262/#sec-lengthofarraylike

// https://tc39.es/ecma262/#sec-map-objects

// https://tc39.es/ecma262/#sec-map.prototype-@@iterator

// https://tc39.es/ecma262/#sec-map.prototype.clear

// https://tc39.es/ecma262/#sec-map.prototype.delete

// https://tc39.es/ecma262/#sec-map.prototype.entries

// https://tc39.es/ecma262/#sec-map.prototype.foreach

// https://tc39.es/ecma262/#sec-map.prototype.get

// https://tc39.es/ecma262/#sec-map.prototype.has

// https://tc39.es/ecma262/#sec-map.prototype.keys

// https://tc39.es/ecma262/#sec-map.prototype.set

// https://tc39.es/ecma262/#sec-map.prototype.values

// https://tc39.es/ecma262/#sec-math-@@tostringtag

// https://tc39.es/ecma262/#sec-math.acosh

// https://tc39.es/ecma262/#sec-math.asinh

// https://tc39.es/ecma262/#sec-math.atanh

// https://tc39.es/ecma262/#sec-math.cbrt

// https://tc39.es/ecma262/#sec-math.clz32

// https://tc39.es/ecma262/#sec-math.cosh

// https://tc39.es/ecma262/#sec-math.expm1

// https://tc39.es/ecma262/#sec-math.fround

// https://tc39.es/ecma262/#sec-math.hypot

// https://tc39.es/ecma262/#sec-math.imul

// https://tc39.es/ecma262/#sec-math.log10

// https://tc39.es/ecma262/#sec-math.log1p

// https://tc39.es/ecma262/#sec-math.log2

// https://tc39.es/ecma262/#sec-math.sign

// https://tc39.es/ecma262/#sec-math.sinh

// https://tc39.es/ecma262/#sec-math.tanh

// https://tc39.es/ecma262/#sec-math.trunc

// https://tc39.es/ecma262/#sec-nativeerror

// https://tc39.es/ecma262/#sec-newpromisecapability

// https://tc39.es/ecma262/#sec-number.epsilon

// https://tc39.es/ecma262/#sec-number.isfinite

// https://tc39.es/ecma262/#sec-number.isinteger

// https://tc39.es/ecma262/#sec-number.isnan

// https://tc39.es/ecma262/#sec-number.issafeinteger

// https://tc39.es/ecma262/#sec-number.max_safe_integer

// https://tc39.es/ecma262/#sec-number.min_safe_integer

// https://tc39.es/ecma262/#sec-number.parseFloat

// https://tc39.es/ecma262/#sec-number.parseint

// https://tc39.es/ecma262/#sec-number.prototype.toexponential

// https://tc39.es/ecma262/#sec-number.prototype.tofixed

// https://tc39.es/ecma262/#sec-number.prototype.toprecision

// https://tc39.es/ecma262/#sec-object.assign

// https://tc39.es/ecma262/#sec-object.create

// https://tc39.es/ecma262/#sec-object.defineproperties

// https://tc39.es/ecma262/#sec-object.defineproperty

// https://tc39.es/ecma262/#sec-object.entries

// https://tc39.es/ecma262/#sec-object.freeze

// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor

// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors

// https://tc39.es/ecma262/#sec-object.getownpropertynames

// https://tc39.es/ecma262/#sec-object.getownpropertysymbols

// https://tc39.es/ecma262/#sec-object.getprototypeof

// https://tc39.es/ecma262/#sec-object.is

// https://tc39.es/ecma262/#sec-object.isextensible

// https://tc39.es/ecma262/#sec-object.isfrozen

// https://tc39.es/ecma262/#sec-object.issealed

// https://tc39.es/ecma262/#sec-object.keys

// https://tc39.es/ecma262/#sec-object.preventextensions

// https://tc39.es/ecma262/#sec-object.prototype.__defineGetter__

// https://tc39.es/ecma262/#sec-object.prototype.__defineSetter__

// https://tc39.es/ecma262/#sec-object.prototype.__lookupGetter__

// https://tc39.es/ecma262/#sec-object.prototype.__lookupSetter__

// https://tc39.es/ecma262/#sec-object.prototype.__proto__

// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable

// https://tc39.es/ecma262/#sec-object.prototype.tostring

// https://tc39.es/ecma262/#sec-object.seal

// https://tc39.es/ecma262/#sec-object.setprototypeof

// https://tc39.es/ecma262/#sec-object.values

// https://tc39.es/ecma262/#sec-ordinarytoprimitive

// https://tc39.es/ecma262/#sec-parsefloat-string

// https://tc39.es/ecma262/#sec-parseint-string-radix

// https://tc39.es/ecma262/#sec-promise.all

// https://tc39.es/ecma262/#sec-promise.allsettled

// https://tc39.es/ecma262/#sec-promise.any

// https://tc39.es/ecma262/#sec-promise.prototype.catch

// https://tc39.es/ecma262/#sec-promise.prototype.finally

// https://tc39.es/ecma262/#sec-promise.prototype.then

// https://tc39.es/ecma262/#sec-promise.race

// https://tc39.es/ecma262/#sec-promise.reject

// https://tc39.es/ecma262/#sec-promise.resolve

// https://tc39.es/ecma262/#sec-reflect-@@tostringtag

// https://tc39.es/ecma262/#sec-reflect.apply

// https://tc39.es/ecma262/#sec-reflect.defineproperty

// https://tc39.es/ecma262/#sec-reflect.deleteproperty

// https://tc39.es/ecma262/#sec-reflect.get

// https://tc39.es/ecma262/#sec-reflect.getownpropertydescriptor

// https://tc39.es/ecma262/#sec-reflect.getprototypeof

// https://tc39.es/ecma262/#sec-reflect.has

// https://tc39.es/ecma262/#sec-reflect.isextensible

// https://tc39.es/ecma262/#sec-reflect.ownkeys

// https://tc39.es/ecma262/#sec-reflect.preventextensions

// https://tc39.es/ecma262/#sec-reflect.set

// https://tc39.es/ecma262/#sec-reflect.setprototypeof

// https://tc39.es/ecma262/#sec-regexp-constructor

// https://tc39.es/ecma262/#sec-regexp.prototype-@@match

// https://tc39.es/ecma262/#sec-regexp.prototype-@@replace

// https://tc39.es/ecma262/#sec-regexp.prototype-@@search

// https://tc39.es/ecma262/#sec-regexp.prototype-@@split

// https://tc39.es/ecma262/#sec-regexp.prototype.exec

// https://tc39.es/ecma262/#sec-regexp.prototype.test

// https://tc39.es/ecma262/#sec-regexp.prototype.tostring

// https://tc39.es/ecma262/#sec-regexpexec

// https://tc39.es/ecma262/#sec-requireobjectcoercible

// https://tc39.es/ecma262/#sec-samevalue

// https://tc39.es/ecma262/#sec-samevaluezero

// https://tc39.es/ecma262/#sec-set-objects

// https://tc39.es/ecma262/#sec-set.prototype-@@iterator

// https://tc39.es/ecma262/#sec-set.prototype.add

// https://tc39.es/ecma262/#sec-set.prototype.clear

// https://tc39.es/ecma262/#sec-set.prototype.delete

// https://tc39.es/ecma262/#sec-set.prototype.entries

// https://tc39.es/ecma262/#sec-set.prototype.foreach

// https://tc39.es/ecma262/#sec-set.prototype.has

// https://tc39.es/ecma262/#sec-set.prototype.keys

// https://tc39.es/ecma262/#sec-set.prototype.values

// https://tc39.es/ecma262/#sec-speciesconstructor

// https://tc39.es/ecma262/#sec-string.fromcodepoint

// https://tc39.es/ecma262/#sec-string.prototype-@@iterator

// https://tc39.es/ecma262/#sec-string.prototype.anchor

// https://tc39.es/ecma262/#sec-string.prototype.big

// https://tc39.es/ecma262/#sec-string.prototype.blink

// https://tc39.es/ecma262/#sec-string.prototype.bold

// https://tc39.es/ecma262/#sec-string.prototype.codepointat

// https://tc39.es/ecma262/#sec-string.prototype.endswith

// https://tc39.es/ecma262/#sec-string.prototype.fixed

// https://tc39.es/ecma262/#sec-string.prototype.fontcolor

// https://tc39.es/ecma262/#sec-string.prototype.fontsize

// https://tc39.es/ecma262/#sec-string.prototype.includes

// https://tc39.es/ecma262/#sec-string.prototype.italics

// https://tc39.es/ecma262/#sec-string.prototype.link

// https://tc39.es/ecma262/#sec-string.prototype.match

// https://tc39.es/ecma262/#sec-string.prototype.matchall

// https://tc39.es/ecma262/#sec-string.prototype.padend

// https://tc39.es/ecma262/#sec-string.prototype.padstart

// https://tc39.es/ecma262/#sec-string.prototype.repeat

// https://tc39.es/ecma262/#sec-string.prototype.replace

// https://tc39.es/ecma262/#sec-string.prototype.replaceall

// https://tc39.es/ecma262/#sec-string.prototype.search

// https://tc39.es/ecma262/#sec-string.prototype.small

// https://tc39.es/ecma262/#sec-string.prototype.split

// https://tc39.es/ecma262/#sec-string.prototype.startswith

// https://tc39.es/ecma262/#sec-string.prototype.strike

// https://tc39.es/ecma262/#sec-string.prototype.sub

// https://tc39.es/ecma262/#sec-string.prototype.substr

// https://tc39.es/ecma262/#sec-string.prototype.sup

// https://tc39.es/ecma262/#sec-string.prototype.trim

// https://tc39.es/ecma262/#sec-string.prototype.trimend

// https://tc39.es/ecma262/#sec-string.prototype.trimleft

// https://tc39.es/ecma262/#sec-string.prototype.trimstart

// https://tc39.es/ecma262/#sec-string.raw

// https://tc39.es/ecma262/#sec-symbol-constructor

// https://tc39.es/ecma262/#sec-symbol.asynciterator

// https://tc39.es/ecma262/#sec-symbol.for

// https://tc39.es/ecma262/#sec-symbol.hasinstance

// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable

// https://tc39.es/ecma262/#sec-symbol.iterator

// https://tc39.es/ecma262/#sec-symbol.keyfor

// https://tc39.es/ecma262/#sec-symbol.match

// https://tc39.es/ecma262/#sec-symbol.matchall

// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive

// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag

// https://tc39.es/ecma262/#sec-symbol.prototype.description

// https://tc39.es/ecma262/#sec-symbol.replace

// https://tc39.es/ecma262/#sec-symbol.search

// https://tc39.es/ecma262/#sec-symbol.species

// https://tc39.es/ecma262/#sec-symbol.split

// https://tc39.es/ecma262/#sec-symbol.toprimitive

// https://tc39.es/ecma262/#sec-symbol.tostringtag

// https://tc39.es/ecma262/#sec-symbol.unscopables

// https://tc39.es/ecma262/#sec-thisnumbervalue

// https://tc39.es/ecma262/#sec-tobigint

// https://tc39.es/ecma262/#sec-toindex

// https://tc39.es/ecma262/#sec-tointegerorinfinity

// https://tc39.es/ecma262/#sec-tolength

// https://tc39.es/ecma262/#sec-toobject

// https://tc39.es/ecma262/#sec-toprimitive

// https://tc39.es/ecma262/#sec-topropertykey

// https://tc39.es/ecma262/#sec-typedarray-objects

// https://tc39.es/ecma262/#sec-unescape-string

// https://tc39.es/ecma262/#sec-weakmap.prototype.delete

// https://tc39.es/ecma262/#sec-weakmap.prototype.get

// https://tc39.es/ecma262/#sec-weakmap.prototype.has

// https://tc39.es/ecma262/#sec-weakmap.prototype.set

// https://tc39.es/ecma262/#sec-weakset-constructor

// https://tc39.es/ecma262/#sec-weakset.prototype.add

// https://tc39.es/ecma262/#sec-weakset.prototype.delete

// https://tc39.es/ecma262/#sec-weakset.prototype.has

// https://tc39.es/ecma262/#typedarray-species-create

// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfer

// https://tc39.es/proposal-arraybuffer-transfer/#sec-arraybuffer.prototype.transfertofixedlength

// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed

// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSorted

// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toSpliced

// https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with

// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed

// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toSorted

// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toSpliced

// https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with

// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause

// https://tc39.es/proposal-explicit-resource-management/#sec-adddisposableresource-disposable-v-hint-disposemethod

// https://tc39.es/proposal-json-parse-with-source/#sec-json.israwjson

// https://tc39.es/proposal-set-methods/#sec-getsetrecord

// https://tc39.es/proposal-string-cooked/

// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregistered

// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknown

// https://tc39.github.io/proposal-set-methods/#Set.prototype.isDisjointFrom

// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSubsetOf

// https://tc39.github.io/proposal-set-methods/#Set.prototype.isSupersetOf

// https://tc39.github.io/proposal-setmap-offrom/

// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from

// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of

// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from

// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from

// https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of

// https://url.spec.whatwg.org/#URL-stringification-behavior

// https://url.spec.whatwg.org/#cannot-have-a-username-password-port

// https://url.spec.whatwg.org/#concept-url-serializer

// https://url.spec.whatwg.org/#dom-url-hash

// https://url.spec.whatwg.org/#dom-url-host

// https://url.spec.whatwg.org/#dom-url-hostname

// https://url.spec.whatwg.org/#dom-url-href

// https://url.spec.whatwg.org/#dom-url-origin

// https://url.spec.whatwg.org/#dom-url-password

// https://url.spec.whatwg.org/#dom-url-pathname

// https://url.spec.whatwg.org/#dom-url-port

// https://url.spec.whatwg.org/#dom-url-protocol

// https://url.spec.whatwg.org/#dom-url-search

// https://url.spec.whatwg.org/#dom-url-searchparams

// https://url.spec.whatwg.org/#dom-url-tojson

// https://url.spec.whatwg.org/#dom-url-username

// https://url.spec.whatwg.org/#dom-urlsearchparams-append

// https://url.spec.whatwg.org/#dom-urlsearchparams-delete

// https://url.spec.whatwg.org/#dom-urlsearchparams-get

// https://url.spec.whatwg.org/#dom-urlsearchparams-getall

// https://url.spec.whatwg.org/#dom-urlsearchparams-has

// https://url.spec.whatwg.org/#dom-urlsearchparams-set

// https://url.spec.whatwg.org/#dom-urlsearchparams-sort

// https://url.spec.whatwg.org/#host-parsing

// https://url.spec.whatwg.org/#include-credentials

// https://url.spec.whatwg.org/#interface-urlsearchparams

// https://url.spec.whatwg.org/#is-special

// https://url.spec.whatwg.org/#shorten-a-urls-path

// https://url.spec.whatwg.org/#url-class

// https://url.spec.whatwg.org/#url-parsing

// https://url.spec.whatwg.org/#urlsearchparams-stringification-behavior

// https://webidl.spec.whatwg.org/#es-DOMException-specialness

// https://webidl.spec.whatwg.org/#idl-DOMException

// https://www.json.org/json-en.html

// humps is copyright © 2012+ Dom Christie

// iOS Safari 7.x bug

// if certain conditions are met

// if clearTimeout wasn't available but was latter defined

// if it's a string, use it as the icon name

// if it's an array with length of two

// if not, return an empty array

// if setTimeout wasn't available but was latter defined

// if the icon is an object and has a prefix and an icon name, return it

// if the icon is null, there's nothing to do

// if the target is not iterable or it's an array with the default iterator - use a simple case

// if the value is a non-empty array

// import a list of modules into the list

// in Safari 9 which returns 'object' for typed arrays and other constructors.

// in old Chrome, versions of V8 isn't V8 = Chrome / 10

// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`

// in some IE10 builds, `hasOwnProperty` returns incorrect result on integer keys

// in some old engines like Safari 9, typeof C is 'object'

// in this block because of a Safari 14.1 bug

// includes check on 1..constructor(foo) case

// invoked the tag with an array.

// ipv4

// ipv6

// istanbul ignore if

// istanbul ignore next

// it can work only with native `setPrototypeOf`

// iterable DOM collections

// keys

// make `.constructor === Promise` work for native promise-based APIs

// make `Promise#then` return a polyfilled `Promise` for native promise-based APIs

// make `instanceof Promise` work for native promise-based APIs

// makes no sense without proper strict mode support

// makes subclassing work correct for wrapped built-ins

// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`

// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`

// map

// map over all the keys in the classes object

// mode & 1: value is a module id, require it

// mode & 2: merge all properties of value into the ns

// mode & 4: return value when already ns object

// mode & 8|1: behave like require

// modern V8 bug

// modern engines have queueMicrotask method

// module.parent = undefined by default

// next code unit is the high surrogate of a surrogate pair.

// next index

// noop

// not necessary to add metadata

// number of basic code points.

// number of code points that have been handled;

// object ID

// observable side effects

// of a tag and escaping quotes in arguments

// of whitespaces and has a correct name

// old FF does not clone regexes passed to the constructor, so get the source and flags directly

// old WebKit bug - some methods are non-configurable

// old engines have not location.origin

// on Uint8ClampedArray or some other constructors

// optimisation for array iterators

// optional / simple context binding

// or finish the iteration

// or it's not an array but it is truthy

// parseInt parses a string to a first unavailable symbol

// prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation

// prevent exposing of metadata key

// removed. So we now should delete the icon.

// return a primitive with prefix

// return an array of the keys where the value for the key is not null

// return step by kind

// return the list of modules as css string

// revert to the last existing entry

// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error

// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.

// shim for using process in browser

// should have correct order of operations (Edge bug)

// should work with symbols and should have deterministic property order (V8 bug)

// simulate the 'y' flag.

// single UTF-16 code unit

// so check `userAgent` even if `.v8` exists, but 0

// some

// some Chrome versions have non-configurable methods on DOMTokenList

// some WebKit versions fails with big numbers, some has wrong arity

// some early implementations, like WebKit, does not follow the final semantic

// some engines have `self`, but with incorrect descriptor

// some old engines throws on access to some keys like `arguments` or `caller`

// some old implementations (like WebKit) could pass numbers as keys

// tags it will allow on a page

// target

// that causes it, under certain circumstances, to provide the same value for

// that probably means that a class name that was previously present to make the icon has been

// the 'y' flag.

// the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and

// then create the object with the key and the value

// this block is based on https://gist.github.com/SheetJSDev/1100ad56b9f856c95299ed0e068eea08

// this has everything that it needs to be rendered which means it was probably imported

// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper

// this is safe, since arraybuffer cannot have circular references

// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346

// to operate correctly into non-standard environments

// toObject with fallback for non-array-like ES3 strings

// unpaired surrogate

// v8 likes predictible objects

// validate

// w/o altered newTarget, lot of arguments case

// w/o altered newTarget, optimization for 0-4 arguments

// we can't check .prototype since constructors produced by .bind haven't it

// we can't use just `it == null` since of `document.all` special case

// we don't add metadata for regexps created by a literal.

// we haven't completely correct pre-ES6 way for getting `new.target`, so use this

// we will shift it to the correct prefix.

// weak collections should not contains .clear method

// webpackBootstrap

// when when somebody has screwed with setTimeout but no I.E. maddness

// with adding support of @@isConcatSpreadable and @@species

// with adding support of @@species

// with altered newTarget, not support built-in constructors

// with non-writable property on the prototype

// workaround of WebKit ~ iOS Safari 10.1 bug

// wrap Symbol constructor for correct work with undefined description

// wrapped in strict mode code which doesn't define any globals.  It's inside a

//normal enviroments in sane situations
