diff --git a/.eslintrc.js b/.eslintrc.js index ec55f16b2832..ac4546567833 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -163,5 +163,13 @@ module.exports = { ], }, }, + { + files: ['workflow_tests/**/*.{js,jsx,ts,tsx}', 'tests/**/*.{js,jsx,ts,tsx}', '.github/**/*.{js,jsx,ts,tsx}'], + rules: { + '@lwc/lwc/no-async-await': 'off', + 'no-await-in-loop': 'off', + 'no-restricted-syntax': ['error', 'ForInStatement', 'LabeledStatement', 'WithStatement'], + }, + }, ], }; diff --git a/.github/ISSUE_TEMPLATE/DesignDoc.md b/.github/ISSUE_TEMPLATE/DesignDoc.md index 424b549a0940..2fbdcf7a65d5 100644 --- a/.github/ISSUE_TEMPLATE/DesignDoc.md +++ b/.github/ISSUE_TEMPLATE/DesignDoc.md @@ -27,6 +27,7 @@ labels: Daily, NewFeature - [ ] Confirm that the doc has the minimum necessary number of reviews before proceeding - [ ] Email `strategy@expensify.com` one last time to let them know the Design Doc is moving into the implementation phase - [ ] Implement the changes +- [ ] Add regression tests so that QA can test your feature with every deploy ([instructions](https://stackoverflowteams.com/c/expensify/questions/363)) - [ ] Send out a follow up email to `strategy@expensify.com` once everything has been implemented and do a **Project Wrap-Up** retrospective that provides: - Summary of what we accomplished with this project - What went well? diff --git a/.github/actions/composite/setupNode/action.yml b/.github/actions/composite/setupNode/action.yml index ffaa55c0b3be..57c7e4d91379 100644 --- a/.github/actions/composite/setupNode/action.yml +++ b/.github/actions/composite/setupNode/action.yml @@ -16,38 +16,13 @@ runs: uses: actions/cache@v3 with: path: node_modules - key: ${{ runner.os }}-node-modules-${{ hashFiles('package-lock.json') }} + key: ${{ runner.os }}-node-modules-${{ hashFiles('package-lock.json', 'patches/**') }} - id: cache-desktop-node-modules uses: actions/cache@v3 with: path: desktop/node_modules - key: ${{ runner.os }}-desktop-node-modules-${{ hashFiles('desktop/package-lock.json') }} - - - name: Check if patch files changed - id: patchCheck - shell: bash - run: | - set -e - if [[ `git diff main --name-only | grep \.patch` != null ]]; then - echo 'CHANGES_IN_PATCH_FILES=true' >> "$GITHUB_OUTPUT" - else - echo 'CHANGES_IN_PATCH_FILES=false' >> "$GITHUB_OUTPUT" - fi - - - name: Patch root project node packages - shell: bash - if: | - steps.patchCheck.outputs.CHANGES_IN_PATCH_FILES == 'true' && - steps.cache-node-modules.outputs.cache-hit == 'true' - run: npx patch-package - - - name: Patch node packages for desktop submodule - shell: bash - if: | - steps.patchCheck.outputs.CHANGES_IN_PATCH_FILES == 'true' && - steps.cache-desktop-node-modules.outputs.cache-hit == 'true' - run: cd desktop && npx patch-package + key: ${{ runner.os }}-desktop-node-modules-${{ hashFiles('desktop/package-lock.json', 'desktop/patches/**') }} - name: Install root project node packages if: steps.cache-node-modules.outputs.cache-hit != 'true' diff --git a/.github/actions/javascript/authorChecklist/index.js b/.github/actions/javascript/authorChecklist/index.js index 4276ea0ba6fc..b165c285143f 100644 --- a/.github/actions/javascript/authorChecklist/index.js +++ b/.github/actions/javascript/authorChecklist/index.js @@ -105,7 +105,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -539,7 +539,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16117,1066 +16117,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17185,19 +17250,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17208,34 +17282,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17245,15 +17333,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17276,31 +17369,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17315,9 +17430,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17326,6 +17446,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17334,6 +17457,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17343,10 +17467,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17364,32 +17492,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17426,7 +17575,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17480,7 +17629,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17489,14 +17638,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17504,11 +17657,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17517,13 +17671,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17535,6 +17696,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17553,26 +17719,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17580,12 +17762,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17598,11 +17780,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17610,31 +17797,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17682,6 +17883,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17720,13 +17925,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17734,6 +17943,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17747,6 +17957,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17756,6 +17967,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17769,9 +17981,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17783,11 +18003,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17796,18 +18020,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17815,10 +18049,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17830,7 +18069,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17840,29 +18079,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17870,7 +18132,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17883,10 +18145,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17896,12 +18163,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17921,12 +18193,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17938,15 +18220,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17955,10 +18247,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17967,20 +18264,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -17995,25 +18304,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -18033,12 +18356,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18058,6 +18387,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18067,21 +18405,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18093,11 +18438,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18119,6 +18472,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18132,53 +18489,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18187,545 +18571,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/awaitStagingDeploys/index.js b/.github/actions/javascript/awaitStagingDeploys/index.js index bc8510ba5bc6..b2db5f0542ea 100644 --- a/.github/actions/javascript/awaitStagingDeploys/index.js +++ b/.github/actions/javascript/awaitStagingDeploys/index.js @@ -8,7 +8,7 @@ module.exports = /***/ 1021: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const CONST = __nccwpck_require__(4097); const ActionUtils = __nccwpck_require__(970); const GitHubUtils = __nccwpck_require__(7999); @@ -143,7 +143,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -577,7 +577,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16158,1066 +16158,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17226,19 +17291,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17249,34 +17323,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17286,15 +17374,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17317,31 +17410,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17356,9 +17471,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17367,6 +17487,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17375,6 +17498,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17384,10 +17508,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17405,32 +17533,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17467,7 +17616,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17521,7 +17670,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17530,14 +17679,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17545,11 +17698,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17558,13 +17712,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17576,6 +17737,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17594,26 +17760,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17621,12 +17803,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17639,11 +17821,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17651,31 +17838,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17723,6 +17924,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17761,13 +17966,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17775,6 +17984,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17788,6 +17998,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17797,6 +18008,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17810,9 +18022,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17824,11 +18044,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17837,18 +18061,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17856,10 +18090,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17871,7 +18110,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17881,29 +18120,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17911,7 +18173,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17924,10 +18186,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17937,12 +18204,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17962,12 +18234,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17979,15 +18261,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17996,10 +18288,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -18008,20 +18305,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -18036,25 +18345,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -18074,12 +18397,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18099,6 +18428,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18108,21 +18446,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18134,11 +18479,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18160,6 +18513,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18173,53 +18530,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18228,545 +18612,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/bumpVersion/index.js b/.github/actions/javascript/bumpVersion/index.js index f780e50a4587..830dbf626548 100644 --- a/.github/actions/javascript/bumpVersion/index.js +++ b/.github/actions/javascript/bumpVersion/index.js @@ -11,7 +11,7 @@ module.exports = const {promisify} = __nccwpck_require__(669); const fs = __nccwpck_require__(747); const exec = promisify(__nccwpck_require__(129).exec); -const _ = __nccwpck_require__(571); +const _ = __nccwpck_require__(947); const core = __nccwpck_require__(186); const versionUpdater = __nccwpck_require__(7); const {updateAndroidVersion, updateiOSVersion, generateAndroidVersionCode} = __nccwpck_require__(322); @@ -178,7 +178,7 @@ exports.updateiOSVersion = function updateiOSVersion(version) { /***/ 7: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(571); +const _ = __nccwpck_require__(947); const SEMANTIC_VERSION_LEVELS = { MAJOR: 'MAJOR', @@ -3068,8 +3068,8 @@ exports.debug = debug; // for test /***/ }), -/***/ 521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +/***/ 947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; // ESM COMPAT FLAG @@ -3077,636 +3077,672 @@ __nccwpck_require__.r(__webpack_exports__); // EXPORTS __nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip }); -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); -} +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -const byteToHex = []; +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return uuid; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; +} -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; +} - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +/* harmony default export */ const isString = (tagTester('String')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +/* harmony default export */ const isNumber = (tagTester('Number')); - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isDate = (tagTester('Date')); - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +/* harmony default export */ const isError = (tagTester('Error')); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +/* harmony default export */ const isSymbol = (tagTester('Symbol')); - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - b[i++] = clockseq & 0xff; // `node` - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - return buf || esm_node_stringify(b); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +var isFunction = tagTester('Function'); - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ +/* harmony default export */ const modules_isFunction = (isFunction); - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - const bytes = []; - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - return bytes; -} -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +var isDataView = tagTester('DataView'); - return buf; - } +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); +} - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return external_crypto_default().createHash('md5').update(bytes).digest(); +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js - +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +var isArguments = tagTester('Arguments'); -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +/* harmony default export */ const modules_isArguments = (isArguments); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); } -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return external_crypto_default().createHash('sha1').update(bytes).digest(); +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js - +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } - - return parseInt(uuid.substr(14, 1), 16); } -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js - +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js -/***/ }), -/***/ 641: -/***/ ((__unused_webpack_module, exports) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -Object.defineProperty(exports, "__esModule", ({ value: true })); -// Current version. -var VERSION = '1.13.4'; +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); } - args[startIndex] = rest; - return func.apply(this, args); }; } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} - -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} - -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} - -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } } -var isString = tagTester('String'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); - -var isSymbol = tagTester('Symbol'); - -var isArrayBuffer = tagTester('ArrayBuffer'); - -var isFunction = tagTester('Function'); - -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} - -var isFunction$1 = isFunction; - -var hasObjectTag = tagTester('Object'); - -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); - -var isDataView = tagTester('DataView'); - -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); -} - -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); - -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); - -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); -} - -var isArguments = tagTester('Arguments'); - -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); - -var isArguments$1 = isArguments; - -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} - -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; - }; -} - -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; - } -} - -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; -} - -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); - -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); - -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); -} - -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); - -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); - -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); - } - }; -} - -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; - - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} // Retrieve the names of an object's own properties. // Delegates to **ECMAScript 5**'s native `Object.keys`. @@ -3714,25 +3750,35 @@ function keys(obj) { if (!isObject(obj)) return []; if (nativeKeys) return nativeKeys(obj); var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); + for (var key in obj) if (has(obj, key)) keys.push(key); // Ahem, IE < 9. if (hasEnumBug) collectNonEnumProps(obj, keys); return keys; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js + + + + + + // Is a given array, string, or object empty? // An "empty" object has no enumerable own-properties. function isEmpty(obj) { if (obj == null) return true; // Skip the more expensive `toString`-based type checks if `obj` has no // `.length`. - var length = getLength(obj); + var length = _getLength(obj); if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) + isArray(obj) || isString(obj) || modules_isArguments(obj) )) return length === 0; - return getLength(keys(obj)) === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js + + // Returns whether an object has a given set of `key:value` pairs. function isMatch(object, attrs) { var _keys = keys(attrs), length = _keys.length; @@ -3745,40 +3791,58 @@ function isMatch(object, attrs) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js + + // If Underscore is called as a function, it returns a wrapped object that can // be used OO-style. This wrapper holds altered versions of all functions added // through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); this._wrapped = obj; } -_$1.VERSION = VERSION; +_.VERSION = VERSION; // Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { +_.prototype.value = function() { return this._wrapped; }; // Provide unwrapping proxies for some methods used in engine operations // such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -_$1.prototype.toString = function() { +_.prototype.toString = function() { return String(this._wrapped); }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js + + // Internal function to wrap or shallow-copy an ArrayBuffer, // typed array or DataView to a new view, reusing the buffer. function toBufferView(bufferSource) { return new Uint8Array( bufferSource.buffer || bufferSource, bufferSource.byteOffset || 0, - getByteLength(bufferSource) + _getByteLength(bufferSource) ); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js + + + + + + + + + + + // We use this string twice, so give it a name for minification. var tagDataView = '[object DataView]'; @@ -3800,14 +3864,14 @@ function eq(a, b, aStack, bStack) { // Internal recursive comparison function for `_.isEqual`. function deepEq(a, b, aStack, bStack) { // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; className = tagDataView; } switch (className) { @@ -3839,9 +3903,9 @@ function deepEq(a, b, aStack, bStack) { } var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; areArrays = true; } @@ -3851,8 +3915,8 @@ function deepEq(a, b, aStack, bStack) { // Objects with different constructors are not equivalent, but `Object`s or `Array`s // from different frames are. var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) && ('constructor' in a && 'constructor' in b)) { return false; } @@ -3893,7 +3957,7 @@ function deepEq(a, b, aStack, bStack) { while (length--) { // Deep compare each member key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; } } // Remove the first object from the stack of traversed objects. @@ -3907,6 +3971,11 @@ function isEqual(a, b) { return eq(a, b); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js + + + + // Retrieve all the enumerable property names of an object. function allKeys(obj) { if (!isObject(obj)) return []; @@ -3917,24 +3986,29 @@ function allKeys(obj) { return keys; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js + + + + // Since the regular `Object.prototype.toString` type tests don't work for // some types in IE 11, we use a fingerprinting heuristic instead, based // on the methods. It's not great, but it's the best we got. // The fingerprint method lists are defined below. function ie11fingerprint(methods) { - var length = getLength(methods); + var length = _getLength(methods); return function(obj) { if (obj == null) return false; // `Map`, `WeakMap` and `Set` have no enumerable keys. var keys = allKeys(obj); - if (getLength(keys)) return false; + if (_getLength(keys)) return false; for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; + if (!modules_isFunction(obj[methods[i]])) return false; } // If we are testing against `WeakMap`, we need to ensure that // `obj` doesn't have a `forEach` method in order to distinguish // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } @@ -3951,13 +4025,34 @@ var mapMethods = commonInit.concat(forEachName, mapTail), weakMapMethods = commonInit.concat(mapTail), setMethods = ['add'].concat(commonInit, forEachName, hasName); -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js -var isWeakSet = tagTester('WeakSet'); // Retrieve the values of an object's properties. function values(obj) { @@ -3970,6 +4065,9 @@ function values(obj) { return values; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + // Convert an object into a list of `[key, value]` pairs. // The opposite of `_.object` with one argument. function pairs(obj) { @@ -3982,6 +4080,9 @@ function pairs(obj) { return pairs; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js + + // Invert the keys and values of an object. The values must be serializable. function invert(obj) { var result = {}; @@ -3992,15 +4093,19 @@ function invert(obj) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js + + // Return a sorted list of the function names available on the object. function functions(obj) { var names = []; for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); + if (modules_isFunction(obj[key])) names.push(key); } return names.sort(); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js // An internal function for creating assigner functions. function createAssigner(keysFunc, defaults) { return function(obj) { @@ -4020,16 +4125,32 @@ function createAssigner(keysFunc, defaults) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js + + + // Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); +/* harmony default export */ const extend = (createAssigner(allKeys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js + + // Assigns a given object with all the own properties in the passed-in // object(s). // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + // Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + // Create a naked function reference for surrogate-prototype-swapping. function ctor() { @@ -4047,6 +4168,10 @@ function baseCreate(prototype) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js + + + // Creates an object that inherits from the given prototype object. // If additional properties are provided then they will be added to the // created object. @@ -4056,12 +4181,18 @@ function create(prototype, props) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js + + + + // Create a (shallow-cloned) duplicate of an object. function clone(obj) { if (!isObject(obj)) return obj; return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -4070,19 +4201,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -4093,34 +4233,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -4130,15 +4284,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -4161,31 +4320,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -4200,9 +4381,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -4211,6 +4397,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -4219,6 +4408,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -4228,10 +4418,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -4249,32 +4443,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + + +// Function for unescaping strings from HTML interpolation. +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js -// Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -4311,7 +4526,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -4365,7 +4580,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -4374,14 +4589,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -4389,11 +4608,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -4402,13 +4622,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -4420,6 +4647,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -4438,26 +4670,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -4465,12 +4713,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -4483,11 +4731,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -4495,31 +4748,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -4567,6 +4834,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -4605,13 +4876,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -4619,6 +4894,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -4632,6 +4908,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -4641,6 +4918,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -4654,9 +4932,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -4668,11 +4954,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -4681,18 +4971,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -4700,10 +5000,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -4715,7 +5020,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -4725,29 +5030,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -4755,7 +5083,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -4768,10 +5096,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -4781,12 +5114,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -4806,12 +5144,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -4823,15 +5171,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -4840,10 +5198,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -4852,20 +5215,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -4880,25 +5255,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -4918,12 +5307,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -4943,6 +5338,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -4952,21 +5356,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -4978,11 +5389,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -5004,6 +5423,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -5017,53 +5440,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -5072,22 +5522,34 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + // Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in @@ -5096,6 +5558,9 @@ function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + // Get the first element of an array. Passing **n** will return the first N // values in the array. The **guard** check allows it to work with `_.map`. function first(array, n, guard) { @@ -5104,6 +5569,9 @@ function first(array, n, guard) { return initial(array, array.length - n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + // Returns everything but the first entry of the `array`. Especially useful on // the `arguments` object. Passing an **n** will return the rest N values in the // `array`. @@ -5111,6 +5579,9 @@ function rest(array, n, guard) { return slice.call(array, n == null || guard ? 1 : n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + // Get the last element of an array. Passing **n** will return the last N // values in the array. function last(array, n, guard) { @@ -5119,30 +5590,52 @@ function last(array, n, guard) { return rest(array, Math.max(0, array.length - n)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + // Trim out all falsy values from an array. function compact(array) { return filter(array, Boolean); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + // Flatten out an array, either recursively (by default), or up to `depth`. // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); +function flatten_flatten(array, depth) { + return flatten(array, depth, false); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + // Take the difference between one array and a number of other arrays. // Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); return filter(array, function(value){ return !contains(rest, value); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + // Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { return difference(array, otherArrays); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + // Produce a duplicate-free version of the array. If the array has already // been sorted, you have the option of using a faster algorithm. @@ -5158,7 +5651,7 @@ function uniq(array, isSorted, iteratee, context) { if (iteratee != null) iteratee = cb(iteratee, context); var result = []; var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { + for (var i = 0, length = _getLength(array); i < length; i++) { var value = array[i], computed = iteratee ? iteratee(value, i, array) : value; if (isSorted && !iteratee) { @@ -5176,18 +5669,27 @@ function uniq(array, isSorted, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + // Produce an array that contains the union: each distinct element from all of // the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + // Produce an array that contains every item shared between all the // passed-in arrays. function intersection(array) { var result = []; var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { + for (var i = 0, length = _getLength(array); i < length; i++) { var item = array[i]; if (contains(result, item)) continue; var j; @@ -5199,10 +5701,15 @@ function intersection(array) { return result; } -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; var result = Array(length); for (var index = 0; index < length; index++) { @@ -5211,16 +5718,23 @@ function unzip(array) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + // Zip together multiple lists into a single array -- elements that share // an index go together. -var zip = restArguments(unzip); +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + // Converts lists into objects. Pass either a single array of `[key, value]` // pairs, or two parallel arrays of the same length -- one of keys, and one of // the corresponding values. Passing by pairs is the reverse of `_.pairs`. function object(list, values) { var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { + for (var i = 0, length = _getLength(list); i < length; i++) { if (values) { result[list[i]] = values[i]; } else { @@ -5230,6 +5744,7 @@ function object(list, values) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js // Generate an integer Array containing an arithmetic progression. A port of // the native Python `range()` function. See // [the Python documentation](https://docs.python.org/library/functions.html#range). @@ -5252,6 +5767,9 @@ function range(start, stop, step) { return range; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + // Chunk a single array into multiple arrays, each containing `count` or fewer // items. function chunk(array, count) { @@ -5264,28 +5782,44 @@ function chunk(array, count) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + // Helper function to continue chaining intermediate results. function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return instance._chain ? _(obj).chain() : obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + // Add your own custom functions to the Underscore object. function mixin(obj) { each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { + var func = _[name] = obj[name]; + _.prototype[name] = function() { var args = [this._wrapped]; push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); + return chainResult(this, func.apply(_, args)); }; }); - return _$1; + return _; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + // Add all mutator `Array` functions to the wrapper. each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { var method = ArrayProto[name]; - _$1.prototype[name] = function() { + _.prototype[name] = function() { var obj = this._wrapped; if (obj != null) { method.apply(obj, arguments); @@ -5300,317 +5834,609 @@ each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function( // Add all accessor `Array` functions to the wrapper. each(['concat', 'join', 'slice'], function(name) { var method = ArrayProto[name]; - _$1.prototype[name] = function() { + _.prototype[name] = function() { var obj = this._wrapped; if (obj != null) obj = method.apply(obj, arguments); return chainResult(this, obj); }; }); +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js // Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js // Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + // Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); +var index_default_ = mixin(modules_namespaceObject); // Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + /***/ }), -/***/ 571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js + + +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return external_crypto_default().createHash('md5').update(bytes).digest(); +} + +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js + + +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js + + + +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return esm_node_stringify(rnds); +} + +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js + + +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return external_crypto_default().createHash('sha1').update(bytes).digest(); +} + +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + + -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -var underscoreNodeF = __nccwpck_require__(641); -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map /***/ }), diff --git a/.github/actions/javascript/checkDeployBlockers/index.js b/.github/actions/javascript/checkDeployBlockers/index.js index ca368f0cff29..c1fb62db00ac 100644 --- a/.github/actions/javascript/checkDeployBlockers/index.js +++ b/.github/actions/javascript/checkDeployBlockers/index.js @@ -8,7 +8,7 @@ module.exports = /***/ 6265: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const core = __nccwpck_require__(2186); const CONST = __nccwpck_require__(4097); const GithubUtils = __nccwpck_require__(7999); @@ -110,7 +110,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -544,7 +544,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16078,1066 +16078,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17146,19 +17211,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17169,34 +17243,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17206,15 +17294,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17237,31 +17330,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17276,9 +17391,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17287,6 +17407,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17295,6 +17418,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17304,10 +17428,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17325,32 +17453,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17387,7 +17536,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17441,7 +17590,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17450,14 +17599,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17465,11 +17618,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17478,13 +17632,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17496,6 +17657,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17514,26 +17680,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17541,12 +17723,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17559,11 +17741,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17571,31 +17758,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17643,6 +17844,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17681,13 +17886,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17695,6 +17904,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17708,6 +17918,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17717,6 +17928,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17730,9 +17942,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17744,11 +17964,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17757,18 +17981,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17776,10 +18010,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17791,7 +18030,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17801,29 +18040,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17831,7 +18093,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17844,10 +18106,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17857,12 +18124,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17882,12 +18154,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17899,15 +18181,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17916,10 +18208,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17928,20 +18225,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -17956,25 +18265,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -17994,12 +18317,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18019,6 +18348,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18028,21 +18366,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18054,11 +18399,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18080,6 +18433,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18093,53 +18450,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18148,545 +18532,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.js b/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.js index a514f8a9bcab..82a79528ed09 100644 --- a/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.js +++ b/.github/actions/javascript/createOrUpdateStagingDeploy/createOrUpdateStagingDeploy.js @@ -5,167 +5,138 @@ const CONST = require('../../../libs/CONST'); const GithubUtils = require('../../../libs/GithubUtils'); const GitUtils = require('../../../libs/GitUtils'); -const run = function () { +async function run() { const newVersion = core.getInput('NPM_VERSION'); console.log('New version found from action input:', newVersion); - let shouldCreateNewStagingDeployCash = false; - let newTag = newVersion; - let newDeployBlockers = []; - let previousStagingDeployCashData = {}; - let currentStagingDeployCashData = null; - - // Start by fetching the list of recent StagingDeployCash issues, along with the list of open deploy blockers - return Promise.all([ - GithubUtils.octokit.issues.listForRepo({ + try { + // Start by fetching the list of recent StagingDeployCash issues, along with the list of open deploy blockers + const {data: recentDeployChecklists} = await GithubUtils.octokit.issues.listForRepo({ log: console, owner: CONST.GITHUB_OWNER, repo: CONST.APP_REPO, labels: CONST.LABELS.STAGING_DEPLOY, state: 'all', - }), - GithubUtils.octokit.issues.listForRepo({ - log: console, - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - labels: CONST.LABELS.DEPLOY_BLOCKER, - }), - ]) - .then(([stagingDeployResponse, deployBlockerResponse]) => { - if (!stagingDeployResponse || !stagingDeployResponse.data || _.isEmpty(stagingDeployResponse.data)) { - console.error('Failed fetching StagingDeployCash issues from Github!', stagingDeployResponse); - throw new Error('Failed fetching StagingDeployCash issues from Github'); - } - - if (!deployBlockerResponse || !deployBlockerResponse.data) { - console.log('Failed fetching DeployBlockerCash issues from Github, continuing...'); - } - - newDeployBlockers = _.map(deployBlockerResponse.data, ({html_url}) => ({ - url: html_url, - number: GithubUtils.getIssueOrPullRequestNumberFromURL(html_url), - isResolved: false, - })); - - // Look at the state of the most recent StagingDeployCash, - // if it is open then we'll update the existing one, otherwise, we'll create a new one. - shouldCreateNewStagingDeployCash = Boolean(stagingDeployResponse.data[0].state !== 'open'); - if (shouldCreateNewStagingDeployCash) { - console.log('Latest StagingDeployCash is closed, creating a new one.', stagingDeployResponse.data[0]); - } else { - console.log( - 'Latest StagingDeployCash is open, updating it instead of creating a new one.', - 'Current:', - stagingDeployResponse.data[0], - 'Previous:', - stagingDeployResponse.data[1], - ); - } - - // Parse the data from the previous StagingDeployCash - // (newest if there are none open, otherwise second-newest) - previousStagingDeployCashData = shouldCreateNewStagingDeployCash - ? GithubUtils.getStagingDeployCashData(stagingDeployResponse.data[0]) - : GithubUtils.getStagingDeployCashData(stagingDeployResponse.data[1]); - - console.log('Found tag of previous StagingDeployCash:', previousStagingDeployCashData.tag); - - // Find the list of PRs merged between the last StagingDeployCash and the new version - if (shouldCreateNewStagingDeployCash) { - return GitUtils.getPullRequestsMergedBetween(previousStagingDeployCashData.tag, newTag); - } - - currentStagingDeployCashData = GithubUtils.getStagingDeployCashData(stagingDeployResponse.data[0]); - console.log('Parsed the following data from the current StagingDeployCash:', currentStagingDeployCashData); - - // If we aren't sent a tag, then use the existing tag - newTag = newTag || currentStagingDeployCashData.tag; - - return GitUtils.getPullRequestsMergedBetween(previousStagingDeployCashData.tag, newTag); - }) - .then((mergedPRs) => { - console.log(`The following PRs have been merged between the previous StagingDeployCash (${previousStagingDeployCashData.tag}) and new version (${newVersion}):`, mergedPRs); - - if (shouldCreateNewStagingDeployCash) { - return GithubUtils.generateStagingDeployCashBody(newTag, _.map(mergedPRs, GithubUtils.getPullRequestURLFromNumber)); - } - - const didVersionChange = newVersion ? newVersion !== currentStagingDeployCashData.tag : false; - - // Generate the PR list, preserving the previous state of `isVerified` for existing PRs - const PRList = _.sortBy( - _.unique( - _.union( - currentStagingDeployCashData.PRList, - _.map(mergedPRs, (number) => ({ - number: Number.parseInt(number, 10), - url: GithubUtils.getPullRequestURLFromNumber(number), + }); - // Since this is the second argument to _.union, - // it will appear later in the array than any duplicate. - // Since it is later in the array, it will be truncated by _.unique, - // and the original value of isVerified will be preserved. - isVerified: false, - })), - ), - false, - (item) => item.number, - ), - 'number', + // Look at the state of the most recent StagingDeployCash, + // if it is open then we'll update the existing one, otherwise, we'll create a new one. + const mostRecentChecklist = recentDeployChecklists[0]; + const shouldCreateNewDeployChecklist = mostRecentChecklist.state !== 'open'; + const previousChecklist = shouldCreateNewDeployChecklist ? mostRecentChecklist : recentDeployChecklists[1]; + if (shouldCreateNewDeployChecklist) { + console.log('Latest StagingDeployCash is closed, creating a new one.', mostRecentChecklist); + } else { + console.log('Latest StagingDeployCash is open, updating it instead of creating a new one.', 'Current:', mostRecentChecklist, 'Previous:', previousChecklist); + } + + // Parse the data from the previous and current checklists into the format used to generate the checklist + const previousChecklistData = GithubUtils.getStagingDeployCashData(previousChecklist); + const currentChecklistData = shouldCreateNewDeployChecklist ? {} : GithubUtils.getStagingDeployCashData(mostRecentChecklist); + + // Find the list of PRs merged between the current checklist and the previous checklist + // Note that any time we're creating a new checklist we MUST have `NPM_VERSION` passed in as an input + const newTag = newVersion || _.get(currentChecklistData, 'tag'); + const mergedPRs = await GitUtils.getPullRequestsMergedBetween(previousChecklistData.tag, newTag); + + // Next, we generate the checklist body + let checklistBody = ''; + if (shouldCreateNewDeployChecklist) { + checklistBody = await GithubUtils.generateStagingDeployCashBody(newTag, _.map(mergedPRs, GithubUtils.getPullRequestURLFromNumber)); + } else { + // Generate the updated PR list, preserving the previous state of `isVerified` for existing PRs + const PRList = _.reduce( + mergedPRs, + (memo, prNum) => { + const indexOfPRInCurrentChecklist = _.findIndex(currentChecklistData.PRList, (pr) => pr.number === prNum); + const isVerified = indexOfPRInCurrentChecklist >= 0 ? currentChecklistData.PRList[indexOfPRInCurrentChecklist].isVerified : false; + memo.push({ + number: prNum, + url: GithubUtils.getPullRequestURLFromNumber(prNum), + isVerified, + }); + return memo; + }, + [], ); // Generate the deploy blocker list, preserving the previous state of `isResolved` - const deployBlockers = _.sortBy( - _.unique(_.union(currentStagingDeployCashData.deployBlockers, newDeployBlockers), false, (item) => item.number), - 'number', + const {data: openDeployBlockers} = await GithubUtils.octokit.issues.listForRepo({ + log: console, + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + labels: CONST.LABELS.DEPLOY_BLOCKER, + }); + + // First, make sure we include all current deploy blockers + const deployBlockers = _.reduce( + openDeployBlockers, + (memo, deployBlocker) => { + const {html_url, number} = deployBlocker; + const indexInCurrentChecklist = _.findIndex(currentChecklistData.deployBlockers, (item) => item.number === number); + const isResolved = indexInCurrentChecklist >= 0 ? currentChecklistData.deployBlockers[indexInCurrentChecklist].isResolved : false; + memo.push({ + number, + url: html_url, + isResolved, + }); + return memo; + }, + [], ); - // Get the internalQA PR list, preserving the previous state of `isResolved` - const internalQAPRList = _.sortBy(currentStagingDeployCashData.internalQAPRList, 'number'); + // Then make sure we include any demoted or closed blockers as well, and just check them off automatically + for (const deployBlocker of currentChecklistData.deployBlockers) { + const isResolved = _.findIndex(deployBlockers, (openBlocker) => openBlocker.number === deployBlocker.number) < 0; + deployBlockers.push({ + ...deployBlocker, + isResolved, + }); + } - return GithubUtils.generateStagingDeployCashBody( + const didVersionChange = newVersion ? newVersion !== currentChecklistData.tag : false; + checklistBody = await GithubUtils.generateStagingDeployCashBody( newTag, _.pluck(PRList, 'url'), _.pluck(_.where(PRList, {isVerified: true}), 'url'), _.pluck(deployBlockers, 'url'), _.pluck(_.where(deployBlockers, {isResolved: true}), 'url'), - _.pluck(_.where(internalQAPRList, {isResolved: true}), 'url'), - didVersionChange ? false : currentStagingDeployCashData.isTimingDashboardChecked, - didVersionChange ? false : currentStagingDeployCashData.isFirebaseChecked, - didVersionChange ? false : currentStagingDeployCashData.isGHStatusChecked, + _.pluck(_.where(currentChecklistData.internalQAPRList, {isResolved: true}), 'url'), + didVersionChange ? false : currentChecklistData.isTimingDashboardChecked, + didVersionChange ? false : currentChecklistData.isFirebaseChecked, + didVersionChange ? false : currentChecklistData.isGHStatusChecked, ); - }) - .then((body) => { - const defaultPayload = { - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - body, - }; + } - if (shouldCreateNewStagingDeployCash) { - return GithubUtils.octokit.issues.create({ - ...defaultPayload, - title: `Deploy Checklist: New Expensify ${moment().format('YYYY-MM-DD')}`, - labels: [CONST.LABELS.STAGING_DEPLOY], - assignees: [CONST.APPLAUSE_BOT], - }); - } + // Finally, create or update the checklist + const defaultPayload = { + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + body: checklistBody, + }; - return GithubUtils.octokit.issues.update({ + if (shouldCreateNewDeployChecklist) { + const {data: newChecklist} = await GithubUtils.octokit.issues.create({ ...defaultPayload, - issue_number: currentStagingDeployCashData.number, + title: `Deploy Checklist: New Expensify ${moment().format('YYYY-MM-DD')}`, + labels: [CONST.LABELS.STAGING_DEPLOY], + assignees: [CONST.APPLAUSE_BOT], }); - }) - .then(({data}) => { - // eslint-disable-next-line max-len - console.log(`Successfully ${shouldCreateNewStagingDeployCash ? 'created new' : 'updated'} StagingDeployCash! 🎉 ${data.html_url}`); - return data; - }) - .catch((err) => { - console.error('An unknown error occurred!', err); - core.setFailed(err); + console.log(`Successfully created new StagingDeployCash! 🎉 ${newChecklist.html_url}`); + return newChecklist; + } + + const {data: updatedChecklist} = await GithubUtils.octokit.issues.update({ + ...defaultPayload, + issue_number: currentChecklistData.number, }); -}; + console.log(`Successfully updated StagingDeployCash! 🎉 ${updatedChecklist.html_url}`); + return updatedChecklist; + } catch (err) { + console.error('An unknown error occurred!', err); + core.setFailed(err); + } +} if (require.main === module) { run(); diff --git a/.github/actions/javascript/createOrUpdateStagingDeploy/index.js b/.github/actions/javascript/createOrUpdateStagingDeploy/index.js index 1b2e81fc244e..561b8e61bc21 100644 --- a/.github/actions/javascript/createOrUpdateStagingDeploy/index.js +++ b/.github/actions/javascript/createOrUpdateStagingDeploy/index.js @@ -8,174 +8,145 @@ module.exports = /***/ 3926: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const core = __nccwpck_require__(2186); const moment = __nccwpck_require__(9623); const CONST = __nccwpck_require__(4097); const GithubUtils = __nccwpck_require__(7999); const GitUtils = __nccwpck_require__(669); -const run = function () { +async function run() { const newVersion = core.getInput('NPM_VERSION'); console.log('New version found from action input:', newVersion); - let shouldCreateNewStagingDeployCash = false; - let newTag = newVersion; - let newDeployBlockers = []; - let previousStagingDeployCashData = {}; - let currentStagingDeployCashData = null; - - // Start by fetching the list of recent StagingDeployCash issues, along with the list of open deploy blockers - return Promise.all([ - GithubUtils.octokit.issues.listForRepo({ + try { + // Start by fetching the list of recent StagingDeployCash issues, along with the list of open deploy blockers + const {data: recentDeployChecklists} = await GithubUtils.octokit.issues.listForRepo({ log: console, owner: CONST.GITHUB_OWNER, repo: CONST.APP_REPO, labels: CONST.LABELS.STAGING_DEPLOY, state: 'all', - }), - GithubUtils.octokit.issues.listForRepo({ - log: console, - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - labels: CONST.LABELS.DEPLOY_BLOCKER, - }), - ]) - .then(([stagingDeployResponse, deployBlockerResponse]) => { - if (!stagingDeployResponse || !stagingDeployResponse.data || _.isEmpty(stagingDeployResponse.data)) { - console.error('Failed fetching StagingDeployCash issues from Github!', stagingDeployResponse); - throw new Error('Failed fetching StagingDeployCash issues from Github'); - } - - if (!deployBlockerResponse || !deployBlockerResponse.data) { - console.log('Failed fetching DeployBlockerCash issues from Github, continuing...'); - } - - newDeployBlockers = _.map(deployBlockerResponse.data, ({html_url}) => ({ - url: html_url, - number: GithubUtils.getIssueOrPullRequestNumberFromURL(html_url), - isResolved: false, - })); - - // Look at the state of the most recent StagingDeployCash, - // if it is open then we'll update the existing one, otherwise, we'll create a new one. - shouldCreateNewStagingDeployCash = Boolean(stagingDeployResponse.data[0].state !== 'open'); - if (shouldCreateNewStagingDeployCash) { - console.log('Latest StagingDeployCash is closed, creating a new one.', stagingDeployResponse.data[0]); - } else { - console.log( - 'Latest StagingDeployCash is open, updating it instead of creating a new one.', - 'Current:', - stagingDeployResponse.data[0], - 'Previous:', - stagingDeployResponse.data[1], - ); - } - - // Parse the data from the previous StagingDeployCash - // (newest if there are none open, otherwise second-newest) - previousStagingDeployCashData = shouldCreateNewStagingDeployCash - ? GithubUtils.getStagingDeployCashData(stagingDeployResponse.data[0]) - : GithubUtils.getStagingDeployCashData(stagingDeployResponse.data[1]); - - console.log('Found tag of previous StagingDeployCash:', previousStagingDeployCashData.tag); - - // Find the list of PRs merged between the last StagingDeployCash and the new version - if (shouldCreateNewStagingDeployCash) { - return GitUtils.getPullRequestsMergedBetween(previousStagingDeployCashData.tag, newTag); - } - - currentStagingDeployCashData = GithubUtils.getStagingDeployCashData(stagingDeployResponse.data[0]); - console.log('Parsed the following data from the current StagingDeployCash:', currentStagingDeployCashData); + }); - // If we aren't sent a tag, then use the existing tag - newTag = newTag || currentStagingDeployCashData.tag; + // Look at the state of the most recent StagingDeployCash, + // if it is open then we'll update the existing one, otherwise, we'll create a new one. + const mostRecentChecklist = recentDeployChecklists[0]; + const shouldCreateNewDeployChecklist = mostRecentChecklist.state !== 'open'; + const previousChecklist = shouldCreateNewDeployChecklist ? mostRecentChecklist : recentDeployChecklists[1]; + if (shouldCreateNewDeployChecklist) { + console.log('Latest StagingDeployCash is closed, creating a new one.', mostRecentChecklist); + } else { + console.log('Latest StagingDeployCash is open, updating it instead of creating a new one.', 'Current:', mostRecentChecklist, 'Previous:', previousChecklist); + } - return GitUtils.getPullRequestsMergedBetween(previousStagingDeployCashData.tag, newTag); - }) - .then((mergedPRs) => { - console.log(`The following PRs have been merged between the previous StagingDeployCash (${previousStagingDeployCashData.tag}) and new version (${newVersion}):`, mergedPRs); + // Parse the data from the previous and current checklists into the format used to generate the checklist + const previousChecklistData = GithubUtils.getStagingDeployCashData(previousChecklist); + const currentChecklistData = shouldCreateNewDeployChecklist ? {} : GithubUtils.getStagingDeployCashData(mostRecentChecklist); - if (shouldCreateNewStagingDeployCash) { - return GithubUtils.generateStagingDeployCashBody(newTag, _.map(mergedPRs, GithubUtils.getPullRequestURLFromNumber)); - } + // Find the list of PRs merged between the current checklist and the previous checklist + // Note that any time we're creating a new checklist we MUST have `NPM_VERSION` passed in as an input + const newTag = newVersion || _.get(currentChecklistData, 'tag'); + const mergedPRs = await GitUtils.getPullRequestsMergedBetween(previousChecklistData.tag, newTag); - const didVersionChange = newVersion ? newVersion !== currentStagingDeployCashData.tag : false; - - // Generate the PR list, preserving the previous state of `isVerified` for existing PRs - const PRList = _.sortBy( - _.unique( - _.union( - currentStagingDeployCashData.PRList, - _.map(mergedPRs, (number) => ({ - number: Number.parseInt(number, 10), - url: GithubUtils.getPullRequestURLFromNumber(number), - - // Since this is the second argument to _.union, - // it will appear later in the array than any duplicate. - // Since it is later in the array, it will be truncated by _.unique, - // and the original value of isVerified will be preserved. - isVerified: false, - })), - ), - false, - (item) => item.number, - ), - 'number', + // Next, we generate the checklist body + let checklistBody = ''; + if (shouldCreateNewDeployChecklist) { + checklistBody = await GithubUtils.generateStagingDeployCashBody(newTag, _.map(mergedPRs, GithubUtils.getPullRequestURLFromNumber)); + } else { + // Generate the updated PR list, preserving the previous state of `isVerified` for existing PRs + const PRList = _.reduce( + mergedPRs, + (memo, prNum) => { + const indexOfPRInCurrentChecklist = _.findIndex(currentChecklistData.PRList, (pr) => pr.number === prNum); + const isVerified = indexOfPRInCurrentChecklist >= 0 ? currentChecklistData.PRList[indexOfPRInCurrentChecklist].isVerified : false; + memo.push({ + number: prNum, + url: GithubUtils.getPullRequestURLFromNumber(prNum), + isVerified, + }); + return memo; + }, + [], ); // Generate the deploy blocker list, preserving the previous state of `isResolved` - const deployBlockers = _.sortBy( - _.unique(_.union(currentStagingDeployCashData.deployBlockers, newDeployBlockers), false, (item) => item.number), - 'number', + const {data: openDeployBlockers} = await GithubUtils.octokit.issues.listForRepo({ + log: console, + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + labels: CONST.LABELS.DEPLOY_BLOCKER, + }); + + // First, make sure we include all current deploy blockers + const deployBlockers = _.reduce( + openDeployBlockers, + (memo, deployBlocker) => { + const {html_url, number} = deployBlocker; + const indexInCurrentChecklist = _.findIndex(currentChecklistData.deployBlockers, (item) => item.number === number); + const isResolved = indexInCurrentChecklist >= 0 ? currentChecklistData.deployBlockers[indexInCurrentChecklist].isResolved : false; + memo.push({ + number, + url: html_url, + isResolved, + }); + return memo; + }, + [], ); - // Get the internalQA PR list, preserving the previous state of `isResolved` - const internalQAPRList = _.sortBy(currentStagingDeployCashData.internalQAPRList, 'number'); + // Then make sure we include any demoted or closed blockers as well, and just check them off automatically + for (const deployBlocker of currentChecklistData.deployBlockers) { + const isResolved = _.findIndex(deployBlockers, (openBlocker) => openBlocker.number === deployBlocker.number) < 0; + deployBlockers.push({ + ...deployBlocker, + isResolved, + }); + } - return GithubUtils.generateStagingDeployCashBody( + const didVersionChange = newVersion ? newVersion !== currentChecklistData.tag : false; + checklistBody = await GithubUtils.generateStagingDeployCashBody( newTag, _.pluck(PRList, 'url'), _.pluck(_.where(PRList, {isVerified: true}), 'url'), _.pluck(deployBlockers, 'url'), _.pluck(_.where(deployBlockers, {isResolved: true}), 'url'), - _.pluck(_.where(internalQAPRList, {isResolved: true}), 'url'), - didVersionChange ? false : currentStagingDeployCashData.isTimingDashboardChecked, - didVersionChange ? false : currentStagingDeployCashData.isFirebaseChecked, - didVersionChange ? false : currentStagingDeployCashData.isGHStatusChecked, + _.pluck(_.where(currentChecklistData.internalQAPRList, {isResolved: true}), 'url'), + didVersionChange ? false : currentChecklistData.isTimingDashboardChecked, + didVersionChange ? false : currentChecklistData.isFirebaseChecked, + didVersionChange ? false : currentChecklistData.isGHStatusChecked, ); - }) - .then((body) => { - const defaultPayload = { - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - body, - }; + } - if (shouldCreateNewStagingDeployCash) { - return GithubUtils.octokit.issues.create({ - ...defaultPayload, - title: `Deploy Checklist: New Expensify ${moment().format('YYYY-MM-DD')}`, - labels: [CONST.LABELS.STAGING_DEPLOY], - assignees: [CONST.APPLAUSE_BOT], - }); - } + // Finally, create or update the checklist + const defaultPayload = { + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + body: checklistBody, + }; - return GithubUtils.octokit.issues.update({ + if (shouldCreateNewDeployChecklist) { + const {data: newChecklist} = await GithubUtils.octokit.issues.create({ ...defaultPayload, - issue_number: currentStagingDeployCashData.number, + title: `Deploy Checklist: New Expensify ${moment().format('YYYY-MM-DD')}`, + labels: [CONST.LABELS.STAGING_DEPLOY], + assignees: [CONST.APPLAUSE_BOT], }); - }) - .then(({data}) => { - // eslint-disable-next-line max-len - console.log(`Successfully ${shouldCreateNewStagingDeployCash ? 'created new' : 'updated'} StagingDeployCash! 🎉 ${data.html_url}`); - return data; - }) - .catch((err) => { - console.error('An unknown error occurred!', err); - core.setFailed(err); + console.log(`Successfully created new StagingDeployCash! 🎉 ${newChecklist.html_url}`); + return newChecklist; + } + + const {data: updatedChecklist} = await GithubUtils.octokit.issues.update({ + ...defaultPayload, + issue_number: currentChecklistData.number, }); -}; + console.log(`Successfully updated StagingDeployCash! 🎉 ${updatedChecklist.html_url}`); + return updatedChecklist; + } catch (err) { + console.error('An unknown error occurred!', err); + core.setFailed(err); + } +} if (require.main === require.cache[eval('__filename')]) { run(); @@ -212,7 +183,7 @@ module.exports = CONST; /***/ 669: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const {spawn, execSync} = __nccwpck_require__(3129); const CONST = __nccwpck_require__(4097); const sanitizeStringForJSONParse = __nccwpck_require__(9338); @@ -236,10 +207,7 @@ function fetchTag(tag) { console.log(`Running command: ${command}`); execSync(command); } catch (e) { - // This can happen if the tag was only created locally but does not exist in the remote. In this case, we'll fetch history of the staging branch instead - const command = `git fetch origin staging --no-tags --shallow-exclude=${previousPatchVersion}`; - console.log(`Running command: ${command}`); - execSync(command); + console.error(e); } } @@ -293,7 +261,7 @@ function getCommitHistoryAsJSON(fromTag, toTag) { * Parse merged PRs, excluding those from irrelevant branches. * * @param {Array>} commits - * @returns {Array} + * @returns {Array} */ function getValidMergedPRs(commits) { const mergedPRs = new Set(); @@ -308,7 +276,7 @@ function getValidMergedPRs(commits) { return; } - const pr = match[1]; + const pr = Number.parseInt(match[1], 10); if (mergedPRs.has(pr)) { // If a PR shows up in the log twice, that means that the PR was deployed in the previous checklist. // That also means that we don't want to include it in the current checklist, so we remove it now. @@ -327,16 +295,17 @@ function getValidMergedPRs(commits) { * * @param {String} fromTag * @param {String} toTag - * @returns {Promise>} – Pull request numbers + * @returns {Promise>} – Pull request numbers */ function getPullRequestsMergedBetween(fromTag, toTag) { + console.log(`Looking for commits made between ${fromTag} and ${toTag}...`); return getCommitHistoryAsJSON(fromTag, toTag).then((commitList) => { console.log(`Commits made between ${fromTag} and ${toTag}:`, commitList); // Find which commit messages correspond to merged PR's const pullRequestNumbers = getValidMergedPRs(commitList); console.log(`List of pull requests merged between ${fromTag} and ${toTag}`, pullRequestNumbers); - return pullRequestNumbers; + return _.map(pullRequestNumbers, (prNum) => Number.parseInt(prNum, 10)); }); } @@ -351,7 +320,7 @@ module.exports = { /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -785,7 +754,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -909,7 +878,7 @@ module.exports = function (inputString) { /***/ 8007: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const SEMANTIC_VERSION_LEVELS = { MAJOR: 'MAJOR', @@ -22193,874 +22162,872 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); + + +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); } -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} - return parseInt(uuid.substr(14, 1), 16); +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } } -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ }), -/***/ 2940: -/***/ ((module) => { - -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; +} - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; } + return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -/***/ }), - -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { - -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; - -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; - -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +_.VERSION = VERSION; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} -// Is a given value equal to null? -function isNull(obj) { - return obj === null; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); -var isArrayBuffer = tagTester('ArrayBuffer'); -var isFunction = tagTester('Function'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); } -var isFunction$1 = isFunction; +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -var hasObjectTag = tagTester('Object'); + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var isDataView = tagTester('DataView'); - -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); -} - -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); - -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); - -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); -} - -var isArguments = tagTester('Arguments'); - -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); - -var isArguments$1 = isArguments; - -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} - -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; - }; -} - -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; - } -} - -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; -} - -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); - -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); - -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); -} - -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); - -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); - -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); - } - }; -} - -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; - - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} - -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} - -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} - -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; -} - -_$1.VERSION = VERSION; - -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; - -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; - -_$1.prototype.toString = function() { - return String(this._wrapped); -}; - -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); -} - -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; - -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } // Add the first object to the stack of traversed objects. aStack.push(a); @@ -23084,7 +23051,7 @@ function deepEq(a, b, aStack, bStack) { while (length--) { // Deep compare each member key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; } } // Remove the first object from the stack of traversed objects. @@ -23098,6 +23065,11 @@ function isEqual(a, b) { return eq(a, b); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js + + + + // Retrieve all the enumerable property names of an object. function allKeys(obj) { if (!isObject(obj)) return []; @@ -23108,24 +23080,29 @@ function allKeys(obj) { return keys; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js + + + + // Since the regular `Object.prototype.toString` type tests don't work for // some types in IE 11, we use a fingerprinting heuristic instead, based // on the methods. It's not great, but it's the best we got. // The fingerprint method lists are defined below. function ie11fingerprint(methods) { - var length = getLength(methods); + var length = _getLength(methods); return function(obj) { if (obj == null) return false; // `Map`, `WeakMap` and `Set` have no enumerable keys. var keys = allKeys(obj); - if (getLength(keys)) return false; + if (_getLength(keys)) return false; for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; + if (!modules_isFunction(obj[methods[i]])) return false; } // If we are testing against `WeakMap`, we need to ensure that // `obj` doesn't have a `forEach` method in order to distinguish // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } @@ -23142,25 +23119,49 @@ var mapMethods = commonInit.concat(forEachName, mapTail), weakMapMethods = commonInit.concat(mapTail), setMethods = ['add'].concat(commonInit, forEachName, hasName); -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); -var isWeakSet = tagTester('WeakSet'); -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; + } return values; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + // Convert an object into a list of `[key, value]` pairs. // The opposite of `_.object` with one argument. function pairs(obj) { @@ -23173,6 +23174,9 @@ function pairs(obj) { return pairs; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js + + // Invert the keys and values of an object. The values must be serializable. function invert(obj) { var result = {}; @@ -23183,15 +23187,19 @@ function invert(obj) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js + + // Return a sorted list of the function names available on the object. function functions(obj) { var names = []; for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); + if (modules_isFunction(obj[key])) names.push(key); } return names.sort(); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js // An internal function for creating assigner functions. function createAssigner(keysFunc, defaults) { return function(obj) { @@ -23211,16 +23219,32 @@ function createAssigner(keysFunc, defaults) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js + + + // Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); +/* harmony default export */ const extend = (createAssigner(allKeys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js + + // Assigns a given object with all the own properties in the passed-in // object(s). // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + // Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + // Create a naked function reference for surrogate-prototype-swapping. function ctor() { @@ -23238,6 +23262,10 @@ function baseCreate(prototype) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js + + + // Creates an object that inherits from the given prototype object. // If additional properties are provided then they will be added to the // created object. @@ -23247,12 +23275,18 @@ function create(prototype, props) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js + + + + // Create a (shallow-cloned) duplicate of an object. function clone(obj) { if (!isObject(obj)) return obj; return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -23261,19 +23295,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -23284,34 +23327,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -23321,15 +23378,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -23352,31 +23414,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -23391,9 +23475,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -23402,6 +23491,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -23410,6 +23502,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -23419,10 +23512,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -23440,32 +23537,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -23502,7 +23620,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -23556,7 +23674,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -23565,14 +23683,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -23580,11 +23702,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -23593,13 +23716,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -23611,6 +23741,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -23629,26 +23764,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -23656,12 +23807,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -23674,11 +23825,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -23686,31 +23842,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -23758,6 +23928,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -23796,13 +23970,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -23810,6 +23988,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -23823,6 +24002,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -23832,6 +24012,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -23845,9 +24026,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -23859,11 +24048,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -23872,18 +24065,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -23891,10 +24094,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -23906,7 +24114,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -23916,29 +24124,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -23946,7 +24177,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -23959,10 +24190,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -23972,12 +24208,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -23997,12 +24238,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -24014,15 +24265,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -24031,10 +24292,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -24043,20 +24309,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -24071,25 +24349,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -24109,12 +24401,18 @@ function max(obj, iteratee, context) { return result; } -// Return the minimum element (or element-based computation). -function min(obj, iteratee, context) { - var result = Infinity, lastComputed = Infinity, +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + +// Return the minimum element (or element-based computation). +function min(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -24134,6 +24432,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -24143,21 +24450,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -24169,11 +24483,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -24195,6 +24517,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -24208,53 +24534,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -24263,22 +24616,34 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + // Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in @@ -24287,521 +24652,951 @@ function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/getDeployPullRequestList/index.js b/.github/actions/javascript/getDeployPullRequestList/index.js index 56541aa31b27..e42f97508bc5 100644 --- a/.github/actions/javascript/getDeployPullRequestList/index.js +++ b/.github/actions/javascript/getDeployPullRequestList/index.js @@ -8,7 +8,7 @@ module.exports = /***/ 5847: /***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const core = __nccwpck_require__(2186); const github = __nccwpck_require__(5438); const ActionUtils = __nccwpck_require__(970); @@ -146,7 +146,7 @@ module.exports = CONST; /***/ 669: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const {spawn, execSync} = __nccwpck_require__(3129); const CONST = __nccwpck_require__(4097); const sanitizeStringForJSONParse = __nccwpck_require__(9338); @@ -170,10 +170,7 @@ function fetchTag(tag) { console.log(`Running command: ${command}`); execSync(command); } catch (e) { - // This can happen if the tag was only created locally but does not exist in the remote. In this case, we'll fetch history of the staging branch instead - const command = `git fetch origin staging --no-tags --shallow-exclude=${previousPatchVersion}`; - console.log(`Running command: ${command}`); - execSync(command); + console.error(e); } } @@ -227,7 +224,7 @@ function getCommitHistoryAsJSON(fromTag, toTag) { * Parse merged PRs, excluding those from irrelevant branches. * * @param {Array>} commits - * @returns {Array} + * @returns {Array} */ function getValidMergedPRs(commits) { const mergedPRs = new Set(); @@ -242,7 +239,7 @@ function getValidMergedPRs(commits) { return; } - const pr = match[1]; + const pr = Number.parseInt(match[1], 10); if (mergedPRs.has(pr)) { // If a PR shows up in the log twice, that means that the PR was deployed in the previous checklist. // That also means that we don't want to include it in the current checklist, so we remove it now. @@ -261,16 +258,17 @@ function getValidMergedPRs(commits) { * * @param {String} fromTag * @param {String} toTag - * @returns {Promise>} – Pull request numbers + * @returns {Promise>} – Pull request numbers */ function getPullRequestsMergedBetween(fromTag, toTag) { + console.log(`Looking for commits made between ${fromTag} and ${toTag}...`); return getCommitHistoryAsJSON(fromTag, toTag).then((commitList) => { console.log(`Commits made between ${fromTag} and ${toTag}:`, commitList); // Find which commit messages correspond to merged PR's const pullRequestNumbers = getValidMergedPRs(commitList); console.log(`List of pull requests merged between ${fromTag} and ${toTag}`, pullRequestNumbers); - return pullRequestNumbers; + return _.map(pullRequestNumbers, (prNum) => Number.parseInt(prNum, 10)); }); } @@ -285,7 +283,7 @@ module.exports = { /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -719,7 +717,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -843,7 +841,7 @@ module.exports = function (inputString) { /***/ 8007: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const SEMANTIC_VERSION_LEVELS = { MAJOR: 'MAJOR', @@ -16479,1143 +16477,1236 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); + +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; } -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ }), -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; +} - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; } + return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -/***/ }), - -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -Object.defineProperty(exports, "__esModule", ({ value: true })); +_.VERSION = VERSION; -// Current version. -var VERSION = '1.13.4'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); +} -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; -} -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isDate = tagTester('Date'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isRegExp = tagTester('RegExp'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -var isError = tagTester('Error'); + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isSymbol = tagTester('Symbol'); + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var isArrayBuffer = tagTester('ArrayBuffer'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -var isFunction = tagTester('Function'); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; } -var isFunction$1 = isFunction; - -var hasObjectTag = tagTester('Object'); - -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); +} -var isDataView = tagTester('DataView'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); -} -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} - -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js + + + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; } -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js + + + +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -_$1.VERSION = VERSION; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js +// Invokes `interceptor` with the `obj` and then returns `obj`. +// The primary purpose of this method is to "tap into" a method chain, in +// order to perform operations on intermediate results within the chain. +function tap(obj, interceptor) { + interceptor(obj); + return obj; +} -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. +// Normalize a (deep) property `path` to array. +// Like `_.iteratee`, this function can be customized. +function toPath(path) { + return isArray(path) ? path : [path]; +} +_.toPath = toPath; - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); +// Internal wrapper for `_.toPath` to enable minification. +// Similar to `cb` for `_.iteratee`. +function _toPath_toPath(path) { + return _.toPath(path); } -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js +// Internal function to obtain a nested property in `obj` along `path`. +function deepGet(obj, path) { + var length = path.length; + for (var i = 0; i < length; i++) { + if (obj == null) return void 0; + obj = obj[path[i]]; + } + return length ? obj : void 0; } -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); +// Get the value of the (deep) property on `path` from `object`. +// If any property in `path` does not exist or if the value is +// `undefined`, return `defaultValue` instead. +// The `path` is normalized through `_.toPath`. +function get(object, path, defaultValue) { + var value = deepGet(object, _toPath_toPath(path)); + return isUndefined(value) ? defaultValue : value; +} -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js -var isWeakSet = tagTester('WeakSet'); -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); +// Shortcut function for checking if an object has a given property directly on +// itself (in other words, not on a prototype). Unlike the internal `has` +// function, this public version can also traverse nested properties. +function has_has(obj, path) { + path = _toPath_toPath(path); + var length = path.length; for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; + var key = path[i]; + if (!has(obj, key)) return false; + obj = obj[key]; } - return pairs; + return !!length; } -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js +// Keep the identity function around for default iteratees. +function identity(value) { + return value; } -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { + + +// Returns a predicate for checking whether an object has a given set of +// `key:value` pairs. +function matcher(attrs) { + attrs = extendOwn({}, attrs); return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; + return isMatch(obj, attrs); }; } -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); -} - -// Invokes `interceptor` with the `obj` and then returns `obj`. -// The primary purpose of this method is to "tap into" a method chain, in -// order to perform operations on intermediate results within the chain. -function tap(obj, interceptor) { - interceptor(obj); - return obj; -} - -// Normalize a (deep) property `path` to array. -// Like `_.iteratee`, this function can be customized. -function toPath$1(path) { - return isArray(path) ? path : [path]; -} -_$1.toPath = toPath$1; - -// Internal wrapper for `_.toPath` to enable minification. -// Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); -} - -// Internal function to obtain a nested property in `obj` along `path`. -function deepGet(obj, path) { - var length = path.length; - for (var i = 0; i < length; i++) { - if (obj == null) return void 0; - obj = obj[path[i]]; - } - return length ? obj : void 0; -} - -// Get the value of the (deep) property on `path` from `object`. -// If any property in `path` does not exist or if the value is -// `undefined`, return `defaultValue` instead. -// The `path` is normalized through `_.toPath`. -function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); - return isUndefined(value) ? defaultValue : value; -} - -// Shortcut function for checking if an object has a given property directly on -// itself (in other words, not on a prototype). Unlike the internal `has` -// function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); - var length = path.length; - for (var i = 0; i < length; i++) { - var key = path[i]; - if (!has$1(obj, key)) return false; - obj = obj[key]; - } - return !!length; -} - -// Keep the identity function around for default iteratees. -function identity(value) { - return value; -} - -// Returns a predicate for checking whether an object has a given set of -// `key:value` pairs. -function matcher(attrs) { - attrs = extendOwn({}, attrs); - return function(obj) { - return isMatch(obj, attrs); - }; -} - -// Creates a function that, when passed an object, will traverse that object’s -// properties down the given `path`, specified as an array of keys or indices. -function property(path) { - path = toPath(path); - return function(obj) { - return deepGet(obj, path); - }; +// Creates a function that, when passed an object, will traverse that object’s +// properties down the given `path`, specified as an array of keys or indices. +function property(path) { + path = _toPath_toPath(path); + return function(obj) { + return deepGet(obj, path); + }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17638,31 +17729,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17677,9 +17790,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17688,6 +17806,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17696,6 +17817,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17705,10 +17827,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17726,32 +17852,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17788,7 +17935,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17842,7 +17989,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17851,14 +17998,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17866,11 +18017,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17879,13 +18031,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17897,6 +18056,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17915,26 +18079,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17942,12 +18122,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17960,11 +18140,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17972,31 +18157,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -18044,6 +18243,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -18082,13 +18285,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -18096,6 +18303,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -18109,6 +18317,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -18118,6 +18327,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -18131,9 +18341,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -18145,11 +18363,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -18158,18 +18380,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -18177,10 +18409,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -18192,7 +18429,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -18202,29 +18439,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -18232,7 +18492,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -18245,10 +18505,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -18258,12 +18523,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -18283,12 +18553,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -18300,15 +18580,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -18317,10 +18607,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -18329,20 +18624,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -18357,25 +18664,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } -// Return the maximum element (or element-based computation). -function max(obj, iteratee, context) { - var result = -Infinity, lastComputed = -Infinity, - value, computed; +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + +// Return the maximum element (or element-based computation). +function max(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -18395,12 +18716,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18420,6 +18747,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18429,21 +18765,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18455,11 +18798,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18481,6 +18832,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18494,53 +18849,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18549,22 +18931,34 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + // Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in @@ -18573,521 +18967,951 @@ function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/getPreviousVersion/index.js b/.github/actions/javascript/getPreviousVersion/index.js index 5498aa3996d7..37db08db93e9 100644 --- a/.github/actions/javascript/getPreviousVersion/index.js +++ b/.github/actions/javascript/getPreviousVersion/index.js @@ -10,7 +10,7 @@ module.exports = const {readFileSync} = __nccwpck_require__(747); const core = __nccwpck_require__(186); -const _ = __nccwpck_require__(571); +const _ = __nccwpck_require__(947); const versionUpdater = __nccwpck_require__(7); const semverLevel = core.getInput('SEMVER_LEVEL', {require: true}); @@ -28,7 +28,7 @@ core.setOutput('PREVIOUS_VERSION', previousVersion); /***/ 7: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(571); +const _ = __nccwpck_require__(947); const SEMANTIC_VERSION_LEVELS = { MAJOR: 'MAJOR', @@ -2214,8 +2214,8 @@ exports.debug = debug; // for test /***/ }), -/***/ 521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +/***/ 947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; // ESM COMPAT FLAG @@ -2223,636 +2223,672 @@ __nccwpck_require__.r(__webpack_exports__); // EXPORTS __nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip }); -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; - return rnds8Pool.slice(poolPtr, poolPtr += 16); -} -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); -} +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -const byteToHex = []; +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return uuid; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; +} -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; +} - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +/* harmony default export */ const isString = (tagTester('String')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +/* harmony default export */ const isNumber = (tagTester('Number')); - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isDate = (tagTester('Date')); - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +/* harmony default export */ const isError = (tagTester('Error')); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +/* harmony default export */ const isSymbol = (tagTester('Symbol')); - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - b[i++] = clockseq & 0xff; // `node` - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - return buf || esm_node_stringify(b); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +var isFunction = tagTester('Function'); - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ +/* harmony default export */ const modules_isFunction = (isFunction); - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - const bytes = []; - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } - return bytes; -} -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } - - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` - - - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; - - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +var isDataView = tagTester('DataView'); - return buf; - } +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); +} - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; -} -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return external_crypto_default().createHash('md5').update(bytes).digest(); +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js - +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +var isArguments = tagTester('Arguments'); -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +/* harmony default export */ const modules_isArguments = (isArguments); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); } -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return external_crypto_default().createHash('sha1').update(bytes).digest(); +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js - +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } - - return parseInt(uuid.substr(14, 1), 16); } -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js - +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js -/***/ }), -/***/ 641: -/***/ ((__unused_webpack_module, exports) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -Object.defineProperty(exports, "__esModule", ({ value: true })); -// Current version. -var VERSION = '1.13.4'; +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); } - args[startIndex] = rest; - return func.apply(this, args); }; } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} - -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} - -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} - -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } } -var isString = tagTester('String'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); - -var isSymbol = tagTester('Symbol'); - -var isArrayBuffer = tagTester('ArrayBuffer'); - -var isFunction = tagTester('Function'); - -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} - -var isFunction$1 = isFunction; - -var hasObjectTag = tagTester('Object'); - -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); - -var isDataView = tagTester('DataView'); - -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); -} - -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); - -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); - -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); -} - -var isArguments = tagTester('Arguments'); - -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); - -var isArguments$1 = isArguments; - -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} - -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; - }; -} - -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; - } -} - -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; -} - -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); - -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); - -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); -} - -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); - -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); - -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); - } - }; -} - -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; - - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} // Retrieve the names of an object's own properties. // Delegates to **ECMAScript 5**'s native `Object.keys`. @@ -2860,25 +2896,35 @@ function keys(obj) { if (!isObject(obj)) return []; if (nativeKeys) return nativeKeys(obj); var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); + for (var key in obj) if (has(obj, key)) keys.push(key); // Ahem, IE < 9. if (hasEnumBug) collectNonEnumProps(obj, keys); return keys; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js + + + + + + // Is a given array, string, or object empty? // An "empty" object has no enumerable own-properties. function isEmpty(obj) { if (obj == null) return true; // Skip the more expensive `toString`-based type checks if `obj` has no // `.length`. - var length = getLength(obj); + var length = _getLength(obj); if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) + isArray(obj) || isString(obj) || modules_isArguments(obj) )) return length === 0; - return getLength(keys(obj)) === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js + + // Returns whether an object has a given set of `key:value` pairs. function isMatch(object, attrs) { var _keys = keys(attrs), length = _keys.length; @@ -2891,40 +2937,58 @@ function isMatch(object, attrs) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js + + // If Underscore is called as a function, it returns a wrapped object that can // be used OO-style. This wrapper holds altered versions of all functions added // through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); this._wrapped = obj; } -_$1.VERSION = VERSION; +_.VERSION = VERSION; // Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { +_.prototype.value = function() { return this._wrapped; }; // Provide unwrapping proxies for some methods used in engine operations // such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -_$1.prototype.toString = function() { +_.prototype.toString = function() { return String(this._wrapped); }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js + + // Internal function to wrap or shallow-copy an ArrayBuffer, // typed array or DataView to a new view, reusing the buffer. function toBufferView(bufferSource) { return new Uint8Array( bufferSource.buffer || bufferSource, bufferSource.byteOffset || 0, - getByteLength(bufferSource) + _getByteLength(bufferSource) ); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js + + + + + + + + + + + // We use this string twice, so give it a name for minification. var tagDataView = '[object DataView]'; @@ -2946,14 +3010,14 @@ function eq(a, b, aStack, bStack) { // Internal recursive comparison function for `_.isEqual`. function deepEq(a, b, aStack, bStack) { // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; className = tagDataView; } switch (className) { @@ -2985,9 +3049,9 @@ function deepEq(a, b, aStack, bStack) { } var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; areArrays = true; } @@ -2997,8 +3061,8 @@ function deepEq(a, b, aStack, bStack) { // Objects with different constructors are not equivalent, but `Object`s or `Array`s // from different frames are. var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) && ('constructor' in a && 'constructor' in b)) { return false; } @@ -3039,7 +3103,7 @@ function deepEq(a, b, aStack, bStack) { while (length--) { // Deep compare each member key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; } } // Remove the first object from the stack of traversed objects. @@ -3053,6 +3117,11 @@ function isEqual(a, b) { return eq(a, b); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js + + + + // Retrieve all the enumerable property names of an object. function allKeys(obj) { if (!isObject(obj)) return []; @@ -3063,24 +3132,29 @@ function allKeys(obj) { return keys; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js + + + + // Since the regular `Object.prototype.toString` type tests don't work for // some types in IE 11, we use a fingerprinting heuristic instead, based // on the methods. It's not great, but it's the best we got. // The fingerprint method lists are defined below. function ie11fingerprint(methods) { - var length = getLength(methods); + var length = _getLength(methods); return function(obj) { if (obj == null) return false; // `Map`, `WeakMap` and `Set` have no enumerable keys. var keys = allKeys(obj); - if (getLength(keys)) return false; + if (_getLength(keys)) return false; for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; + if (!modules_isFunction(obj[methods[i]])) return false; } // If we are testing against `WeakMap`, we need to ensure that // `obj` doesn't have a `forEach` method in order to distinguish // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } @@ -3097,13 +3171,34 @@ var mapMethods = commonInit.concat(forEachName, mapTail), weakMapMethods = commonInit.concat(mapTail), setMethods = ['add'].concat(commonInit, forEachName, hasName); -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js -var isWeakSet = tagTester('WeakSet'); // Retrieve the values of an object's properties. function values(obj) { @@ -3116,6 +3211,9 @@ function values(obj) { return values; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + // Convert an object into a list of `[key, value]` pairs. // The opposite of `_.object` with one argument. function pairs(obj) { @@ -3128,6 +3226,9 @@ function pairs(obj) { return pairs; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js + + // Invert the keys and values of an object. The values must be serializable. function invert(obj) { var result = {}; @@ -3138,15 +3239,19 @@ function invert(obj) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js + + // Return a sorted list of the function names available on the object. function functions(obj) { var names = []; for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); + if (modules_isFunction(obj[key])) names.push(key); } return names.sort(); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js // An internal function for creating assigner functions. function createAssigner(keysFunc, defaults) { return function(obj) { @@ -3166,16 +3271,32 @@ function createAssigner(keysFunc, defaults) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js + + + // Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); +/* harmony default export */ const extend = (createAssigner(allKeys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js + + // Assigns a given object with all the own properties in the passed-in // object(s). // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + // Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + // Create a naked function reference for surrogate-prototype-swapping. function ctor() { @@ -3193,6 +3314,10 @@ function baseCreate(prototype) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js + + + // Creates an object that inherits from the given prototype object. // If additional properties are provided then they will be added to the // created object. @@ -3202,12 +3327,18 @@ function create(prototype, props) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js + + + + // Create a (shallow-cloned) duplicate of an object. function clone(obj) { if (!isObject(obj)) return obj; return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -3216,19 +3347,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -3239,34 +3379,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -3276,15 +3430,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -3307,31 +3466,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -3346,9 +3527,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -3357,6 +3543,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -3365,6 +3554,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -3374,10 +3564,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -3395,32 +3589,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + + +// Function for unescaping strings from HTML interpolation. +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js -// Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -3457,7 +3672,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -3511,7 +3726,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -3520,14 +3735,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -3535,11 +3754,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -3548,13 +3768,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -3566,6 +3793,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -3584,26 +3816,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -3611,12 +3859,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -3629,11 +3877,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -3641,31 +3894,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -3713,6 +3980,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -3751,13 +4022,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -3765,6 +4040,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -3778,6 +4054,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -3787,6 +4064,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -3800,9 +4078,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -3814,11 +4100,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -3827,18 +4117,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -3846,10 +4146,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -3861,7 +4166,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -3871,29 +4176,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -3901,7 +4229,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -3914,10 +4242,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -3927,12 +4260,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -3952,12 +4290,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -3969,15 +4317,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -3986,10 +4344,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -3998,20 +4361,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -4026,25 +4401,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -4064,12 +4453,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -4089,6 +4484,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -4098,21 +4502,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -4124,11 +4535,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -4150,6 +4569,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -4163,53 +4586,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -4218,22 +4668,34 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + // Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in @@ -4242,6 +4704,9 @@ function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + // Get the first element of an array. Passing **n** will return the first N // values in the array. The **guard** check allows it to work with `_.map`. function first(array, n, guard) { @@ -4250,6 +4715,9 @@ function first(array, n, guard) { return initial(array, array.length - n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + // Returns everything but the first entry of the `array`. Especially useful on // the `arguments` object. Passing an **n** will return the rest N values in the // `array`. @@ -4257,6 +4725,9 @@ function rest(array, n, guard) { return slice.call(array, n == null || guard ? 1 : n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + // Get the last element of an array. Passing **n** will return the last N // values in the array. function last(array, n, guard) { @@ -4265,30 +4736,52 @@ function last(array, n, guard) { return rest(array, Math.max(0, array.length - n)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + // Trim out all falsy values from an array. function compact(array) { return filter(array, Boolean); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + // Flatten out an array, either recursively (by default), or up to `depth`. // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); +function flatten_flatten(array, depth) { + return flatten(array, depth, false); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + // Take the difference between one array and a number of other arrays. // Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); return filter(array, function(value){ return !contains(rest, value); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + // Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { return difference(array, otherArrays); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + // Produce a duplicate-free version of the array. If the array has already // been sorted, you have the option of using a faster algorithm. @@ -4304,7 +4797,7 @@ function uniq(array, isSorted, iteratee, context) { if (iteratee != null) iteratee = cb(iteratee, context); var result = []; var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { + for (var i = 0, length = _getLength(array); i < length; i++) { var value = array[i], computed = iteratee ? iteratee(value, i, array) : value; if (isSorted && !iteratee) { @@ -4322,18 +4815,27 @@ function uniq(array, isSorted, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + // Produce an array that contains the union: each distinct element from all of // the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + // Produce an array that contains every item shared between all the // passed-in arrays. function intersection(array) { var result = []; var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { + for (var i = 0, length = _getLength(array); i < length; i++) { var item = array[i]; if (contains(result, item)) continue; var j; @@ -4345,10 +4847,15 @@ function intersection(array) { return result; } -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; var result = Array(length); for (var index = 0; index < length; index++) { @@ -4357,16 +4864,23 @@ function unzip(array) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + // Zip together multiple lists into a single array -- elements that share // an index go together. -var zip = restArguments(unzip); +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + // Converts lists into objects. Pass either a single array of `[key, value]` // pairs, or two parallel arrays of the same length -- one of keys, and one of // the corresponding values. Passing by pairs is the reverse of `_.pairs`. function object(list, values) { var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { + for (var i = 0, length = _getLength(list); i < length; i++) { if (values) { result[list[i]] = values[i]; } else { @@ -4376,6 +4890,7 @@ function object(list, values) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js // Generate an integer Array containing an arithmetic progression. A port of // the native Python `range()` function. See // [the Python documentation](https://docs.python.org/library/functions.html#range). @@ -4398,6 +4913,9 @@ function range(start, stop, step) { return range; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + // Chunk a single array into multiple arrays, each containing `count` or fewer // items. function chunk(array, count) { @@ -4410,28 +4928,44 @@ function chunk(array, count) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + // Helper function to continue chaining intermediate results. function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return instance._chain ? _(obj).chain() : obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + // Add your own custom functions to the Underscore object. function mixin(obj) { each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { + var func = _[name] = obj[name]; + _.prototype[name] = function() { var args = [this._wrapped]; push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); + return chainResult(this, func.apply(_, args)); }; }); - return _$1; + return _; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + // Add all mutator `Array` functions to the wrapper. each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { var method = ArrayProto[name]; - _$1.prototype[name] = function() { + _.prototype[name] = function() { var obj = this._wrapped; if (obj != null) { method.apply(obj, arguments); @@ -4446,317 +4980,609 @@ each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function( // Add all accessor `Array` functions to the wrapper. each(['concat', 'join', 'slice'], function(name) { var method = ArrayProto[name]; - _$1.prototype[name] = function() { + _.prototype[name] = function() { var obj = this._wrapped; if (obj != null) obj = method.apply(obj, arguments); return chainResult(this, obj); }; }); +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js // Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js // Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + // Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); +var index_default_ = mixin(modules_namespaceObject); // Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + /***/ }), -/***/ 571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + + + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js + + +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return external_crypto_default().createHash('md5').update(bytes).digest(); +} + +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js + + +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js + + + +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + + return buf; + } + + return esm_node_stringify(rnds); +} + +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js + + +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } + + return external_crypto_default().createHash('sha1').update(bytes).digest(); +} + +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + return parseInt(uuid.substr(14, 1), 16); +} + +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + + -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. -var underscoreNodeF = __nccwpck_require__(641); -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map /***/ }), diff --git a/.github/actions/javascript/getPullRequestDetails/index.js b/.github/actions/javascript/getPullRequestDetails/index.js index 28e0a65db686..ce57a3d15180 100644 --- a/.github/actions/javascript/getPullRequestDetails/index.js +++ b/.github/actions/javascript/getPullRequestDetails/index.js @@ -8,7 +8,7 @@ module.exports = /***/ 8306: /***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const core = __nccwpck_require__(2186); const CONST = __nccwpck_require__(4097); const ActionUtils = __nccwpck_require__(970); @@ -155,7 +155,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -589,7 +589,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16123,1066 +16123,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17191,19 +17256,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17214,34 +17288,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17251,15 +17339,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17282,31 +17375,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17321,9 +17436,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17332,6 +17452,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17340,6 +17463,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17349,10 +17473,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17370,32 +17498,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17432,7 +17581,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17486,7 +17635,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17495,14 +17644,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17510,11 +17663,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17523,13 +17677,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17541,6 +17702,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17559,26 +17725,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17586,12 +17768,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17604,11 +17786,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17616,31 +17803,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17688,6 +17889,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17726,13 +17931,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17740,6 +17949,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17753,6 +17963,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17762,6 +17973,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17775,9 +17987,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17789,11 +18009,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17802,18 +18026,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17821,10 +18055,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17836,7 +18075,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17846,29 +18085,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17876,7 +18138,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17889,10 +18151,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17902,12 +18169,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17927,12 +18199,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17944,15 +18226,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17961,10 +18253,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17973,20 +18270,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -18001,25 +18310,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -18039,12 +18362,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18064,6 +18393,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18073,21 +18411,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18099,11 +18444,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18125,6 +18478,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18138,53 +18495,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18193,545 +18577,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/getReleaseBody/getReleaseBody.js b/.github/actions/javascript/getReleaseBody/getReleaseBody.js index d0b1b4af34c5..1eaa417e36c5 100644 --- a/.github/actions/javascript/getReleaseBody/getReleaseBody.js +++ b/.github/actions/javascript/getReleaseBody/getReleaseBody.js @@ -1,10 +1,9 @@ -const _ = require('underscore'); const core = require('@actions/core'); const ActionUtils = require('../../../libs/ActionUtils'); const GithubUtils = require('../../../libs/GithubUtils'); // Parse the stringified JSON array of PR numbers, and cast each from String -> Number -const PRList = _.map(ActionUtils.getJSONInput('PR_LIST', {required: true}), Number); +const PRList = ActionUtils.getJSONInput('PR_LIST', {required: true}); console.log(`Got PR list: ${PRList}`); const releaseBody = GithubUtils.getReleaseBody(PRList); diff --git a/.github/actions/javascript/getReleaseBody/index.js b/.github/actions/javascript/getReleaseBody/index.js index 460ac29d724e..f80eefdfabf7 100644 --- a/.github/actions/javascript/getReleaseBody/index.js +++ b/.github/actions/javascript/getReleaseBody/index.js @@ -8,13 +8,12 @@ module.exports = /***/ 8201: /***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); const core = __nccwpck_require__(2186); const ActionUtils = __nccwpck_require__(970); const GithubUtils = __nccwpck_require__(7999); // Parse the stringified JSON array of PR numbers, and cast each from String -> Number -const PRList = _.map(ActionUtils.getJSONInput('PR_LIST', {required: true}), Number); +const PRList = ActionUtils.getJSONInput('PR_LIST', {required: true}); console.log(`Got PR list: ${PRList}`); const releaseBody = GithubUtils.getReleaseBody(PRList); @@ -97,7 +96,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -531,7 +530,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16065,1066 +16064,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17133,19 +17197,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17156,34 +17229,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17193,15 +17280,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17224,31 +17316,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17263,9 +17377,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17274,6 +17393,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17282,6 +17404,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17291,10 +17414,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17312,32 +17439,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17374,7 +17522,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17428,7 +17576,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17437,14 +17585,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17452,11 +17604,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17465,13 +17618,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17483,6 +17643,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17501,26 +17666,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17528,12 +17709,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17546,11 +17727,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17558,31 +17744,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17630,6 +17830,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17668,13 +17872,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17682,6 +17890,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17695,6 +17904,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17704,6 +17914,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17717,9 +17928,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17731,11 +17950,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17744,18 +17967,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17763,10 +17996,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17778,7 +18016,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17788,29 +18026,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17818,7 +18079,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17831,10 +18092,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17844,12 +18110,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17869,12 +18140,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17886,15 +18167,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17903,10 +18194,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17915,20 +18211,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -17943,25 +18251,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -17981,12 +18303,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18006,6 +18334,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18015,21 +18352,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18041,11 +18385,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18067,6 +18419,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18080,53 +18436,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18135,545 +18518,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/isStagingDeployLocked/index.js b/.github/actions/javascript/isStagingDeployLocked/index.js index 9bcb3f24e7ac..847843186ff7 100644 --- a/.github/actions/javascript/isStagingDeployLocked/index.js +++ b/.github/actions/javascript/isStagingDeployLocked/index.js @@ -8,7 +8,7 @@ module.exports = /***/ 8441: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const core = __nccwpck_require__(2186); const GithubUtils = __nccwpck_require__(7999); @@ -61,7 +61,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -495,7 +495,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16029,1066 +16029,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17097,19 +17162,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17120,34 +17194,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17157,15 +17245,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17188,31 +17281,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17227,9 +17342,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17238,6 +17358,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17246,6 +17369,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17255,10 +17379,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17276,32 +17404,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17338,7 +17487,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17392,7 +17541,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17401,14 +17550,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17416,11 +17569,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17429,13 +17583,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17447,6 +17608,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17465,26 +17631,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17492,12 +17674,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17510,11 +17692,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17522,31 +17709,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17594,6 +17795,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17632,13 +17837,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17646,6 +17855,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17659,6 +17869,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17668,6 +17879,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17681,9 +17893,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17695,11 +17915,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17708,18 +17932,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17727,10 +17961,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17742,7 +17981,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17752,29 +17991,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17782,7 +18044,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17795,10 +18057,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17808,12 +18075,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17833,12 +18105,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17850,15 +18132,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17867,10 +18159,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17879,20 +18176,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -17907,25 +18216,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -17945,12 +18268,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -17970,6 +18299,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -17979,21 +18317,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18005,11 +18350,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18031,6 +18384,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18044,53 +18401,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18099,545 +18483,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/markPullRequestsAsDeployed/index.js b/.github/actions/javascript/markPullRequestsAsDeployed/index.js index 38a45bda5054..80f75137bb71 100644 --- a/.github/actions/javascript/markPullRequestsAsDeployed/index.js +++ b/.github/actions/javascript/markPullRequestsAsDeployed/index.js @@ -8,18 +8,13 @@ module.exports = /***/ 2759: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); -const lodashGet = __nccwpck_require__(6908); +const _ = __nccwpck_require__(2947); const core = __nccwpck_require__(2186); const {context} = __nccwpck_require__(5438); const CONST = __nccwpck_require__(4097); const ActionUtils = __nccwpck_require__(970); const GithubUtils = __nccwpck_require__(7999); -const prList = ActionUtils.getJSONInput('PR_LIST', {required: true}); -const isProd = ActionUtils.getJSONInput('IS_PRODUCTION_DEPLOY', {required: true}); -const version = core.getInput('DEPLOY_VERSION', {required: true}); - /** * Return a nicely formatted message for the table based on the result of the GitHub action job * @@ -40,34 +35,6 @@ function getDeployTableMessage(platformResult) { } } -const androidResult = getDeployTableMessage(core.getInput('ANDROID', {required: true})); -const desktopResult = getDeployTableMessage(core.getInput('DESKTOP', {required: true})); -const iOSResult = getDeployTableMessage(core.getInput('IOS', {required: true})); -const webResult = getDeployTableMessage(core.getInput('WEB', {required: true})); - -const workflowURL = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`; - -/** - * @param {String} deployer - * @param {String} deployVerb - * @param {String} prTitle - * @returns {String} - */ -function getDeployMessage(deployer, deployVerb, prTitle) { - let message = `🚀 [${deployVerb}](${workflowURL}) to ${isProd ? 'production' : 'staging'}`; - message += ` by https://github.com/${deployer} in version: ${version} 🚀`; - message += `\n\n platform | result \n ---|--- \n🤖 android 🤖|${androidResult} \n🖥 desktop 🖥|${desktopResult}`; - message += `\n🍎 iOS 🍎|${iOSResult} \n🕸 web 🕸|${webResult}`; - - if (deployVerb === 'Cherry-picked' && !/no qa/gi.test(prTitle)) { - // eslint-disable-next-line max-len - message += - '\n\n@Expensify/applauseleads please QA this PR and check it off on the [deploy checklist](https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3AStagingDeployCash) if it passes.'; - } - - return message; -} - /** * Comment Single PR * @@ -75,87 +42,108 @@ function getDeployMessage(deployer, deployVerb, prTitle) { * @param {String} message * @returns {Promise} */ -function commentPR(PR, message) { - return GithubUtils.createComment(context.repo.repo, PR, message) - .then(() => console.log(`Comment created on #${PR} successfully 🎉`)) - .catch((err) => { - console.log(`Unable to write comment on #${PR} 😞`); - core.setFailed(err.message); - }); +async function commentPR(PR, message) { + try { + await GithubUtils.createComment(context.repo.repo, PR, message); + console.log(`Comment created on #${PR} successfully 🎉`); + } catch (err) { + console.log(`Unable to write comment on #${PR} 😞`); + core.setFailed(err.message); + } } -const run = function () { +const workflowURL = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`; + +async function run() { + const prList = _.map(ActionUtils.getJSONInput('PR_LIST', {required: true}), (num) => Number.parseInt(num, 10)); + const isProd = ActionUtils.getJSONInput('IS_PRODUCTION_DEPLOY', {required: true}); + const version = core.getInput('DEPLOY_VERSION', {required: true}); + + const androidResult = getDeployTableMessage(core.getInput('ANDROID', {required: true})); + const desktopResult = getDeployTableMessage(core.getInput('DESKTOP', {required: true})); + const iOSResult = getDeployTableMessage(core.getInput('IOS', {required: true})); + const webResult = getDeployTableMessage(core.getInput('WEB', {required: true})); + + /** + * @param {String} deployer + * @param {String} deployVerb + * @param {String} prTitle + * @returns {String} + */ + function getDeployMessage(deployer, deployVerb, prTitle) { + let message = `🚀 [${deployVerb}](${workflowURL}) to ${isProd ? 'production' : 'staging'}`; + message += ` by https://github.com/${deployer} in version: ${version} 🚀`; + message += `\n\nplatform | result\n---|---\n🤖 android 🤖|${androidResult}\n🖥 desktop 🖥|${desktopResult}`; + message += `\n🍎 iOS 🍎|${iOSResult}\n🕸 web 🕸|${webResult}`; + + if (deployVerb === 'Cherry-picked' && !/no ?qa/gi.test(prTitle)) { + // eslint-disable-next-line max-len + message += + '\n\n@Expensify/applauseleads please QA this PR and check it off on the [deploy checklist](https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3AStagingDeployCash) if it passes.'; + } + + return message; + } + if (isProd) { - // First find the deployer (who closed the last deploy checklist)? - return GithubUtils.octokit.issues - .listForRepo({ - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - labels: CONST.LABELS.STAGING_DEPLOY, - state: 'closed', - }) - .then(({data}) => _.first(data).number) - .then((lastDeployChecklistNumber) => GithubUtils.getActorWhoClosedIssue(lastDeployChecklistNumber)) - .then((actor) => { - // Create comment on each pull request (one after another to avoid throttling issues) - const deployMessage = getDeployMessage(actor, 'Deployed'); - _.reduce(prList, (promise, pr) => promise.then(() => commentPR(pr, deployMessage)), Promise.resolve()); - }); + // Find the previous deploy checklist + const {data: deployChecklists} = await GithubUtils.octokit.issues.listForRepo({ + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + labels: CONST.LABELS.STAGING_DEPLOY, + state: 'closed', + }); + const previousChecklistID = _.first(deployChecklists).number; + + // who closed the last deploy checklist? + const deployer = await GithubUtils.getActorWhoClosedIssue(previousChecklistID); + + // Create comment on each pull request (one at a time to avoid throttling issues) + const deployMessage = getDeployMessage(deployer, 'Deployed'); + for (const pr of prList) { + await commentPR(pr, deployMessage); + } + return; } // First find out if this is a normal staging deploy or a CP by looking at the commit message on the tag - return GithubUtils.octokit.repos - .listTags({ + const {data: recentTags} = await GithubUtils.octokit.repos.listTags({ + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + per_page: 100, + }); + const currentTag = _.find(recentTags, (tag) => tag.name === version); + if (!currentTag) { + const err = `Could not find tag matching ${version}`; + console.error(err); + core.setFailed(err); + return; + } + const {data: commit} = await GithubUtils.octokit.git.getCommit({ + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + commit_sha: currentTag.commit.sha, + }); + const isCP = /[\S\s]*\(cherry picked from commit .*\)/.test(commit.message); + + for (const prNumber of prList) { + /* + * Determine who the deployer for the PR is. The "deployer" for staging deploys is: + * 1. For regular staging deploys, the person who merged the PR. + * 2. For CPs, the person who committed the cherry-picked commit (not necessarily the author of the commit). + */ + const {data: pr} = await GithubUtils.octokit.pulls.get({ owner: CONST.GITHUB_OWNER, repo: CONST.APP_REPO, - per_page: 100, - }) - .then(({data}) => { - const tagSHA = _.find(data, (tag) => tag.name === version).commit.sha; - return GithubUtils.octokit.git.getCommit({ - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - commit_sha: tagSHA, - }); - }) - .then(({data}) => { - const isCP = /Merge pull request #\d+ from Expensify\/.*-?cherry-pick-staging-\d+/.test(data.message); - _.reduce( - prList, - (promise, PR) => - promise - - // Then, for each PR, find out who merged it and determine the deployer - .then(() => - GithubUtils.octokit.pulls.get({ - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - pull_number: PR, - }), - ) - .then((response) => { - /* - * The deployer for staging deploys is: - * 1. For regular staging deploys, the person who merged the PR. - * 2. For automatic CPs (using the label), the person who merged the PR. - * 3. For manual CPs (using the GH UI), the person who triggered the workflow - * (reflected in the branch name). - */ - let deployer = lodashGet(response, 'data.merged_by.login', ''); - const issueTitle = lodashGet(response, 'data.title', ''); - const CPActorMatches = data.message.match(/Merge pull request #\d+ from Expensify\/(.+)-cherry-pick-staging-\d+/); - if (_.isArray(CPActorMatches) && CPActorMatches.length === 2 && CPActorMatches[1] !== CONST.OS_BOTIFY) { - deployer = CPActorMatches[1]; - } - - // Finally, comment on the PR - const deployMessage = getDeployMessage(deployer, isCP ? 'Cherry-picked' : 'Deployed', issueTitle); - return commentPR(PR, deployMessage); - }), - Promise.resolve(), - ); + pull_number: prNumber, }); -}; + const deployer = isCP ? commit.committer.name : pr.merged_by.login; + + const title = pr.title; + const deployMessage = getDeployMessage(deployer, isCP ? 'Cherry-picked' : 'Deployed', title); + await commentPR(prNumber, deployMessage); + } +} if (require.main === require.cache[eval('__filename')]) { run(); @@ -238,7 +226,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -672,7 +660,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -8171,7 +8159,7 @@ var modules = [ __nccwpck_require__(9557), __nccwpck_require__(1155), __nccwpck_require__(1644), - __nccwpck_require__(373), + __nccwpck_require__(6657), __nccwpck_require__(1080), __nccwpck_require__(1012), __nccwpck_require__(9695), @@ -8395,7 +8383,7 @@ InternalDecoderCesu8.prototype.end = function() { /***/ }), -/***/ 373: +/***/ 6657: /***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { "use strict"; @@ -10455,7 +10443,7 @@ module.exports = Map; /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { var mapCacheClear = __nccwpck_require__(1610), - mapCacheDelete = __nccwpck_require__(6657), + mapCacheDelete = __nccwpck_require__(5991), mapCacheGet = __nccwpck_require__(1372), mapCacheHas = __nccwpck_require__(609), mapCacheSet = __nccwpck_require__(5582); @@ -11297,7 +11285,7 @@ module.exports = mapCacheClear; /***/ }), -/***/ 6657: +/***/ 5991: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { var getMapData = __nccwpck_require__(9980); @@ -16250,813 +16238,811 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js - return external_crypto_default().createHash('md5').update(bytes).digest(); -} -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; +} -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided - if (buf) { - offset = offset || 0; - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - return buf; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } - return external_crypto_default().createHash('sha1').update(bytes).digest(); +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); } -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js - +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); - return parseInt(uuid.substr(14, 1), 16); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js -/***/ }), -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - - return wrapper - - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ }), - -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { - -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. - -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; - -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; - -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; - -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; } -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; } -var isString = tagTester('String'); +_.VERSION = VERSION; -var isNumber = tagTester('Number'); - -var isDate = tagTester('Date'); - -var isRegExp = tagTester('RegExp'); +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -var isError = tagTester('Error'); +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -var isSymbol = tagTester('Symbol'); +_.prototype.toString = function() { + return String(this._wrapped); +}; -var isArrayBuffer = tagTester('ArrayBuffer'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -var isFunction = tagTester('Function'); -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -var isFunction$1 = isFunction; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -var hasObjectTag = tagTester('Object'); - -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); -var isDataView = tagTester('DataView'); -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); -} -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); -} -var isArguments = tagTester('Arguments'); -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; - }; +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; - } -} - -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; -} - -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); - -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); - -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); -} - -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); - -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); - -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); - } - }; -} - -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; - - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} - -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} - -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} - -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; -} - -_$1.VERSION = VERSION; - -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; - -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; - -_$1.prototype.toString = function() { - return String(this._wrapped); -}; - -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); -} - -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; - -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; } switch (className) { // These types are compared by value. @@ -17087,9 +17073,9 @@ function deepEq(a, b, aStack, bStack) { } var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; areArrays = true; } @@ -17099,8 +17085,8 @@ function deepEq(a, b, aStack, bStack) { // Objects with different constructors are not equivalent, but `Object`s or `Array`s // from different frames are. var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) && ('constructor' in a && 'constructor' in b)) { return false; } @@ -17141,7 +17127,7 @@ function deepEq(a, b, aStack, bStack) { while (length--) { // Deep compare each member key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; } } // Remove the first object from the stack of traversed objects. @@ -17155,6 +17141,11 @@ function isEqual(a, b) { return eq(a, b); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js + + + + // Retrieve all the enumerable property names of an object. function allKeys(obj) { if (!isObject(obj)) return []; @@ -17165,24 +17156,29 @@ function allKeys(obj) { return keys; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js + + + + // Since the regular `Object.prototype.toString` type tests don't work for // some types in IE 11, we use a fingerprinting heuristic instead, based // on the methods. It's not great, but it's the best we got. // The fingerprint method lists are defined below. function ie11fingerprint(methods) { - var length = getLength(methods); + var length = _getLength(methods); return function(obj) { if (obj == null) return false; // `Map`, `WeakMap` and `Set` have no enumerable keys. var keys = allKeys(obj); - if (getLength(keys)) return false; + if (_getLength(keys)) return false; for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; + if (!modules_isFunction(obj[methods[i]])) return false; } // If we are testing against `WeakMap`, we need to ensure that // `obj` doesn't have a `forEach` method in order to distinguish // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } @@ -17199,13 +17195,34 @@ var mapMethods = commonInit.concat(forEachName, mapTail), weakMapMethods = commonInit.concat(mapTail), setMethods = ['add'].concat(commonInit, forEachName, hasName); -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js -var isWeakSet = tagTester('WeakSet'); // Retrieve the values of an object's properties. function values(obj) { @@ -17218,6 +17235,9 @@ function values(obj) { return values; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + // Convert an object into a list of `[key, value]` pairs. // The opposite of `_.object` with one argument. function pairs(obj) { @@ -17230,6 +17250,9 @@ function pairs(obj) { return pairs; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js + + // Invert the keys and values of an object. The values must be serializable. function invert(obj) { var result = {}; @@ -17240,15 +17263,19 @@ function invert(obj) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js + + // Return a sorted list of the function names available on the object. function functions(obj) { var names = []; for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); + if (modules_isFunction(obj[key])) names.push(key); } return names.sort(); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js // An internal function for creating assigner functions. function createAssigner(keysFunc, defaults) { return function(obj) { @@ -17268,16 +17295,32 @@ function createAssigner(keysFunc, defaults) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js + + + // Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); +/* harmony default export */ const extend = (createAssigner(allKeys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js + + // Assigns a given object with all the own properties in the passed-in // object(s). // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + // Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + // Create a naked function reference for surrogate-prototype-swapping. function ctor() { @@ -17295,6 +17338,10 @@ function baseCreate(prototype) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js + + + // Creates an object that inherits from the given prototype object. // If additional properties are provided then they will be added to the // created object. @@ -17304,12 +17351,18 @@ function create(prototype, props) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js + + + + // Create a (shallow-cloned) duplicate of an object. function clone(obj) { if (!isObject(obj)) return obj; return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17318,19 +17371,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17341,34 +17403,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17378,15 +17454,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17409,31 +17490,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17448,9 +17551,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17459,6 +17567,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17467,6 +17578,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17476,10 +17588,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17497,32 +17613,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17559,7 +17696,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17613,7 +17750,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17622,14 +17759,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17637,11 +17778,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17650,13 +17792,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17668,6 +17817,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17686,26 +17840,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17713,12 +17883,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17731,11 +17901,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17743,31 +17918,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17815,6 +18004,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17853,13 +18046,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17867,6 +18064,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17880,6 +18078,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17889,6 +18088,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17902,9 +18102,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17916,11 +18124,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17929,18 +18141,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17948,10 +18170,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17963,7 +18190,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17973,29 +18200,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -18003,7 +18253,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -18016,10 +18266,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -18029,12 +18284,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -18054,12 +18314,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -18071,15 +18341,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -18088,10 +18368,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -18100,20 +18385,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -18128,25 +18425,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -18166,12 +18477,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18191,6 +18508,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18200,21 +18526,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18226,11 +18559,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18252,6 +18593,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18265,53 +18610,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18320,22 +18692,34 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + // Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in @@ -18344,521 +18728,951 @@ function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.js b/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.js index 708d001892c2..d03a947cdec8 100644 --- a/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.js +++ b/.github/actions/javascript/markPullRequestsAsDeployed/markPullRequestsAsDeployed.js @@ -1,15 +1,10 @@ const _ = require('underscore'); -const lodashGet = require('lodash/get'); const core = require('@actions/core'); const {context} = require('@actions/github'); const CONST = require('../../../libs/CONST'); const ActionUtils = require('../../../libs/ActionUtils'); const GithubUtils = require('../../../libs/GithubUtils'); -const prList = ActionUtils.getJSONInput('PR_LIST', {required: true}); -const isProd = ActionUtils.getJSONInput('IS_PRODUCTION_DEPLOY', {required: true}); -const version = core.getInput('DEPLOY_VERSION', {required: true}); - /** * Return a nicely formatted message for the table based on the result of the GitHub action job * @@ -30,34 +25,6 @@ function getDeployTableMessage(platformResult) { } } -const androidResult = getDeployTableMessage(core.getInput('ANDROID', {required: true})); -const desktopResult = getDeployTableMessage(core.getInput('DESKTOP', {required: true})); -const iOSResult = getDeployTableMessage(core.getInput('IOS', {required: true})); -const webResult = getDeployTableMessage(core.getInput('WEB', {required: true})); - -const workflowURL = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`; - -/** - * @param {String} deployer - * @param {String} deployVerb - * @param {String} prTitle - * @returns {String} - */ -function getDeployMessage(deployer, deployVerb, prTitle) { - let message = `🚀 [${deployVerb}](${workflowURL}) to ${isProd ? 'production' : 'staging'}`; - message += ` by https://github.com/${deployer} in version: ${version} 🚀`; - message += `\n\n platform | result \n ---|--- \n🤖 android 🤖|${androidResult} \n🖥 desktop 🖥|${desktopResult}`; - message += `\n🍎 iOS 🍎|${iOSResult} \n🕸 web 🕸|${webResult}`; - - if (deployVerb === 'Cherry-picked' && !/no qa/gi.test(prTitle)) { - // eslint-disable-next-line max-len - message += - '\n\n@Expensify/applauseleads please QA this PR and check it off on the [deploy checklist](https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3AStagingDeployCash) if it passes.'; - } - - return message; -} - /** * Comment Single PR * @@ -65,87 +32,108 @@ function getDeployMessage(deployer, deployVerb, prTitle) { * @param {String} message * @returns {Promise} */ -function commentPR(PR, message) { - return GithubUtils.createComment(context.repo.repo, PR, message) - .then(() => console.log(`Comment created on #${PR} successfully 🎉`)) - .catch((err) => { - console.log(`Unable to write comment on #${PR} 😞`); - core.setFailed(err.message); - }); +async function commentPR(PR, message) { + try { + await GithubUtils.createComment(context.repo.repo, PR, message); + console.log(`Comment created on #${PR} successfully 🎉`); + } catch (err) { + console.log(`Unable to write comment on #${PR} 😞`); + core.setFailed(err.message); + } } -const run = function () { +const workflowURL = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`; + +async function run() { + const prList = _.map(ActionUtils.getJSONInput('PR_LIST', {required: true}), (num) => Number.parseInt(num, 10)); + const isProd = ActionUtils.getJSONInput('IS_PRODUCTION_DEPLOY', {required: true}); + const version = core.getInput('DEPLOY_VERSION', {required: true}); + + const androidResult = getDeployTableMessage(core.getInput('ANDROID', {required: true})); + const desktopResult = getDeployTableMessage(core.getInput('DESKTOP', {required: true})); + const iOSResult = getDeployTableMessage(core.getInput('IOS', {required: true})); + const webResult = getDeployTableMessage(core.getInput('WEB', {required: true})); + + /** + * @param {String} deployer + * @param {String} deployVerb + * @param {String} prTitle + * @returns {String} + */ + function getDeployMessage(deployer, deployVerb, prTitle) { + let message = `🚀 [${deployVerb}](${workflowURL}) to ${isProd ? 'production' : 'staging'}`; + message += ` by https://github.com/${deployer} in version: ${version} 🚀`; + message += `\n\nplatform | result\n---|---\n🤖 android 🤖|${androidResult}\n🖥 desktop 🖥|${desktopResult}`; + message += `\n🍎 iOS 🍎|${iOSResult}\n🕸 web 🕸|${webResult}`; + + if (deployVerb === 'Cherry-picked' && !/no ?qa/gi.test(prTitle)) { + // eslint-disable-next-line max-len + message += + '\n\n@Expensify/applauseleads please QA this PR and check it off on the [deploy checklist](https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3AStagingDeployCash) if it passes.'; + } + + return message; + } + if (isProd) { - // First find the deployer (who closed the last deploy checklist)? - return GithubUtils.octokit.issues - .listForRepo({ - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - labels: CONST.LABELS.STAGING_DEPLOY, - state: 'closed', - }) - .then(({data}) => _.first(data).number) - .then((lastDeployChecklistNumber) => GithubUtils.getActorWhoClosedIssue(lastDeployChecklistNumber)) - .then((actor) => { - // Create comment on each pull request (one after another to avoid throttling issues) - const deployMessage = getDeployMessage(actor, 'Deployed'); - _.reduce(prList, (promise, pr) => promise.then(() => commentPR(pr, deployMessage)), Promise.resolve()); - }); + // Find the previous deploy checklist + const {data: deployChecklists} = await GithubUtils.octokit.issues.listForRepo({ + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + labels: CONST.LABELS.STAGING_DEPLOY, + state: 'closed', + }); + const previousChecklistID = _.first(deployChecklists).number; + + // who closed the last deploy checklist? + const deployer = await GithubUtils.getActorWhoClosedIssue(previousChecklistID); + + // Create comment on each pull request (one at a time to avoid throttling issues) + const deployMessage = getDeployMessage(deployer, 'Deployed'); + for (const pr of prList) { + await commentPR(pr, deployMessage); + } + return; } // First find out if this is a normal staging deploy or a CP by looking at the commit message on the tag - return GithubUtils.octokit.repos - .listTags({ + const {data: recentTags} = await GithubUtils.octokit.repos.listTags({ + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + per_page: 100, + }); + const currentTag = _.find(recentTags, (tag) => tag.name === version); + if (!currentTag) { + const err = `Could not find tag matching ${version}`; + console.error(err); + core.setFailed(err); + return; + } + const {data: commit} = await GithubUtils.octokit.git.getCommit({ + owner: CONST.GITHUB_OWNER, + repo: CONST.APP_REPO, + commit_sha: currentTag.commit.sha, + }); + const isCP = /[\S\s]*\(cherry picked from commit .*\)/.test(commit.message); + + for (const prNumber of prList) { + /* + * Determine who the deployer for the PR is. The "deployer" for staging deploys is: + * 1. For regular staging deploys, the person who merged the PR. + * 2. For CPs, the person who committed the cherry-picked commit (not necessarily the author of the commit). + */ + const {data: pr} = await GithubUtils.octokit.pulls.get({ owner: CONST.GITHUB_OWNER, repo: CONST.APP_REPO, - per_page: 100, - }) - .then(({data}) => { - const tagSHA = _.find(data, (tag) => tag.name === version).commit.sha; - return GithubUtils.octokit.git.getCommit({ - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - commit_sha: tagSHA, - }); - }) - .then(({data}) => { - const isCP = /Merge pull request #\d+ from Expensify\/.*-?cherry-pick-staging-\d+/.test(data.message); - _.reduce( - prList, - (promise, PR) => - promise - - // Then, for each PR, find out who merged it and determine the deployer - .then(() => - GithubUtils.octokit.pulls.get({ - owner: CONST.GITHUB_OWNER, - repo: CONST.APP_REPO, - pull_number: PR, - }), - ) - .then((response) => { - /* - * The deployer for staging deploys is: - * 1. For regular staging deploys, the person who merged the PR. - * 2. For automatic CPs (using the label), the person who merged the PR. - * 3. For manual CPs (using the GH UI), the person who triggered the workflow - * (reflected in the branch name). - */ - let deployer = lodashGet(response, 'data.merged_by.login', ''); - const issueTitle = lodashGet(response, 'data.title', ''); - const CPActorMatches = data.message.match(/Merge pull request #\d+ from Expensify\/(.+)-cherry-pick-staging-\d+/); - if (_.isArray(CPActorMatches) && CPActorMatches.length === 2 && CPActorMatches[1] !== CONST.OS_BOTIFY) { - deployer = CPActorMatches[1]; - } - - // Finally, comment on the PR - const deployMessage = getDeployMessage(deployer, isCP ? 'Cherry-picked' : 'Deployed', issueTitle); - return commentPR(PR, deployMessage); - }), - Promise.resolve(), - ); + pull_number: prNumber, }); -}; + const deployer = isCP ? commit.committer.name : pr.merged_by.login; + + const title = pr.title; + const deployMessage = getDeployMessage(deployer, isCP ? 'Cherry-picked' : 'Deployed', title); + await commentPR(prNumber, deployMessage); + } +} if (require.main === module) { run(); diff --git a/.github/actions/javascript/postTestBuildComment/index.js b/.github/actions/javascript/postTestBuildComment/index.js index 5da6c7ed667a..f0bb4495f838 100644 --- a/.github/actions/javascript/postTestBuildComment/index.js +++ b/.github/actions/javascript/postTestBuildComment/index.js @@ -105,7 +105,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -539,7 +539,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16117,1066 +16117,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17185,19 +17250,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17208,34 +17282,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17245,15 +17333,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17276,31 +17369,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17315,9 +17430,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17326,6 +17446,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17334,6 +17457,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17343,10 +17467,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17364,32 +17492,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17426,7 +17575,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17480,7 +17629,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17489,14 +17638,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17504,11 +17657,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17517,13 +17671,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17535,6 +17696,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17553,26 +17719,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17580,12 +17762,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17598,11 +17780,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17610,31 +17797,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17682,6 +17883,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17720,13 +17925,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17734,6 +17943,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17747,6 +17957,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17756,6 +17967,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17769,9 +17981,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17783,11 +18003,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17796,18 +18020,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17815,10 +18049,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17830,7 +18069,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17840,29 +18079,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17870,7 +18132,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17883,10 +18145,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17896,12 +18163,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17921,12 +18193,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17938,15 +18220,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17955,10 +18247,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17967,20 +18264,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -17995,25 +18304,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -18033,12 +18356,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18058,6 +18387,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18067,21 +18405,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18093,11 +18438,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18119,6 +18472,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18132,53 +18489,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18187,545 +18571,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/reopenIssueWithComment/index.js b/.github/actions/javascript/reopenIssueWithComment/index.js index 3efa2664a4c5..076f1c53434b 100644 --- a/.github/actions/javascript/reopenIssueWithComment/index.js +++ b/.github/actions/javascript/reopenIssueWithComment/index.js @@ -74,7 +74,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -508,7 +508,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16042,1066 +16042,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17110,19 +17175,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17133,34 +17207,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17170,15 +17258,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17201,31 +17294,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17240,9 +17355,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17251,6 +17371,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17259,6 +17382,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17268,10 +17392,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17289,32 +17417,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17351,7 +17500,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17405,7 +17554,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17414,14 +17563,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17429,11 +17582,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17442,13 +17596,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17460,6 +17621,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17478,26 +17644,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17505,12 +17687,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17523,11 +17705,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17535,31 +17722,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17607,6 +17808,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17645,13 +17850,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17659,6 +17868,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17672,6 +17882,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17681,6 +17892,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17694,9 +17906,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17708,11 +17928,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17721,18 +17945,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17740,10 +17974,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17755,7 +17994,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17765,29 +18004,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17795,7 +18057,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17808,10 +18070,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17821,12 +18088,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17846,12 +18118,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17863,15 +18145,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17880,10 +18172,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17892,20 +18189,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -17920,25 +18229,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -17958,12 +18281,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -17983,6 +18312,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -17992,21 +18330,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18018,11 +18363,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18044,6 +18397,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18057,53 +18414,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18112,545 +18496,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/reviewerChecklist/index.js b/.github/actions/javascript/reviewerChecklist/index.js index fc4ba728220b..3e35ee4f7c93 100644 --- a/.github/actions/javascript/reviewerChecklist/index.js +++ b/.github/actions/javascript/reviewerChecklist/index.js @@ -140,7 +140,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -574,7 +574,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16152,1066 +16152,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17220,19 +17285,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17243,34 +17317,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17280,15 +17368,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17311,31 +17404,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17350,9 +17465,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17361,6 +17481,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17369,6 +17492,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17378,10 +17502,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17399,32 +17527,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17461,7 +17610,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17515,7 +17664,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17524,14 +17673,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17539,11 +17692,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17552,13 +17706,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17570,6 +17731,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17588,26 +17754,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17615,12 +17797,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17633,11 +17815,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17645,31 +17832,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17717,6 +17918,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17755,13 +17960,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17769,6 +17978,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17782,6 +17992,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17791,6 +18002,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17804,9 +18016,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17818,11 +18038,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17831,18 +18055,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17850,10 +18084,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17865,7 +18104,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17875,29 +18114,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17905,7 +18167,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17918,10 +18180,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17931,12 +18198,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17956,12 +18228,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17973,15 +18255,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17990,10 +18282,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -18002,20 +18299,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -18030,25 +18339,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -18068,12 +18391,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18093,6 +18422,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18102,21 +18440,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18128,11 +18473,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18154,6 +18507,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18167,53 +18524,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18222,545 +18606,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/actions/javascript/verifySignedCommits/index.js b/.github/actions/javascript/verifySignedCommits/index.js index df8ca5b31bad..115e1ccd1e4b 100644 --- a/.github/actions/javascript/verifySignedCommits/index.js +++ b/.github/actions/javascript/verifySignedCommits/index.js @@ -8,7 +8,7 @@ module.exports = /***/ 5740: /***/ ((__unused_webpack_module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const core = __nccwpck_require__(2186); const github = __nccwpck_require__(5438); const CONST = __nccwpck_require__(4097); @@ -63,7 +63,7 @@ module.exports = CONST; /***/ 7999: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { -const _ = __nccwpck_require__(3571); +const _ = __nccwpck_require__(2947); const lodashGet = __nccwpck_require__(6908); const core = __nccwpck_require__(2186); const {GitHub, getOctokitOptions} = __nccwpck_require__(3030); @@ -497,7 +497,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { @@ -16075,1066 +16075,1131 @@ exports.debug = debug; // for test /***/ }), -/***/ 5030: -/***/ ((__unused_webpack_module, exports) => { +/***/ 2947: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => { "use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "VERSION": () => /* reexport */ VERSION, + "after": () => /* reexport */ after, + "all": () => /* reexport */ every, + "allKeys": () => /* reexport */ allKeys, + "any": () => /* reexport */ some, + "assign": () => /* reexport */ extendOwn, + "before": () => /* reexport */ before, + "bind": () => /* reexport */ bind, + "bindAll": () => /* reexport */ bindAll, + "chain": () => /* reexport */ chain, + "chunk": () => /* reexport */ chunk, + "clone": () => /* reexport */ clone, + "collect": () => /* reexport */ map, + "compact": () => /* reexport */ compact, + "compose": () => /* reexport */ compose, + "constant": () => /* reexport */ constant, + "contains": () => /* reexport */ contains, + "countBy": () => /* reexport */ countBy, + "create": () => /* reexport */ create, + "debounce": () => /* reexport */ debounce, + "default": () => /* reexport */ index_default, + "defaults": () => /* reexport */ defaults, + "defer": () => /* reexport */ defer, + "delay": () => /* reexport */ delay, + "detect": () => /* reexport */ find, + "difference": () => /* reexport */ difference, + "drop": () => /* reexport */ rest, + "each": () => /* reexport */ each, + "escape": () => /* reexport */ modules_escape, + "every": () => /* reexport */ every, + "extend": () => /* reexport */ extend, + "extendOwn": () => /* reexport */ extendOwn, + "filter": () => /* reexport */ filter, + "find": () => /* reexport */ find, + "findIndex": () => /* reexport */ findIndex, + "findKey": () => /* reexport */ findKey, + "findLastIndex": () => /* reexport */ findLastIndex, + "findWhere": () => /* reexport */ findWhere, + "first": () => /* reexport */ first, + "flatten": () => /* reexport */ flatten_flatten, + "foldl": () => /* reexport */ reduce, + "foldr": () => /* reexport */ reduceRight, + "forEach": () => /* reexport */ each, + "functions": () => /* reexport */ functions, + "get": () => /* reexport */ get, + "groupBy": () => /* reexport */ groupBy, + "has": () => /* reexport */ has_has, + "head": () => /* reexport */ first, + "identity": () => /* reexport */ identity, + "include": () => /* reexport */ contains, + "includes": () => /* reexport */ contains, + "indexBy": () => /* reexport */ indexBy, + "indexOf": () => /* reexport */ indexOf, + "initial": () => /* reexport */ initial, + "inject": () => /* reexport */ reduce, + "intersection": () => /* reexport */ intersection, + "invert": () => /* reexport */ invert, + "invoke": () => /* reexport */ invoke, + "isArguments": () => /* reexport */ modules_isArguments, + "isArray": () => /* reexport */ isArray, + "isArrayBuffer": () => /* reexport */ isArrayBuffer, + "isBoolean": () => /* reexport */ isBoolean, + "isDataView": () => /* reexport */ modules_isDataView, + "isDate": () => /* reexport */ isDate, + "isElement": () => /* reexport */ isElement, + "isEmpty": () => /* reexport */ isEmpty, + "isEqual": () => /* reexport */ isEqual, + "isError": () => /* reexport */ isError, + "isFinite": () => /* reexport */ isFinite_isFinite, + "isFunction": () => /* reexport */ modules_isFunction, + "isMap": () => /* reexport */ isMap, + "isMatch": () => /* reexport */ isMatch, + "isNaN": () => /* reexport */ isNaN_isNaN, + "isNull": () => /* reexport */ isNull, + "isNumber": () => /* reexport */ isNumber, + "isObject": () => /* reexport */ isObject, + "isRegExp": () => /* reexport */ isRegExp, + "isSet": () => /* reexport */ isSet, + "isString": () => /* reexport */ isString, + "isSymbol": () => /* reexport */ isSymbol, + "isTypedArray": () => /* reexport */ modules_isTypedArray, + "isUndefined": () => /* reexport */ isUndefined, + "isWeakMap": () => /* reexport */ isWeakMap, + "isWeakSet": () => /* reexport */ isWeakSet, + "iteratee": () => /* reexport */ iteratee, + "keys": () => /* reexport */ keys, + "last": () => /* reexport */ last, + "lastIndexOf": () => /* reexport */ lastIndexOf, + "map": () => /* reexport */ map, + "mapObject": () => /* reexport */ mapObject, + "matcher": () => /* reexport */ matcher, + "matches": () => /* reexport */ matcher, + "max": () => /* reexport */ max, + "memoize": () => /* reexport */ memoize, + "methods": () => /* reexport */ functions, + "min": () => /* reexport */ min, + "mixin": () => /* reexport */ mixin, + "negate": () => /* reexport */ negate, + "noop": () => /* reexport */ noop, + "now": () => /* reexport */ now, + "object": () => /* reexport */ object, + "omit": () => /* reexport */ omit, + "once": () => /* reexport */ once, + "pairs": () => /* reexport */ pairs, + "partial": () => /* reexport */ modules_partial, + "partition": () => /* reexport */ partition, + "pick": () => /* reexport */ pick, + "pluck": () => /* reexport */ pluck, + "property": () => /* reexport */ property, + "propertyOf": () => /* reexport */ propertyOf, + "random": () => /* reexport */ random, + "range": () => /* reexport */ range, + "reduce": () => /* reexport */ reduce, + "reduceRight": () => /* reexport */ reduceRight, + "reject": () => /* reexport */ reject, + "rest": () => /* reexport */ rest, + "restArguments": () => /* reexport */ restArguments, + "result": () => /* reexport */ result, + "sample": () => /* reexport */ sample, + "select": () => /* reexport */ filter, + "shuffle": () => /* reexport */ shuffle, + "size": () => /* reexport */ size, + "some": () => /* reexport */ some, + "sortBy": () => /* reexport */ sortBy, + "sortedIndex": () => /* reexport */ sortedIndex, + "tail": () => /* reexport */ rest, + "take": () => /* reexport */ first, + "tap": () => /* reexport */ tap, + "template": () => /* reexport */ template, + "templateSettings": () => /* reexport */ templateSettings, + "throttle": () => /* reexport */ throttle, + "times": () => /* reexport */ times, + "toArray": () => /* reexport */ toArray, + "toPath": () => /* reexport */ toPath, + "transpose": () => /* reexport */ unzip, + "unescape": () => /* reexport */ modules_unescape, + "union": () => /* reexport */ union, + "uniq": () => /* reexport */ uniq, + "unique": () => /* reexport */ uniq, + "uniqueId": () => /* reexport */ uniqueId, + "unzip": () => /* reexport */ unzip, + "values": () => /* reexport */ values, + "where": () => /* reexport */ where, + "without": () => /* reexport */ without, + "wrap": () => /* reexport */ wrap, + "zip": () => /* reexport */ zip +}); -Object.defineProperty(exports, "__esModule", ({ value: true })); - -function getUserAgent() { - if (typeof navigator === "object" && "userAgent" in navigator) { - return navigator.userAgent; - } +// NAMESPACE OBJECT: ./node_modules/underscore/modules/index.js +var modules_namespaceObject = {}; +__nccwpck_require__.r(modules_namespaceObject); +__nccwpck_require__.d(modules_namespaceObject, { + "VERSION": () => VERSION, + "after": () => after, + "all": () => every, + "allKeys": () => allKeys, + "any": () => some, + "assign": () => extendOwn, + "before": () => before, + "bind": () => bind, + "bindAll": () => bindAll, + "chain": () => chain, + "chunk": () => chunk, + "clone": () => clone, + "collect": () => map, + "compact": () => compact, + "compose": () => compose, + "constant": () => constant, + "contains": () => contains, + "countBy": () => countBy, + "create": () => create, + "debounce": () => debounce, + "default": () => underscore_array_methods, + "defaults": () => defaults, + "defer": () => defer, + "delay": () => delay, + "detect": () => find, + "difference": () => difference, + "drop": () => rest, + "each": () => each, + "escape": () => modules_escape, + "every": () => every, + "extend": () => extend, + "extendOwn": () => extendOwn, + "filter": () => filter, + "find": () => find, + "findIndex": () => findIndex, + "findKey": () => findKey, + "findLastIndex": () => findLastIndex, + "findWhere": () => findWhere, + "first": () => first, + "flatten": () => flatten_flatten, + "foldl": () => reduce, + "foldr": () => reduceRight, + "forEach": () => each, + "functions": () => functions, + "get": () => get, + "groupBy": () => groupBy, + "has": () => has_has, + "head": () => first, + "identity": () => identity, + "include": () => contains, + "includes": () => contains, + "indexBy": () => indexBy, + "indexOf": () => indexOf, + "initial": () => initial, + "inject": () => reduce, + "intersection": () => intersection, + "invert": () => invert, + "invoke": () => invoke, + "isArguments": () => modules_isArguments, + "isArray": () => isArray, + "isArrayBuffer": () => isArrayBuffer, + "isBoolean": () => isBoolean, + "isDataView": () => modules_isDataView, + "isDate": () => isDate, + "isElement": () => isElement, + "isEmpty": () => isEmpty, + "isEqual": () => isEqual, + "isError": () => isError, + "isFinite": () => isFinite_isFinite, + "isFunction": () => modules_isFunction, + "isMap": () => isMap, + "isMatch": () => isMatch, + "isNaN": () => isNaN_isNaN, + "isNull": () => isNull, + "isNumber": () => isNumber, + "isObject": () => isObject, + "isRegExp": () => isRegExp, + "isSet": () => isSet, + "isString": () => isString, + "isSymbol": () => isSymbol, + "isTypedArray": () => modules_isTypedArray, + "isUndefined": () => isUndefined, + "isWeakMap": () => isWeakMap, + "isWeakSet": () => isWeakSet, + "iteratee": () => iteratee, + "keys": () => keys, + "last": () => last, + "lastIndexOf": () => lastIndexOf, + "map": () => map, + "mapObject": () => mapObject, + "matcher": () => matcher, + "matches": () => matcher, + "max": () => max, + "memoize": () => memoize, + "methods": () => functions, + "min": () => min, + "mixin": () => mixin, + "negate": () => negate, + "noop": () => noop, + "now": () => now, + "object": () => object, + "omit": () => omit, + "once": () => once, + "pairs": () => pairs, + "partial": () => modules_partial, + "partition": () => partition, + "pick": () => pick, + "pluck": () => pluck, + "property": () => property, + "propertyOf": () => propertyOf, + "random": () => random, + "range": () => range, + "reduce": () => reduce, + "reduceRight": () => reduceRight, + "reject": () => reject, + "rest": () => rest, + "restArguments": () => restArguments, + "result": () => result, + "sample": () => sample, + "select": () => filter, + "shuffle": () => shuffle, + "size": () => size, + "some": () => some, + "sortBy": () => sortBy, + "sortedIndex": () => sortedIndex, + "tail": () => rest, + "take": () => first, + "tap": () => tap, + "template": () => template, + "templateSettings": () => templateSettings, + "throttle": () => throttle, + "times": () => times, + "toArray": () => toArray, + "toPath": () => toPath, + "transpose": () => unzip, + "unescape": () => modules_unescape, + "union": () => union, + "uniq": () => uniq, + "unique": () => uniq, + "uniqueId": () => uniqueId, + "unzip": () => unzip, + "values": () => values, + "where": () => where, + "without": () => without, + "wrap": () => wrap, + "zip": () => zip +}); - if (typeof process === "object" && "version" in process) { - return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_setup.js +// Current version. +var VERSION = '1.13.6'; - return ""; -} +// Establish the root object, `window` (`self`) in the browser, `global` +// on the server, or `this` in some virtual machines. We use `self` +// instead of `window` for `WebWorker` support. +var root = (typeof self == 'object' && self.self === self && self) || + (typeof global == 'object' && global.global === global && global) || + Function('return this')() || + {}; -exports.getUserAgent = getUserAgent; -//# sourceMappingURL=index.js.map +// Save bytes in the minified (but not gzipped) version: +var ArrayProto = Array.prototype, ObjProto = Object.prototype; +var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// Create quick reference variables for speed access to core prototypes. +var push = ArrayProto.push, + slice = ArrayProto.slice, + _setup_toString = ObjProto.toString, + _setup_hasOwnProperty = ObjProto.hasOwnProperty; -/***/ }), +// Modern feature detection. +var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', + supportsDataView = typeof DataView !== 'undefined'; -/***/ 9521: -/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { +// All **ECMAScript 5+** native function implementations that we hope to use +// are declared here. +var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create, + nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; -"use strict"; -// ESM COMPAT FLAG -__nccwpck_require__.r(__webpack_exports__); +// Create references to these builtin functions because we override them. +var _isNaN = isNaN, + _isFinite = isFinite; -// EXPORTS -__nccwpck_require__.d(__webpack_exports__, { - "NIL": () => /* reexport */ nil, - "parse": () => /* reexport */ esm_node_parse, - "stringify": () => /* reexport */ esm_node_stringify, - "v1": () => /* reexport */ esm_node_v1, - "v3": () => /* reexport */ esm_node_v3, - "v4": () => /* reexport */ esm_node_v4, - "v5": () => /* reexport */ esm_node_v5, - "validate": () => /* reexport */ esm_node_validate, - "version": () => /* reexport */ esm_node_version -}); +// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. +var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; -// CONCATENATED MODULE: external "crypto" -const external_crypto_namespaceObject = require("crypto");; -var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); +// The largest integer that can be represented exactly. +var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/restArguments.js +// Some functions take a variable number of arguments, or a few expected +// arguments at the beginning and then a variable number of values to operate +// on. This helper accumulates all remaining arguments past the function’s +// argument length (or an explicit `startIndex`), into an array that becomes +// the last argument. Similar to ES6’s "rest parameter". +function restArguments(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; +} -const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate +// CONCATENATED MODULE: ./node_modules/underscore/modules/isObject.js +// Is a given variable an object? +function isObject(obj) { + var type = typeof obj; + return type === 'function' || (type === 'object' && !!obj); +} -let poolPtr = rnds8Pool.length; -function rng() { - if (poolPtr > rnds8Pool.length - 16) { - external_crypto_default().randomFillSync(rnds8Pool); - poolPtr = 0; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNull.js +// Is a given value equal to null? +function isNull(obj) { + return obj === null; +} - return rnds8Pool.slice(poolPtr, poolPtr += 16); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isUndefined.js +// Is a given variable undefined? +function isUndefined(obj) { + return obj === void 0; } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js -/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isBoolean.js -function validate(uuid) { - return typeof uuid === 'string' && regex.test(uuid); + +// Is a given value a boolean? +function isBoolean(obj) { + return obj === true || obj === false || _setup_toString.call(obj) === '[object Boolean]'; } -/* harmony default export */ const esm_node_validate = (validate); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isElement.js +// Is a given value a DOM element? +function isElement(obj) { + return !!(obj && obj.nodeType === 1); +} -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ +// CONCATENATED MODULE: ./node_modules/underscore/modules/_tagTester.js -const byteToHex = []; -for (let i = 0; i < 256; ++i) { - byteToHex.push((i + 0x100).toString(16).substr(1)); +// Internal function for creating a `toString`-based type tester. +function tagTester(name) { + var tag = '[object ' + name + ']'; + return function(obj) { + return _setup_toString.call(obj) === tag; + }; } -function stringify(arr, offset = 0) { - // Note: Be careful editing this code! It's been tuned for performance - // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 - const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one - // of the following: - // - One or more input array values don't map to a hex octet (leading to - // "undefined" in the uuid) - // - Invalid input values for the RFC `version` or `variant` fields +// CONCATENATED MODULE: ./node_modules/underscore/modules/isString.js - if (!esm_node_validate(uuid)) { - throw TypeError('Stringified UUID is invalid'); - } - return uuid; -} +/* harmony default export */ const isString = (tagTester('String')); -/* harmony default export */ const esm_node_stringify = (stringify); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNumber.js - // **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html -let _nodeId; +/* harmony default export */ const isNumber = (tagTester('Number')); -let _clockseq; // Previous uuid creation time +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDate.js -let _lastMSecs = 0; -let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details +/* harmony default export */ const isDate = (tagTester('Date')); -function v1(options, buf, offset) { - let i = buf && offset || 0; - const b = buf || new Array(16); - options = options || {}; - let node = options.node || _nodeId; - let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not - // specified. We do this lazily to minimize issues related to insufficient - // system entropy. See #189 +// CONCATENATED MODULE: ./node_modules/underscore/modules/isRegExp.js - if (node == null || clockseq == null) { - const seedBytes = options.random || (options.rng || rng)(); - if (node == null) { - // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) - node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; - } +/* harmony default export */ const isRegExp = (tagTester('RegExp')); - if (clockseq == null) { - // Per 4.2.2, randomize (14 bit) clockseq - clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; - } - } // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. +// CONCATENATED MODULE: ./node_modules/underscore/modules/isError.js - let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock +/* harmony default export */ const isError = (tagTester('Error')); - let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSymbol.js - const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval +/* harmony default export */ const isSymbol = (tagTester('Symbol')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArrayBuffer.js - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } // Per 4.2.1.2 Throw error if too many uuids are requested +/* harmony default export */ const isArrayBuffer = (tagTester('ArrayBuffer')); - if (nsecs >= 10000) { - throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFunction.js - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; // `time_low` - const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; // `time_mid` +var isFunction = tagTester('Function'); - const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; // `time_high_and_version` +// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old +// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). +var nodelist = root.document && root.document.childNodes; +if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { + isFunction = function(obj) { + return typeof obj == 'function' || false; + }; +} - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version +/* harmony default export */ const modules_isFunction = (isFunction); - b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) +// CONCATENATED MODULE: ./node_modules/underscore/modules/_hasObjectTag.js - b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` - b[i++] = clockseq & 0xff; // `node` +/* harmony default export */ const _hasObjectTag = (tagTester('Object')); - for (let n = 0; n < 6; ++n) { - b[i + n] = node[n]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_stringTagBug.js - return buf || esm_node_stringify(b); -} -/* harmony default export */ const esm_node_v1 = (v1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js +// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. +// In IE 11, the most common among them, this problem also applies to +// `Map`, `WeakMap` and `Set`. +var hasStringTagBug = ( + supportsDataView && _hasObjectTag(new DataView(new ArrayBuffer(8))) + ), + isIE11 = (typeof Map !== 'undefined' && _hasObjectTag(new Map)); -function parse(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isDataView.js - let v; - const arr = new Uint8Array(16); // Parse ########-....-....-....-............ - arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; - arr[1] = v >>> 16 & 0xff; - arr[2] = v >>> 8 & 0xff; - arr[3] = v & 0xff; // Parse ........-####-....-....-............ - arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; - arr[5] = v & 0xff; // Parse ........-....-####-....-............ - arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; - arr[7] = v & 0xff; // Parse ........-....-....-####-............ - arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; - arr[9] = v & 0xff; // Parse ........-....-....-....-############ - // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) +var isDataView = tagTester('DataView'); - arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; - arr[11] = v / 0x100000000 & 0xff; - arr[12] = v >>> 24 & 0xff; - arr[13] = v >>> 16 & 0xff; - arr[14] = v >>> 8 & 0xff; - arr[15] = v & 0xff; - return arr; +// In IE 10 - Edge 13, we need a different heuristic +// to determine whether an object is a `DataView`. +function ie10IsDataView(obj) { + return obj != null && modules_isFunction(obj.getInt8) && isArrayBuffer(obj.buffer); } -/* harmony default export */ const esm_node_parse = (parse); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js +/* harmony default export */ const modules_isDataView = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArray.js -function stringToBytes(str) { - str = unescape(encodeURIComponent(str)); // UTF8 escape - const bytes = []; +// Is a given value an array? +// Delegates to ECMA5's native `Array.isArray`. +/* harmony default export */ const isArray = (nativeIsArray || tagTester('Array')); - for (let i = 0; i < str.length; ++i) { - bytes.push(str.charCodeAt(i)); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_has.js - return bytes; + +// Internal function to check whether `key` is an own property name of `obj`. +function has(obj, key) { + return obj != null && _setup_hasOwnProperty.call(obj, key); } -const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; -const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; -/* harmony default export */ function v35(name, version, hashfunc) { - function generateUUID(value, namespace, buf, offset) { - if (typeof value === 'string') { - value = stringToBytes(value); - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isArguments.js - if (typeof namespace === 'string') { - namespace = esm_node_parse(namespace); - } - if (namespace.length !== 16) { - throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); - } // Compute hash of namespace and value, Per 4.3 - // Future: Use spread syntax when supported on all platforms, e.g. `bytes = - // hashfunc([...namespace, ... value])` +var isArguments = tagTester('Arguments'); - let bytes = new Uint8Array(16 + value.length); - bytes.set(namespace); - bytes.set(value, namespace.length); - bytes = hashfunc(bytes); - bytes[6] = bytes[6] & 0x0f | version; - bytes[8] = bytes[8] & 0x3f | 0x80; +// Define a fallback version of the method in browsers (ahem, IE < 9), where +// there isn't any inspectable "Arguments" type. +(function() { + if (!isArguments(arguments)) { + isArguments = function(obj) { + return has(obj, 'callee'); + }; + } +}()); - if (buf) { - offset = offset || 0; +/* harmony default export */ const modules_isArguments = (isArguments); - for (let i = 0; i < 16; ++i) { - buf[offset + i] = bytes[i]; - } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isFinite.js - return buf; - } - return esm_node_stringify(bytes); - } // Function#name is not settable on some platforms (#270) +// Is a given object a finite number? +function isFinite_isFinite(obj) { + return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); +} - try { - generateUUID.name = name; // eslint-disable-next-line no-empty - } catch (err) {} // For CommonJS default export support +// CONCATENATED MODULE: ./node_modules/underscore/modules/isNaN.js - generateUUID.DNS = DNS; - generateUUID.URL = URL; - return generateUUID; + +// Is the given value `NaN`? +function isNaN_isNaN(obj) { + return isNumber(obj) && _isNaN(obj); } -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/constant.js +// Predicate-generating function. Often useful outside of Underscore. +function constant(value) { + return function() { + return value; + }; +} -function md5(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createSizePropertyCheck.js + + +// Common internal logic for `isArrayLike` and `isBufferLike`. +function createSizePropertyCheck(getSizeProperty) { + return function(collection) { + var sizeProperty = getSizeProperty(collection); + return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; } +} - return external_crypto_default().createHash('md5').update(bytes).digest(); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_shallowProperty.js +// Internal helper to generate a function to obtain property `key` from `obj`. +function shallowProperty(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; } -/* harmony default export */ const esm_node_md5 = (md5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getByteLength.js -const v3 = v35('v3', 0x30, esm_node_md5); -/* harmony default export */ const esm_node_v3 = (v3); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js +// Internal helper to obtain the `byteLength` property of an object. +/* harmony default export */ const _getByteLength = (shallowProperty('byteLength')); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isBufferLike.js -function v4(options, buf, offset) { - options = options || {}; - const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = rnds[6] & 0x0f | 0x40; - rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided +// Internal helper to determine whether we should spend extensive checks against +// `ArrayBuffer` et al. +/* harmony default export */ const _isBufferLike = (createSizePropertyCheck(_getByteLength)); - if (buf) { - offset = offset || 0; +// CONCATENATED MODULE: ./node_modules/underscore/modules/isTypedArray.js - for (let i = 0; i < 16; ++i) { - buf[offset + i] = rnds[i]; - } - return buf; - } - return esm_node_stringify(rnds); -} -/* harmony default export */ const esm_node_v4 = (v4); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js +// Is a given value a typed array? +var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; +function isTypedArray(obj) { + // `ArrayBuffer.isView` is the most future-proof, so use it when available. + // Otherwise, fall back on the above regular expression. + return nativeIsView ? (nativeIsView(obj) && !modules_isDataView(obj)) : + _isBufferLike(obj) && typedArrayPattern.test(_setup_toString.call(obj)); +} -function sha1(bytes) { - if (Array.isArray(bytes)) { - bytes = Buffer.from(bytes); - } else if (typeof bytes === 'string') { - bytes = Buffer.from(bytes, 'utf8'); - } +/* harmony default export */ const modules_isTypedArray = (supportsArrayBuffer ? isTypedArray : constant(false)); - return external_crypto_default().createHash('sha1').update(bytes).digest(); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/_getLength.js -/* harmony default export */ const esm_node_sha1 = (sha1); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js +// Internal helper to obtain the `length` property of an object. +/* harmony default export */ const _getLength = (shallowProperty('length')); -const v5 = v35('v5', 0x50, esm_node_sha1); -/* harmony default export */ const esm_node_v5 = (v5); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js -/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js +// CONCATENATED MODULE: ./node_modules/underscore/modules/_collectNonEnumProps.js -function version(uuid) { - if (!esm_node_validate(uuid)) { - throw TypeError('Invalid UUID'); - } - return parseInt(uuid.substr(14, 1), 16); -} -/* harmony default export */ const esm_node_version = (version); -// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js +// Internal helper to create a simple lookup structure. +// `collectNonEnumProps` used to depend on `_.contains`, but this led to +// circular imports. `emulatedSet` is a one-off solution that only works for +// arrays of strings. +function emulatedSet(keys) { + var hash = {}; + for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; + return { + contains: function(key) { return hash[key] === true; }, + push: function(key) { + hash[key] = true; + return keys.push(key); + } + }; +} +// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't +// be iterated by `for key in ...` and thus missed. Extends `keys` in place if +// needed. +function collectNonEnumProps(obj, keys) { + keys = emulatedSet(keys); + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (modules_isFunction(constructor) && constructor.prototype) || ObjProto; + // Constructor is a special case. + var prop = 'constructor'; + if (has(obj, prop) && !keys.contains(prop)) keys.push(prop); + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { + keys.push(prop); + } + } +} +// CONCATENATED MODULE: ./node_modules/underscore/modules/keys.js +// Retrieve the names of an object's own properties. +// Delegates to **ECMAScript 5**'s native `Object.keys`. +function keys(obj) { + if (!isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; +} -/***/ }), +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEmpty.js -/***/ 2940: -/***/ ((module) => { -// Returns a wrapper function that returns a wrapped callback -// The wrapper function should do some stuff, and return a -// presumably different callback function. -// This makes sure that own properties are retained, so that -// decorations and such are not lost along the way. -module.exports = wrappy -function wrappy (fn, cb) { - if (fn && cb) return wrappy(fn)(cb) - if (typeof fn !== 'function') - throw new TypeError('need wrapper function') - Object.keys(fn).forEach(function (k) { - wrapper[k] = fn[k] - }) - return wrapper - function wrapper() { - var args = new Array(arguments.length) - for (var i = 0; i < args.length; i++) { - args[i] = arguments[i] - } - var ret = fn.apply(this, args) - var cb = args[args.length-1] - if (typeof ret === 'function' && ret !== cb) { - Object.keys(cb).forEach(function (k) { - ret[k] = cb[k] - }) - } - return ret - } +// Is a given array, string, or object empty? +// An "empty" object has no enumerable own-properties. +function isEmpty(obj) { + if (obj == null) return true; + // Skip the more expensive `toString`-based type checks if `obj` has no + // `.length`. + var length = _getLength(obj); + if (typeof length == 'number' && ( + isArray(obj) || isString(obj) || modules_isArguments(obj) + )) return length === 0; + return _getLength(keys(obj)) === 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMatch.js -/***/ }), -/***/ 1641: -/***/ ((__unused_webpack_module, exports) => { +// Returns whether an object has a given set of `key:value` pairs. +function isMatch(object, attrs) { + var _keys = keys(attrs), length = _keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = _keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; +} -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore.js -Object.defineProperty(exports, "__esModule", ({ value: true })); - -// Current version. -var VERSION = '1.13.4'; - -// Establish the root object, `window` (`self`) in the browser, `global` -// on the server, or `this` in some virtual machines. We use `self` -// instead of `window` for `WebWorker` support. -var root = (typeof self == 'object' && self.self === self && self) || - (typeof global == 'object' && global.global === global && global) || - Function('return this')() || - {}; -// Save bytes in the minified (but not gzipped) version: -var ArrayProto = Array.prototype, ObjProto = Object.prototype; -var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; +// If Underscore is called as a function, it returns a wrapped object that can +// be used OO-style. This wrapper holds altered versions of all functions added +// through `_.mixin`. Wrapped objects may be chained. +function _(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; +} -// Create quick reference variables for speed access to core prototypes. -var push = ArrayProto.push, - slice = ArrayProto.slice, - toString = ObjProto.toString, - hasOwnProperty = ObjProto.hasOwnProperty; +_.VERSION = VERSION; -// Modern feature detection. -var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined', - supportsDataView = typeof DataView !== 'undefined'; +// Extracts the result from a wrapped and chained object. +_.prototype.value = function() { + return this._wrapped; +}; -// All **ECMAScript 5+** native function implementations that we hope to use -// are declared here. -var nativeIsArray = Array.isArray, - nativeKeys = Object.keys, - nativeCreate = Object.create, - nativeIsView = supportsArrayBuffer && ArrayBuffer.isView; +// Provide unwrapping proxies for some methods used in engine operations +// such as arithmetic and JSON stringification. +_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; -// Create references to these builtin functions because we override them. -var _isNaN = isNaN, - _isFinite = isFinite; +_.prototype.toString = function() { + return String(this._wrapped); +}; -// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. -var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); -var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', - 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toBufferView.js -// The largest integer that can be represented exactly. -var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; -// Some functions take a variable number of arguments, or a few expected -// arguments at the beginning and then a variable number of values to operate -// on. This helper accumulates all remaining arguments past the function’s -// argument length (or an explicit `startIndex`), into an array that becomes -// the last argument. Similar to ES6’s "rest parameter". -function restArguments(func, startIndex) { - startIndex = startIndex == null ? func.length - 1 : +startIndex; - return function() { - var length = Math.max(arguments.length - startIndex, 0), - rest = Array(length), - index = 0; - for (; index < length; index++) { - rest[index] = arguments[index + startIndex]; - } - switch (startIndex) { - case 0: return func.call(this, rest); - case 1: return func.call(this, arguments[0], rest); - case 2: return func.call(this, arguments[0], arguments[1], rest); - } - var args = Array(startIndex + 1); - for (index = 0; index < startIndex; index++) { - args[index] = arguments[index]; - } - args[startIndex] = rest; - return func.apply(this, args); - }; +// Internal function to wrap or shallow-copy an ArrayBuffer, +// typed array or DataView to a new view, reusing the buffer. +function toBufferView(bufferSource) { + return new Uint8Array( + bufferSource.buffer || bufferSource, + bufferSource.byteOffset || 0, + _getByteLength(bufferSource) + ); } -// Is a given variable an object? -function isObject(obj) { - var type = typeof obj; - return type === 'function' || (type === 'object' && !!obj); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/isEqual.js -// Is a given value equal to null? -function isNull(obj) { - return obj === null; -} -// Is a given variable undefined? -function isUndefined(obj) { - return obj === void 0; -} -// Is a given value a boolean? -function isBoolean(obj) { - return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; -} -// Is a given value a DOM element? -function isElement(obj) { - return !!(obj && obj.nodeType === 1); -} -// Internal function for creating a `toString`-based type tester. -function tagTester(name) { - var tag = '[object ' + name + ']'; - return function(obj) { - return toString.call(obj) === tag; - }; -} -var isString = tagTester('String'); -var isNumber = tagTester('Number'); -var isDate = tagTester('Date'); -var isRegExp = tagTester('RegExp'); -var isError = tagTester('Error'); -var isSymbol = tagTester('Symbol'); +// We use this string twice, so give it a name for minification. +var tagDataView = '[object DataView]'; -var isArrayBuffer = tagTester('ArrayBuffer'); +// Internal recursive comparison function for `_.isEqual`. +function eq(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // `null` or `undefined` only equal to itself (strict comparison). + if (a == null || b == null) return false; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); +} -var isFunction = tagTester('Function'); +// Internal recursive comparison function for `_.isEqual`. +function deepEq(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = _setup_toString.call(a); + if (className !== _setup_toString.call(b)) return false; + // Work around a bug in IE 10 - Edge 13. + if (hasStringTagBug && className == '[object Object]' && modules_isDataView(a)) { + if (!modules_isDataView(b)) return false; + className = tagDataView; + } + switch (className) { + // These types are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + case '[object ArrayBuffer]': + case tagDataView: + // Coerce to typed array so we can fall through. + return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); + } -// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old -// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). -var nodelist = root.document && root.document.childNodes; -if ( true && typeof Int8Array != 'object' && typeof nodelist != 'function') { - isFunction = function(obj) { - return typeof obj == 'function' || false; - }; -} + var areArrays = className === '[object Array]'; + if (!areArrays && modules_isTypedArray(a)) { + var byteLength = _getByteLength(a); + if (byteLength !== _getByteLength(b)) return false; + if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; + areArrays = true; + } + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; -var isFunction$1 = isFunction; + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(modules_isFunction(aCtor) && aCtor instanceof aCtor && + modules_isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. -var hasObjectTag = tagTester('Object'); + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } -// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`. -// In IE 11, the most common among them, this problem also applies to -// `Map`, `WeakMap` and `Set`. -var hasStringTagBug = ( - supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8))) - ), - isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map)); + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); -var isDataView = tagTester('DataView'); + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var _keys = keys(a), key; + length = _keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = _keys[length]; + if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; +} -// In IE 10 - Edge 13, we need a different heuristic -// to determine whether an object is a `DataView`. -function ie10IsDataView(obj) { - return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer); +// Perform a deep comparison to check if two objects are equal. +function isEqual(a, b) { + return eq(a, b); } -var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView); +// CONCATENATED MODULE: ./node_modules/underscore/modules/allKeys.js -// Is a given value an array? -// Delegates to ECMA5's native `Array.isArray`. -var isArray = nativeIsArray || tagTester('Array'); -// Internal function to check whether `key` is an own property name of `obj`. -function has$1(obj, key) { - return obj != null && hasOwnProperty.call(obj, key); + + +// Retrieve all the enumerable property names of an object. +function allKeys(obj) { + if (!isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; } -var isArguments = tagTester('Arguments'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/_methodFingerprint.js -// Define a fallback version of the method in browsers (ahem, IE < 9), where -// there isn't any inspectable "Arguments" type. -(function() { - if (!isArguments(arguments)) { - isArguments = function(obj) { - return has$1(obj, 'callee'); - }; - } -}()); -var isArguments$1 = isArguments; -// Is a given object a finite number? -function isFinite$1(obj) { - return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj)); -} -// Is the given value `NaN`? -function isNaN$1(obj) { - return isNumber(obj) && _isNaN(obj); -} - -// Predicate-generating function. Often useful outside of Underscore. -function constant(value) { - return function() { - return value; +// Since the regular `Object.prototype.toString` type tests don't work for +// some types in IE 11, we use a fingerprinting heuristic instead, based +// on the methods. It's not great, but it's the best we got. +// The fingerprint method lists are defined below. +function ie11fingerprint(methods) { + var length = _getLength(methods); + return function(obj) { + if (obj == null) return false; + // `Map`, `WeakMap` and `Set` have no enumerable keys. + var keys = allKeys(obj); + if (_getLength(keys)) return false; + for (var i = 0; i < length; i++) { + if (!modules_isFunction(obj[methods[i]])) return false; + } + // If we are testing against `WeakMap`, we need to ensure that + // `obj` doesn't have a `forEach` method in order to distinguish + // it from a regular `Map`. + return methods !== weakMapMethods || !modules_isFunction(obj[forEachName]); }; } -// Common internal logic for `isArrayLike` and `isBufferLike`. -function createSizePropertyCheck(getSizeProperty) { - return function(collection) { - var sizeProperty = getSizeProperty(collection); - return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX; +// In the interest of compact minification, we write +// each string in the fingerprints only once. +var forEachName = 'forEach', + hasName = 'has', + commonInit = ['clear', 'delete'], + mapTail = ['get', hasName, 'set']; + +// `Map`, `WeakMap` and `Set` each have slightly different +// combinations of the above sublists. +var mapMethods = commonInit.concat(forEachName, mapTail), + weakMapMethods = commonInit.concat(mapTail), + setMethods = ['add'].concat(commonInit, forEachName, hasName); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isMap.js + + + + +/* harmony default export */ const isMap = (isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakMap.js + + + + +/* harmony default export */ const isWeakMap = (isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isSet.js + + + + +/* harmony default export */ const isSet = (isIE11 ? ie11fingerprint(setMethods) : tagTester('Set')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/isWeakSet.js + + +/* harmony default export */ const isWeakSet = (tagTester('WeakSet')); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/values.js + + +// Retrieve the values of an object's properties. +function values(obj) { + var _keys = keys(obj); + var length = _keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[_keys[i]]; } + return values; } -// Internal helper to generate a function to obtain property `key` from `obj`. -function shallowProperty(key) { - return function(obj) { - return obj == null ? void 0 : obj[key]; - }; +// CONCATENATED MODULE: ./node_modules/underscore/modules/pairs.js + + +// Convert an object into a list of `[key, value]` pairs. +// The opposite of `_.object` with one argument. +function pairs(obj) { + var _keys = keys(obj); + var length = _keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [_keys[i], obj[_keys[i]]]; + } + return pairs; } -// Internal helper to obtain the `byteLength` property of an object. -var getByteLength = shallowProperty('byteLength'); +// CONCATENATED MODULE: ./node_modules/underscore/modules/invert.js -// Internal helper to determine whether we should spend extensive checks against -// `ArrayBuffer` et al. -var isBufferLike = createSizePropertyCheck(getByteLength); -// Is a given value a typed array? -var typedArrayPattern = /\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/; -function isTypedArray(obj) { - // `ArrayBuffer.isView` is the most future-proof, so use it when available. - // Otherwise, fall back on the above regular expression. - return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) : - isBufferLike(obj) && typedArrayPattern.test(toString.call(obj)); +// Invert the keys and values of an object. The values must be serializable. +function invert(obj) { + var result = {}; + var _keys = keys(obj); + for (var i = 0, length = _keys.length; i < length; i++) { + result[obj[_keys[i]]] = _keys[i]; + } + return result; } -var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false); +// CONCATENATED MODULE: ./node_modules/underscore/modules/functions.js -// Internal helper to obtain the `length` property of an object. -var getLength = shallowProperty('length'); -// Internal helper to create a simple lookup structure. -// `collectNonEnumProps` used to depend on `_.contains`, but this led to -// circular imports. `emulatedSet` is a one-off solution that only works for -// arrays of strings. -function emulatedSet(keys) { - var hash = {}; - for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true; - return { - contains: function(key) { return hash[key] === true; }, - push: function(key) { - hash[key] = true; - return keys.push(key); +// Return a sorted list of the function names available on the object. +function functions(obj) { + var names = []; + for (var key in obj) { + if (modules_isFunction(obj[key])) names.push(key); + } + return names.sort(); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createAssigner.js +// An internal function for creating assigner functions. +function createAssigner(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } } + return obj; }; } -// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't -// be iterated by `for key in ...` and thus missed. Extends `keys` in place if -// needed. -function collectNonEnumProps(obj, keys) { - keys = emulatedSet(keys); - var nonEnumIdx = nonEnumerableProps.length; - var constructor = obj.constructor; - var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto; +// CONCATENATED MODULE: ./node_modules/underscore/modules/extend.js - // Constructor is a special case. - var prop = 'constructor'; - if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop); - while (nonEnumIdx--) { - prop = nonEnumerableProps[nonEnumIdx]; - if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) { - keys.push(prop); - } - } -} -// Retrieve the names of an object's own properties. -// Delegates to **ECMAScript 5**'s native `Object.keys`. -function keys(obj) { - if (!isObject(obj)) return []; - if (nativeKeys) return nativeKeys(obj); - var keys = []; - for (var key in obj) if (has$1(obj, key)) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} +// Extend a given object with all the properties in passed-in object(s). +/* harmony default export */ const extend = (createAssigner(allKeys)); -// Is a given array, string, or object empty? -// An "empty" object has no enumerable own-properties. -function isEmpty(obj) { - if (obj == null) return true; - // Skip the more expensive `toString`-based type checks if `obj` has no - // `.length`. - var length = getLength(obj); - if (typeof length == 'number' && ( - isArray(obj) || isString(obj) || isArguments$1(obj) - )) return length === 0; - return getLength(keys(obj)) === 0; -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/extendOwn.js -// Returns whether an object has a given set of `key:value` pairs. -function isMatch(object, attrs) { - var _keys = keys(attrs), length = _keys.length; - if (object == null) return !length; - var obj = Object(object); - for (var i = 0; i < length; i++) { - var key = _keys[i]; - if (attrs[key] !== obj[key] || !(key in obj)) return false; - } - return true; -} -// If Underscore is called as a function, it returns a wrapped object that can -// be used OO-style. This wrapper holds altered versions of all functions added -// through `_.mixin`. Wrapped objects may be chained. -function _$1(obj) { - if (obj instanceof _$1) return obj; - if (!(this instanceof _$1)) return new _$1(obj); - this._wrapped = obj; + +// Assigns a given object with all the own properties in the passed-in +// object(s). +// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) +/* harmony default export */ const extendOwn = (createAssigner(keys)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defaults.js + + + +// Fill in a given object with default properties. +/* harmony default export */ const defaults = (createAssigner(allKeys, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseCreate.js + + + +// Create a naked function reference for surrogate-prototype-swapping. +function ctor() { + return function(){}; } -_$1.VERSION = VERSION; +// An internal function for creating a new object that inherits from another. +function baseCreate(prototype) { + if (!isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + var Ctor = ctor(); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; +} -// Extracts the result from a wrapped and chained object. -_$1.prototype.value = function() { - return this._wrapped; -}; +// CONCATENATED MODULE: ./node_modules/underscore/modules/create.js -// Provide unwrapping proxies for some methods used in engine operations -// such as arithmetic and JSON stringification. -_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value; -_$1.prototype.toString = function() { - return String(this._wrapped); -}; -// Internal function to wrap or shallow-copy an ArrayBuffer, -// typed array or DataView to a new view, reusing the buffer. -function toBufferView(bufferSource) { - return new Uint8Array( - bufferSource.buffer || bufferSource, - bufferSource.byteOffset || 0, - getByteLength(bufferSource) - ); +// Creates an object that inherits from the given prototype object. +// If additional properties are provided then they will be added to the +// created object. +function create(prototype, props) { + var result = baseCreate(prototype); + if (props) extendOwn(result, props); + return result; } -// We use this string twice, so give it a name for minification. -var tagDataView = '[object DataView]'; +// CONCATENATED MODULE: ./node_modules/underscore/modules/clone.js -// Internal recursive comparison function for `_.isEqual`. -function eq(a, b, aStack, bStack) { - // Identical objects are equal. `0 === -0`, but they aren't identical. - // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal). - if (a === b) return a !== 0 || 1 / a === 1 / b; - // `null` or `undefined` only equal to itself (strict comparison). - if (a == null || b == null) return false; - // `NaN`s are equivalent, but non-reflexive. - if (a !== a) return b !== b; - // Exhaust primitive checks - var type = typeof a; - if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; - return deepEq(a, b, aStack, bStack); -} - -// Internal recursive comparison function for `_.isEqual`. -function deepEq(a, b, aStack, bStack) { - // Unwrap any wrapped objects. - if (a instanceof _$1) a = a._wrapped; - if (b instanceof _$1) b = b._wrapped; - // Compare `[[Class]]` names. - var className = toString.call(a); - if (className !== toString.call(b)) return false; - // Work around a bug in IE 10 - Edge 13. - if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) { - if (!isDataView$1(b)) return false; - className = tagDataView; - } - switch (className) { - // These types are compared by value. - case '[object RegExp]': - // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') - case '[object String]': - // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is - // equivalent to `new String("5")`. - return '' + a === '' + b; - case '[object Number]': - // `NaN`s are equivalent, but non-reflexive. - // Object(NaN) is equivalent to NaN. - if (+a !== +a) return +b !== +b; - // An `egal` comparison is performed for other numeric values. - return +a === 0 ? 1 / +a === 1 / b : +a === +b; - case '[object Date]': - case '[object Boolean]': - // Coerce dates and booleans to numeric primitive values. Dates are compared by their - // millisecond representations. Note that invalid dates with millisecond representations - // of `NaN` are not equivalent. - return +a === +b; - case '[object Symbol]': - return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); - case '[object ArrayBuffer]': - case tagDataView: - // Coerce to typed array so we can fall through. - return deepEq(toBufferView(a), toBufferView(b), aStack, bStack); - } - - var areArrays = className === '[object Array]'; - if (!areArrays && isTypedArray$1(a)) { - var byteLength = getByteLength(a); - if (byteLength !== getByteLength(b)) return false; - if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true; - areArrays = true; - } - if (!areArrays) { - if (typeof a != 'object' || typeof b != 'object') return false; - - // Objects with different constructors are not equivalent, but `Object`s or `Array`s - // from different frames are. - var aCtor = a.constructor, bCtor = b.constructor; - if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor && - isFunction$1(bCtor) && bCtor instanceof bCtor) - && ('constructor' in a && 'constructor' in b)) { - return false; - } - } - // Assume equality for cyclic structures. The algorithm for detecting cyclic - // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. - - // Initializing stack of traversed objects. - // It's done here since we only need them for objects and arrays comparison. - aStack = aStack || []; - bStack = bStack || []; - var length = aStack.length; - while (length--) { - // Linear search. Performance is inversely proportional to the number of - // unique nested structures. - if (aStack[length] === a) return bStack[length] === b; - } - - // Add the first object to the stack of traversed objects. - aStack.push(a); - bStack.push(b); - - // Recursively compare objects and arrays. - if (areArrays) { - // Compare array lengths to determine if a deep comparison is necessary. - length = a.length; - if (length !== b.length) return false; - // Deep compare the contents, ignoring non-numeric properties. - while (length--) { - if (!eq(a[length], b[length], aStack, bStack)) return false; - } - } else { - // Deep compare objects. - var _keys = keys(a), key; - length = _keys.length; - // Ensure that both objects contain the same number of properties before comparing deep equality. - if (keys(b).length !== length) return false; - while (length--) { - // Deep compare each member - key = _keys[length]; - if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false; - } - } - // Remove the first object from the stack of traversed objects. - aStack.pop(); - bStack.pop(); - return true; -} - -// Perform a deep comparison to check if two objects are equal. -function isEqual(a, b) { - return eq(a, b); -} - -// Retrieve all the enumerable property names of an object. -function allKeys(obj) { - if (!isObject(obj)) return []; - var keys = []; - for (var key in obj) keys.push(key); - // Ahem, IE < 9. - if (hasEnumBug) collectNonEnumProps(obj, keys); - return keys; -} - -// Since the regular `Object.prototype.toString` type tests don't work for -// some types in IE 11, we use a fingerprinting heuristic instead, based -// on the methods. It's not great, but it's the best we got. -// The fingerprint method lists are defined below. -function ie11fingerprint(methods) { - var length = getLength(methods); - return function(obj) { - if (obj == null) return false; - // `Map`, `WeakMap` and `Set` have no enumerable keys. - var keys = allKeys(obj); - if (getLength(keys)) return false; - for (var i = 0; i < length; i++) { - if (!isFunction$1(obj[methods[i]])) return false; - } - // If we are testing against `WeakMap`, we need to ensure that - // `obj` doesn't have a `forEach` method in order to distinguish - // it from a regular `Map`. - return methods !== weakMapMethods || !isFunction$1(obj[forEachName]); - }; -} - -// In the interest of compact minification, we write -// each string in the fingerprints only once. -var forEachName = 'forEach', - hasName = 'has', - commonInit = ['clear', 'delete'], - mapTail = ['get', hasName, 'set']; - -// `Map`, `WeakMap` and `Set` each have slightly different -// combinations of the above sublists. -var mapMethods = commonInit.concat(forEachName, mapTail), - weakMapMethods = commonInit.concat(mapTail), - setMethods = ['add'].concat(commonInit, forEachName, hasName); - -var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map'); - -var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap'); - -var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set'); - -var isWeakSet = tagTester('WeakSet'); - -// Retrieve the values of an object's properties. -function values(obj) { - var _keys = keys(obj); - var length = _keys.length; - var values = Array(length); - for (var i = 0; i < length; i++) { - values[i] = obj[_keys[i]]; - } - return values; -} - -// Convert an object into a list of `[key, value]` pairs. -// The opposite of `_.object` with one argument. -function pairs(obj) { - var _keys = keys(obj); - var length = _keys.length; - var pairs = Array(length); - for (var i = 0; i < length; i++) { - pairs[i] = [_keys[i], obj[_keys[i]]]; - } - return pairs; -} - -// Invert the keys and values of an object. The values must be serializable. -function invert(obj) { - var result = {}; - var _keys = keys(obj); - for (var i = 0, length = _keys.length; i < length; i++) { - result[obj[_keys[i]]] = _keys[i]; - } - return result; -} - -// Return a sorted list of the function names available on the object. -function functions(obj) { - var names = []; - for (var key in obj) { - if (isFunction$1(obj[key])) names.push(key); - } - return names.sort(); -} - -// An internal function for creating assigner functions. -function createAssigner(keysFunc, defaults) { - return function(obj) { - var length = arguments.length; - if (defaults) obj = Object(obj); - if (length < 2 || obj == null) return obj; - for (var index = 1; index < length; index++) { - var source = arguments[index], - keys = keysFunc(source), - l = keys.length; - for (var i = 0; i < l; i++) { - var key = keys[i]; - if (!defaults || obj[key] === void 0) obj[key] = source[key]; - } - } - return obj; - }; -} - -// Extend a given object with all the properties in passed-in object(s). -var extend = createAssigner(allKeys); - -// Assigns a given object with all the own properties in the passed-in -// object(s). -// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) -var extendOwn = createAssigner(keys); - -// Fill in a given object with default properties. -var defaults = createAssigner(allKeys, true); - -// Create a naked function reference for surrogate-prototype-swapping. -function ctor() { - return function(){}; -} - -// An internal function for creating a new object that inherits from another. -function baseCreate(prototype) { - if (!isObject(prototype)) return {}; - if (nativeCreate) return nativeCreate(prototype); - var Ctor = ctor(); - Ctor.prototype = prototype; - var result = new Ctor; - Ctor.prototype = null; - return result; -} - -// Creates an object that inherits from the given prototype object. -// If additional properties are provided then they will be added to the -// created object. -function create(prototype, props) { - var result = baseCreate(prototype); - if (props) extendOwn(result, props); - return result; -} - -// Create a (shallow-cloned) duplicate of an object. -function clone(obj) { - if (!isObject(obj)) return obj; - return isArray(obj) ? obj.slice() : extend({}, obj); + + + +// Create a (shallow-cloned) duplicate of an object. +function clone(obj) { + if (!isObject(obj)) return obj; + return isArray(obj) ? obj.slice() : extend({}, obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/tap.js // Invokes `interceptor` with the `obj` and then returns `obj`. // The primary purpose of this method is to "tap into" a method chain, in // order to perform operations on intermediate results within the chain. @@ -17143,19 +17208,28 @@ function tap(obj, interceptor) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toPath.js + + + // Normalize a (deep) property `path` to array. // Like `_.iteratee`, this function can be customized. -function toPath$1(path) { +function toPath(path) { return isArray(path) ? path : [path]; } -_$1.toPath = toPath$1; +_.toPath = toPath; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_toPath.js + + // Internal wrapper for `_.toPath` to enable minification. // Similar to `cb` for `_.iteratee`. -function toPath(path) { - return _$1.toPath(path); +function _toPath_toPath(path) { + return _.toPath(path); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_deepGet.js // Internal function to obtain a nested property in `obj` along `path`. function deepGet(obj, path) { var length = path.length; @@ -17166,34 +17240,48 @@ function deepGet(obj, path) { return length ? obj : void 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/get.js + + + + // Get the value of the (deep) property on `path` from `object`. // If any property in `path` does not exist or if the value is // `undefined`, return `defaultValue` instead. // The `path` is normalized through `_.toPath`. function get(object, path, defaultValue) { - var value = deepGet(object, toPath(path)); + var value = deepGet(object, _toPath_toPath(path)); return isUndefined(value) ? defaultValue : value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/has.js + + + // Shortcut function for checking if an object has a given property directly on // itself (in other words, not on a prototype). Unlike the internal `has` // function, this public version can also traverse nested properties. -function has(obj, path) { - path = toPath(path); +function has_has(obj, path) { + path = _toPath_toPath(path); var length = path.length; for (var i = 0; i < length; i++) { var key = path[i]; - if (!has$1(obj, key)) return false; + if (!has(obj, key)) return false; obj = obj[key]; } return !!length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/identity.js // Keep the identity function around for default iteratees. function identity(value) { return value; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/matcher.js + + + // Returns a predicate for checking whether an object has a given set of // `key:value` pairs. function matcher(attrs) { @@ -17203,15 +17291,20 @@ function matcher(attrs) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/property.js + + + // Creates a function that, when passed an object, will traverse that object’s // properties down the given `path`, specified as an array of keys or indices. function property(path) { - path = toPath(path); + path = _toPath_toPath(path); return function(obj) { return deepGet(obj, path); }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_optimizeCb.js // Internal function that returns an efficient (for current engines) version // of the passed-in callback, to be repeatedly applied in other Underscore // functions. @@ -17234,31 +17327,53 @@ function optimizeCb(func, context, argCount) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_baseIteratee.js + + + + + + + + // An internal function to generate callbacks that can be applied to each // element in a collection, returning the desired result — either `_.identity`, // an arbitrary callback, a property matcher, or a property accessor. function baseIteratee(value, context, argCount) { if (value == null) return identity; - if (isFunction$1(value)) return optimizeCb(value, context, argCount); + if (modules_isFunction(value)) return optimizeCb(value, context, argCount); if (isObject(value) && !isArray(value)) return matcher(value); return property(value); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/iteratee.js + + + // External wrapper for our callback generator. Users may customize // `_.iteratee` if they want additional predicate/iteratee shorthand styles. // This abstraction hides the internal-only `argCount` argument. function iteratee(value, context) { return baseIteratee(value, context, Infinity); } -_$1.iteratee = iteratee; +_.iteratee = iteratee; + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_cb.js + + + // The function we call internally to generate a callback. It invokes // `_.iteratee` if overridden, otherwise `baseIteratee`. function cb(value, context, argCount) { - if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context); + if (_.iteratee !== iteratee) return _.iteratee(value, context); return baseIteratee(value, context, argCount); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/mapObject.js + + + // Returns the results of applying the `iteratee` to each element of `obj`. // In contrast to `_.map` it returns an object. function mapObject(obj, iteratee, context) { @@ -17273,9 +17388,14 @@ function mapObject(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/noop.js // Predicate-generating function. Often useful outside of Underscore. function noop(){} +// CONCATENATED MODULE: ./node_modules/underscore/modules/propertyOf.js + + + // Generates a function for a given object that returns a given property. function propertyOf(obj) { if (obj == null) return noop; @@ -17284,6 +17404,9 @@ function propertyOf(obj) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/times.js + + // Run a function **n** times. function times(n, iteratee, context) { var accum = Array(Math.max(0, n)); @@ -17292,6 +17415,7 @@ function times(n, iteratee, context) { return accum; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/random.js // Return a random integer between `min` and `max` (inclusive). function random(min, max) { if (max == null) { @@ -17301,10 +17425,14 @@ function random(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/now.js // A (possibly faster) way to get the current timestamp as an integer. -var now = Date.now || function() { +/* harmony default export */ const now = (Date.now || function() { return new Date().getTime(); -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createEscaper.js + // Internal helper to generate functions for escaping and unescaping strings // to/from HTML interpolation. @@ -17322,32 +17450,53 @@ function createEscaper(map) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_escapeMap.js // Internal list of HTML entities for escaping. -var escapeMap = { +/* harmony default export */ const _escapeMap = ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''', '`': '`' -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/escape.js + + // Function for escaping strings to HTML interpolation. -var _escape = createEscaper(escapeMap); +/* harmony default export */ const modules_escape = (createEscaper(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_unescapeMap.js + + // Internal list of HTML entities for unescaping. -var unescapeMap = invert(escapeMap); +/* harmony default export */ const _unescapeMap = (invert(_escapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unescape.js + + // Function for unescaping strings from HTML interpolation. -var _unescape = createEscaper(unescapeMap); +/* harmony default export */ const modules_unescape = (createEscaper(_unescapeMap)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/templateSettings.js + // By default, Underscore uses ERB-style template delimiters. Change the // following template settings to use alternative delimiters. -var templateSettings = _$1.templateSettings = { +/* harmony default export */ const templateSettings = (_.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g -}; +}); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/template.js + + + // When customizing `_.templateSettings`, if you don't want to define an // interpolation, evaluation or escaping regex, we need one that is @@ -17384,7 +17533,7 @@ var bareIdentifier = /^\s*(\w|\$)+\s*$/; // NB: `oldSettings` only exists for backwards compatibility. function template(text, settings, oldSettings) { if (!settings && oldSettings) settings = oldSettings; - settings = defaults({}, settings, _$1.templateSettings); + settings = defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. var matcher = RegExp([ @@ -17438,7 +17587,7 @@ function template(text, settings, oldSettings) { } var template = function(data) { - return render.call(this, data, _$1); + return render.call(this, data, _); }; // Provide the compiled source as a convenience for precompilation. @@ -17447,14 +17596,18 @@ function template(text, settings, oldSettings) { return template; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/result.js + + + // Traverses the children of `obj` along `path`. If a child is a function, it // is invoked with its parent as context. Returns the value of the final // child, or `fallback` if any child is undefined. function result(obj, path, fallback) { - path = toPath(path); + path = _toPath_toPath(path); var length = path.length; if (!length) { - return isFunction$1(fallback) ? fallback.call(obj) : fallback; + return modules_isFunction(fallback) ? fallback.call(obj) : fallback; } for (var i = 0; i < length; i++) { var prop = obj == null ? void 0 : obj[path[i]]; @@ -17462,11 +17615,12 @@ function result(obj, path, fallback) { prop = fallback; i = length; // Ensure we don't continue iterating. } - obj = isFunction$1(prop) ? prop.call(obj) : prop; + obj = modules_isFunction(prop) ? prop.call(obj) : prop; } return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniqueId.js // Generate a unique integer id (unique within the entire client session). // Useful for temporary DOM ids. var idCounter = 0; @@ -17475,13 +17629,20 @@ function uniqueId(prefix) { return prefix ? prefix + id : id; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/chain.js + + // Start chaining a wrapped Underscore object. function chain(obj) { - var instance = _$1(obj); + var instance = _(obj); instance._chain = true; return instance; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_executeBound.js + + + // Internal function to execute `sourceFunc` bound to `context` with optional // `args`. Determines whether to execute a function as a constructor or as a // normal function. @@ -17493,6 +17654,11 @@ function executeBound(sourceFunc, boundFunc, context, callingContext, args) { return self; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/partial.js + + + + // Partially apply a function by creating a version that has had some of its // arguments pre-filled, without changing its dynamic `this` context. `_` acts // as a placeholder by default, allowing any combination of arguments to be @@ -17511,26 +17677,42 @@ var partial = restArguments(function(func, boundArgs) { return bound; }); -partial.placeholder = _$1; +partial.placeholder = _; +/* harmony default export */ const modules_partial = (partial); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/bind.js + + + // Create a function bound to a given object (assigning `this`, and arguments, // optionally). -var bind = restArguments(function(func, context, args) { - if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function'); +/* harmony default export */ const bind = (restArguments(function(func, context, args) { + if (!modules_isFunction(func)) throw new TypeError('Bind must be called on a function'); var bound = restArguments(function(callArgs) { return executeBound(func, bound, context, this, args.concat(callArgs)); }); return bound; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_isArrayLike.js + + // Internal helper for collection methods to determine whether a collection // should be iterated as an array or as an object. // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 -var isArrayLike = createSizePropertyCheck(getLength); +/* harmony default export */ const _isArrayLike = (createSizePropertyCheck(_getLength)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_flatten.js + + + + // Internal implementation of a recursive `flatten` function. -function flatten$1(input, depth, strict, output) { +function flatten(input, depth, strict, output) { output = output || []; if (!depth && depth !== 0) { depth = Infinity; @@ -17538,12 +17720,12 @@ function flatten$1(input, depth, strict, output) { return output.concat(input); } var idx = output.length; - for (var i = 0, length = getLength(input); i < length; i++) { + for (var i = 0, length = _getLength(input); i < length; i++) { var value = input[i]; - if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) { + if (_isArrayLike(value) && (isArray(value) || modules_isArguments(value))) { // Flatten current level of array or arguments object. if (depth > 1) { - flatten$1(value, depth - 1, strict, output); + flatten(value, depth - 1, strict, output); idx = output.length; } else { var j = 0, len = value.length; @@ -17556,11 +17738,16 @@ function flatten$1(input, depth, strict, output) { return output; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/bindAll.js + + + + // Bind a number of an object's methods to that object. Remaining arguments // are the method names to be bound. Useful for ensuring that all callbacks // defined on an object belong to it. -var bindAll = restArguments(function(obj, keys) { - keys = flatten$1(keys, false, false); +/* harmony default export */ const bindAll = (restArguments(function(obj, keys) { + keys = flatten(keys, false, false); var index = keys.length; if (index < 1) throw new Error('bindAll must be passed function names'); while (index--) { @@ -17568,31 +17755,45 @@ var bindAll = restArguments(function(obj, keys) { obj[key] = bind(obj[key], obj); } return obj; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/memoize.js + // Memoize an expensive function by storing its results. function memoize(func, hasher) { var memoize = function(key) { var cache = memoize.cache; var address = '' + (hasher ? hasher.apply(this, arguments) : key); - if (!has$1(cache, address)) cache[address] = func.apply(this, arguments); + if (!has(cache, address)) cache[address] = func.apply(this, arguments); return cache[address]; }; memoize.cache = {}; return memoize; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/delay.js + + // Delays a function for the given number of milliseconds, and then calls // it with the arguments supplied. -var delay = restArguments(function(func, wait, args) { +/* harmony default export */ const delay = (restArguments(function(func, wait, args) { return setTimeout(function() { return func.apply(null, args); }, wait); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/defer.js + + + // Defers a function, scheduling it to run after the current call stack has // cleared. -var defer = partial(delay, _$1, 1); +/* harmony default export */ const defer = (modules_partial(delay, _, 1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/throttle.js + // Returns a function, that, when invoked, will only be triggered at most once // during a given window of time. Normally, the throttled function will run @@ -17640,6 +17841,10 @@ function throttle(func, wait, options) { return throttled; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/debounce.js + + + // When a sequence of calls of the returned function ends, the argument // function is triggered. The end of a sequence is defined by the `wait` // parameter. If `immediate` is passed, the argument function will be @@ -17678,13 +17883,17 @@ function debounce(func, wait, immediate) { return debounced; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/wrap.js + + // Returns the first function passed as an argument to the second, // allowing you to adjust arguments, run code before and after, and // conditionally execute the original function. function wrap(func, wrapper) { - return partial(wrapper, func); + return modules_partial(wrapper, func); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/negate.js // Returns a negated version of the passed-in predicate. function negate(predicate) { return function() { @@ -17692,6 +17901,7 @@ function negate(predicate) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/compose.js // Returns a function that is the composition of a list of functions, each // consuming the return value of the function that follows. function compose() { @@ -17705,6 +17915,7 @@ function compose() { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/after.js // Returns a function that will only be executed on and after the Nth call. function after(times, func) { return function() { @@ -17714,6 +17925,7 @@ function after(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/before.js // Returns a function that will only be executed up to (but not including) the // Nth call. function before(times, func) { @@ -17727,9 +17939,17 @@ function before(times, func) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/once.js + + + // Returns a function that will be executed at most one time, no matter how // often you call it. Useful for lazy initialization. -var once = partial(before, 2); +/* harmony default export */ const once = (modules_partial(before, 2)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findKey.js + + // Returns the first key on an object that passes a truth test. function findKey(obj, predicate, context) { @@ -17741,11 +17961,15 @@ function findKey(obj, predicate, context) { } } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createPredicateIndexFinder.js + + + // Internal function to generate `_.findIndex` and `_.findLastIndex`. function createPredicateIndexFinder(dir) { return function(array, predicate, context) { predicate = cb(predicate, context); - var length = getLength(array); + var length = _getLength(array); var index = dir > 0 ? 0 : length - 1; for (; index >= 0 && index < length; index += dir) { if (predicate(array[index], index, array)) return index; @@ -17754,18 +17978,28 @@ function createPredicateIndexFinder(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findIndex.js + + // Returns the first index on an array-like that passes a truth test. -var findIndex = createPredicateIndexFinder(1); +/* harmony default export */ const findIndex = (createPredicateIndexFinder(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/findLastIndex.js + // Returns the last index on an array-like that passes a truth test. -var findLastIndex = createPredicateIndexFinder(-1); +/* harmony default export */ const findLastIndex = (createPredicateIndexFinder(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortedIndex.js + + // Use a comparator function to figure out the smallest index at which // an object should be inserted so as to maintain order. Uses binary search. function sortedIndex(array, obj, iteratee, context) { iteratee = cb(iteratee, context, 1); var value = iteratee(obj); - var low = 0, high = getLength(array); + var low = 0, high = _getLength(array); while (low < high) { var mid = Math.floor((low + high) / 2); if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; @@ -17773,10 +18007,15 @@ function sortedIndex(array, obj, iteratee, context) { return low; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createIndexFinder.js + + + + // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions. function createIndexFinder(dir, predicateFind, sortedIndex) { return function(array, item, idx) { - var i = 0, length = getLength(array); + var i = 0, length = _getLength(array); if (typeof idx == 'number') { if (dir > 0) { i = idx >= 0 ? idx : Math.max(idx + length, i); @@ -17788,7 +18027,7 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { return array[idx] === item ? idx : -1; } if (item !== item) { - idx = predicateFind(slice.call(array, i, length), isNaN$1); + idx = predicateFind(slice.call(array, i, length), isNaN_isNaN); return idx >= 0 ? idx + i : -1; } for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { @@ -17798,29 +18037,52 @@ function createIndexFinder(dir, predicateFind, sortedIndex) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexOf.js + + + + // Return the position of the first occurrence of an item in an array, // or -1 if the item is not included in the array. // If the array is large and already in sort order, pass `true` // for **isSorted** to use binary search. -var indexOf = createIndexFinder(1, findIndex, sortedIndex); +/* harmony default export */ const indexOf = (createIndexFinder(1, findIndex, sortedIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/lastIndexOf.js + + // Return the position of the last occurrence of an item in an array, // or -1 if the item is not included in the array. -var lastIndexOf = createIndexFinder(-1, findLastIndex); +/* harmony default export */ const lastIndexOf = (createIndexFinder(-1, findLastIndex)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/find.js + + + // Return the first value which passes a truth test. function find(obj, predicate, context) { - var keyFinder = isArrayLike(obj) ? findIndex : findKey; + var keyFinder = _isArrayLike(obj) ? findIndex : findKey; var key = keyFinder(obj, predicate, context); if (key !== void 0 && key !== -1) return obj[key]; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/findWhere.js + + + // Convenience version of a common use case of `_.find`: getting the first // object containing specific `key:value` pairs. function findWhere(obj, attrs) { return find(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/each.js + + + + // The cornerstone for collection functions, an `each` // implementation, aka `forEach`. // Handles raw objects in addition to array-likes. Treats all @@ -17828,7 +18090,7 @@ function findWhere(obj, attrs) { function each(obj, iteratee, context) { iteratee = optimizeCb(iteratee, context); var i, length; - if (isArrayLike(obj)) { + if (_isArrayLike(obj)) { for (i = 0, length = obj.length; i < length; i++) { iteratee(obj[i], i, obj); } @@ -17841,10 +18103,15 @@ function each(obj, iteratee, context) { return obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/map.js + + + + // Return the results of applying the iteratee to each element. function map(obj, iteratee, context) { iteratee = cb(iteratee, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, results = Array(length); for (var index = 0; index < length; index++) { @@ -17854,12 +18121,17 @@ function map(obj, iteratee, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_createReduce.js + + + + // Internal helper to create a reducing function, iterating left or right. function createReduce(dir) { // Wrap code that reassigns argument variables in a separate function than // the one that accesses `arguments.length` to avoid a perf hit. (#1991) var reducer = function(obj, iteratee, memo, initial) { - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length, index = dir > 0 ? 0 : length - 1; if (!initial) { @@ -17879,12 +18151,22 @@ function createReduce(dir) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduce.js + + // **Reduce** builds up a single result from a list of values, aka `inject`, // or `foldl`. -var reduce = createReduce(1); +/* harmony default export */ const reduce = (createReduce(1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/reduceRight.js + // The right-associative version of reduce, also known as `foldr`. -var reduceRight = createReduce(-1); +/* harmony default export */ const reduceRight = (createReduce(-1)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/filter.js + + // Return all the elements that pass a truth test. function filter(obj, predicate, context) { @@ -17896,15 +18178,25 @@ function filter(obj, predicate, context) { return results; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/reject.js + + + + // Return all the elements for which a truth test fails. function reject(obj, predicate, context) { return filter(obj, negate(cb(predicate)), context); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/every.js + + + + // Determine whether all of the elements pass a truth test. function every(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17913,10 +18205,15 @@ function every(obj, predicate, context) { return true; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/some.js + + + + // Determine if at least one element in the object passes a truth test. function some(obj, predicate, context) { predicate = cb(predicate, context); - var _keys = !isArrayLike(obj) && keys(obj), + var _keys = !_isArrayLike(obj) && keys(obj), length = (_keys || obj).length; for (var index = 0; index < length; index++) { var currentKey = _keys ? _keys[index] : index; @@ -17925,20 +18222,32 @@ function some(obj, predicate, context) { return false; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/contains.js + + + + // Determine if the array or object contains a given item (using `===`). function contains(obj, item, fromIndex, guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); if (typeof fromIndex != 'number' || guard) fromIndex = 0; return indexOf(obj, item, fromIndex) >= 0; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/invoke.js + + + + + + // Invoke a method (with arguments) on every item in a collection. -var invoke = restArguments(function(obj, path, args) { +/* harmony default export */ const invoke = (restArguments(function(obj, path, args) { var contextPath, func; - if (isFunction$1(path)) { + if (modules_isFunction(path)) { func = path; } else { - path = toPath(path); + path = _toPath_toPath(path); contextPath = path.slice(0, -1); path = path[path.length - 1]; } @@ -17953,25 +18262,39 @@ var invoke = restArguments(function(obj, path, args) { } return method == null ? method : method.apply(context, args); }); -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/pluck.js + + // Convenience version of a common use case of `_.map`: fetching a property. function pluck(obj, key) { return map(obj, property(key)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/where.js + + + // Convenience version of a common use case of `_.filter`: selecting only // objects containing specific `key:value` pairs. function where(obj, attrs) { return filter(obj, matcher(attrs)); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/max.js + + + + + // Return the maximum element (or element-based computation). function max(obj, iteratee, context) { var result = -Infinity, lastComputed = -Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value > result) { @@ -17991,12 +18314,18 @@ function max(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/min.js + + + + + // Return the minimum element (or element-based computation). function min(obj, iteratee, context) { var result = Infinity, lastComputed = Infinity, value, computed; if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) { - obj = isArrayLike(obj) ? obj : values(obj); + obj = _isArrayLike(obj) ? obj : values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; if (value != null && value < result) { @@ -18016,6 +18345,15 @@ function min(obj, iteratee, context) { return result; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/toArray.js + + + + + + + + // Safely create a real, live array from anything iterable. var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; function toArray(obj) { @@ -18025,21 +18363,28 @@ function toArray(obj) { // Keep surrogate pair characters together. return obj.match(reStrSymbol); } - if (isArrayLike(obj)) return map(obj, identity); + if (_isArrayLike(obj)) return map(obj, identity); return values(obj); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sample.js + + + + + + // Sample **n** random values from a collection using the modern version of the // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle). // If **n** is not specified, returns a single random element. // The internal `guard` argument allows it to work with `_.map`. function sample(obj, n, guard) { if (n == null || guard) { - if (!isArrayLike(obj)) obj = values(obj); + if (!_isArrayLike(obj)) obj = values(obj); return obj[random(obj.length - 1)]; } var sample = toArray(obj); - var length = getLength(sample); + var length = _getLength(sample); n = Math.max(Math.min(n, length), 0); var last = length - 1; for (var index = 0; index < n; index++) { @@ -18051,11 +18396,19 @@ function sample(obj, n, guard) { return sample.slice(0, n); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/shuffle.js + + // Shuffle a collection. function shuffle(obj) { return sample(obj, Infinity); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/sortBy.js + + + + // Sort the object's values by a criterion produced by an iteratee. function sortBy(obj, iteratee, context) { var index = 0; @@ -18077,6 +18430,10 @@ function sortBy(obj, iteratee, context) { }), 'value'); } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_group.js + + + // An internal function used for aggregate "group by" operations. function group(behavior, partition) { return function(obj, iteratee, context) { @@ -18090,53 +18447,80 @@ function group(behavior, partition) { }; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/groupBy.js + + + // Groups the object's values by a criterion. Pass either a string attribute // to group by, or a function that returns the criterion. -var groupBy = group(function(result, value, key) { - if (has$1(result, key)) result[key].push(value); else result[key] = [value]; -}); +/* harmony default export */ const groupBy = (group(function(result, value, key) { + if (has(result, key)) result[key].push(value); else result[key] = [value]; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/indexBy.js + // Indexes the object's values by a criterion, similar to `_.groupBy`, but for // when you know that your index values will be unique. -var indexBy = group(function(result, value, key) { +/* harmony default export */ const indexBy = (group(function(result, value, key) { result[key] = value; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/countBy.js + + // Counts instances of an object that group by a certain criterion. Pass // either a string attribute to count by, or a function that returns the // criterion. -var countBy = group(function(result, value, key) { - if (has$1(result, key)) result[key]++; else result[key] = 1; -}); +/* harmony default export */ const countBy = (group(function(result, value, key) { + if (has(result, key)) result[key]++; else result[key] = 1; +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/partition.js + // Split a collection into two arrays: one whose elements all pass the given // truth test, and one whose elements all do not pass the truth test. -var partition = group(function(result, value, pass) { +/* harmony default export */ const partition = (group(function(result, value, pass) { result[pass ? 0 : 1].push(value); -}, true); +}, true)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/size.js + + // Return the number of elements in a collection. function size(obj) { if (obj == null) return 0; - return isArrayLike(obj) ? obj.length : keys(obj).length; + return _isArrayLike(obj) ? obj.length : keys(obj).length; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/_keyInObj.js // Internal `_.pick` helper function to determine whether `key` is an enumerable // property name of `obj`. function keyInObj(value, key, obj) { return key in obj; } +// CONCATENATED MODULE: ./node_modules/underscore/modules/pick.js + + + + + + + // Return a copy of the object only containing the allowed properties. -var pick = restArguments(function(obj, keys) { +/* harmony default export */ const pick = (restArguments(function(obj, keys) { var result = {}, iteratee = keys[0]; if (obj == null) return result; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); keys = allKeys(obj); } else { iteratee = keyInObj; - keys = flatten$1(keys, false, false); + keys = flatten(keys, false, false); obj = Object(obj); } for (var i = 0, length = keys.length; i < length; i++) { @@ -18145,545 +18529,987 @@ var pick = restArguments(function(obj, keys) { if (iteratee(value, key, obj)) result[key] = value; } return result; -}); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/omit.js + + + + + + + // Return a copy of the object without the disallowed properties. -var omit = restArguments(function(obj, keys) { +/* harmony default export */ const omit = (restArguments(function(obj, keys) { var iteratee = keys[0], context; - if (isFunction$1(iteratee)) { + if (modules_isFunction(iteratee)) { iteratee = negate(iteratee); if (keys.length > 1) context = keys[1]; } else { - keys = map(flatten$1(keys, false, false), String); + keys = map(flatten(keys, false, false), String); iteratee = function(value, key) { return !contains(keys, key); }; } return pick(obj, iteratee, context); -}); +})); -// Returns everything but the last entry of the array. Especially useful on +// CONCATENATED MODULE: ./node_modules/underscore/modules/initial.js + + +// Returns everything but the last entry of the array. Especially useful on // the arguments object. Passing **n** will return all the values in // the array, excluding the last N. function initial(array, n, guard) { return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); } -// Get the first element of an array. Passing **n** will return the first N -// values in the array. The **guard** check allows it to work with `_.map`. -function first(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[0]; - return initial(array, array.length - n); -} +// CONCATENATED MODULE: ./node_modules/underscore/modules/first.js + + +// Get the first element of an array. Passing **n** will return the first N +// values in the array. The **guard** check allows it to work with `_.map`. +function first(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[0]; + return initial(array, array.length - n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/rest.js + + +// Returns everything but the first entry of the `array`. Especially useful on +// the `arguments` object. Passing an **n** will return the rest N values in the +// `array`. +function rest(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/last.js + + +// Get the last element of an array. Passing **n** will return the last N +// values in the array. +function last(array, n, guard) { + if (array == null || array.length < 1) return n == null || guard ? void 0 : []; + if (n == null || guard) return array[array.length - 1]; + return rest(array, Math.max(0, array.length - n)); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/compact.js + + +// Trim out all falsy values from an array. +function compact(array) { + return filter(array, Boolean); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/flatten.js + + +// Flatten out an array, either recursively (by default), or up to `depth`. +// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. +function flatten_flatten(array, depth) { + return flatten(array, depth, false); +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/difference.js + + + + + +// Take the difference between one array and a number of other arrays. +// Only the elements present in just the first array will remain. +/* harmony default export */ const difference = (restArguments(function(array, rest) { + rest = flatten(rest, true, true); + return filter(array, function(value){ + return !contains(rest, value); + }); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/without.js + + + +// Return a version of the array that does not contain the specified value(s). +/* harmony default export */ const without = (restArguments(function(array, otherArrays) { + return difference(array, otherArrays); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/uniq.js + + + + + +// Produce a duplicate-free version of the array. If the array has already +// been sorted, you have the option of using a faster algorithm. +// The faster algorithm will not work with an iteratee if the iteratee +// is not a one-to-one function, so providing an iteratee will disable +// the faster algorithm. +function uniq(array, isSorted, iteratee, context) { + if (!isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = _getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted && !iteratee) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!contains(result, value)) { + result.push(value); + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/union.js + + + + +// Produce an array that contains the union: each distinct element from all of +// the passed-in arrays. +/* harmony default export */ const union = (restArguments(function(arrays) { + return uniq(flatten(arrays, true, true)); +})); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/intersection.js + + + +// Produce an array that contains every item shared between all the +// passed-in arrays. +function intersection(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = _getLength(array); i < length; i++) { + var item = array[i]; + if (contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/unzip.js + + + + +// Complement of zip. Unzip accepts an array of arrays and groups +// each array's elements on shared indices. +function unzip(array) { + var length = (array && max(array, _getLength).length) || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = pluck(array, index); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/zip.js + + + +// Zip together multiple lists into a single array -- elements that share +// an index go together. +/* harmony default export */ const zip = (restArguments(unzip)); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/object.js + + +// Converts lists into objects. Pass either a single array of `[key, value]` +// pairs, or two parallel arrays of the same length -- one of keys, and one of +// the corresponding values. Passing by pairs is the reverse of `_.pairs`. +function object(list, values) { + var result = {}; + for (var i = 0, length = _getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/range.js +// Generate an integer Array containing an arithmetic progression. A port of +// the native Python `range()` function. See +// [the Python documentation](https://docs.python.org/library/functions.html#range). +function range(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/chunk.js + + +// Chunk a single array into multiple arrays, each containing `count` or fewer +// items. +function chunk(array, count) { + if (count == null || count < 1) return []; + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/_chainResult.js + + +// Helper function to continue chaining intermediate results. +function chainResult(instance, obj) { + return instance._chain ? _(obj).chain() : obj; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/mixin.js + + + + + + +// Add your own custom functions to the Underscore object. +function mixin(obj) { + each(functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; +} + +// CONCATENATED MODULE: ./node_modules/underscore/modules/underscore-array-methods.js + + + + + +// Add all mutator `Array` functions to the wrapper. +each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) { + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) { + delete obj[0]; + } + } + return chainResult(this, obj); + }; +}); + +// Add all accessor `Array` functions to the wrapper. +each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + if (obj != null) obj = method.apply(obj, arguments); + return chainResult(this, obj); + }; +}); + +/* harmony default export */ const underscore_array_methods = (_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index.js +// Named Exports +// ============= + +// Underscore.js 1.13.6 +// https://underscorejs.org +// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +// Baseline setup. + + + +// Object Functions +// ---------------- +// Our most fundamental functions operate on any JavaScript object. +// Most functions in Underscore depend on at least one function in this section. + +// A group of functions that check the types of core JavaScript values. +// These are often informally referred to as the "isType" functions. + + + + + + + + + + + + + + + + + + + + + + + + + + + +// Functions that treat an object as a dictionary of key-value pairs. + + + + + + + + + + + + + + + + +// Utility Functions +// ----------------- +// A bit of a grab bag: Predicate-generating functions for use with filters and +// loops, string escaping and templating, create random numbers and unique ids, +// and functions that facilitate Underscore's chaining and iteration conventions. + + + + + + + + + + + + + + + + + + + +// Function (ahem) Functions +// ------------------------- +// These functions take a function as an argument and return a new function +// as the result. Also known as higher-order functions. + + + + + + + + + + + + + + + +// Finders +// ------- +// Functions that extract (the position of) a single element from an object +// or array based on some criterion. + + + + + + + + + +// Collection Functions +// -------------------- +// Functions that work on any collection of elements: either an array, or +// an object of key-value pairs. + + + + + + + + + + + + + + + + + + + + + + + + +// `_.pick` and `_.omit` are actually object functions, but we put +// them here in order to create a more natural reading order in the +// monolithic build as they depend on `_.contains`. + + + +// Array Functions +// --------------- +// Functions that operate on arrays (and array-likes) only, because they’re +// expressed in terms of operations on an ordered list of values. + + + + + + + + + + + + + + + + + +// OOP +// --- +// These modules support the "object-oriented" calling style. See also +// `underscore.js` and `index-default.js`. + + + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-default.js +// Default Export +// ============== +// In this module, we mix our bundled exports into the `_` object and export +// the result. This is analogous to setting `module.exports = _` in CommonJS. +// Hence, this module is also the entry point of our UMD bundle and the package +// entry point for CommonJS and AMD users. In other words, this is (the source +// of) the module you are interfacing with when you do any of the following: +// +// ```js +// // CommonJS +// var _ = require('underscore'); +// +// // AMD +// define(['underscore'], function(_) {...}); +// +// // UMD in the browser +// // _ is available as a global variable +// ``` + + + +// Add all of the Underscore functions to the wrapper object. +var index_default_ = mixin(modules_namespaceObject); +// Legacy Node.js API. +index_default_._ = index_default_; +// Export the Underscore API. +/* harmony default export */ const index_default = (index_default_); + +// CONCATENATED MODULE: ./node_modules/underscore/modules/index-all.js +// ESM Exports +// =========== +// This module is the package entry point for ES module users. In other words, +// it is the module they are interfacing with when they import from the whole +// package instead of from a submodule, like this: +// +// ```js +// import { map } from 'underscore'; +// ``` +// +// The difference with `./index-default`, which is the package entry point for +// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and +// default exports are considered to be siblings, so when you have a default +// export, its properties are not automatically available as named exports. For +// this reason, we re-export the named exports in addition to providing the same +// default export as in `./index-default`. + + + + +/***/ }), + +/***/ 5030: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", ({ value: true })); + +function getUserAgent() { + if (typeof navigator === "object" && "userAgent" in navigator) { + return navigator.userAgent; + } + + if (typeof process === "object" && "version" in process) { + return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`; + } + + return ""; +} + +exports.getUserAgent = getUserAgent; +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ 9521: +/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => { + +"use strict"; +// ESM COMPAT FLAG +__nccwpck_require__.r(__webpack_exports__); + +// EXPORTS +__nccwpck_require__.d(__webpack_exports__, { + "NIL": () => /* reexport */ nil, + "parse": () => /* reexport */ esm_node_parse, + "stringify": () => /* reexport */ esm_node_stringify, + "v1": () => /* reexport */ esm_node_v1, + "v3": () => /* reexport */ esm_node_v3, + "v4": () => /* reexport */ esm_node_v4, + "v5": () => /* reexport */ esm_node_v5, + "validate": () => /* reexport */ esm_node_validate, + "version": () => /* reexport */ esm_node_version +}); + +// CONCATENATED MODULE: external "crypto" +const external_crypto_namespaceObject = require("crypto");; +var external_crypto_default = /*#__PURE__*/__nccwpck_require__.n(external_crypto_namespaceObject); + +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/rng.js + +const rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate + +let poolPtr = rnds8Pool.length; +function rng() { + if (poolPtr > rnds8Pool.length - 16) { + external_crypto_default().randomFillSync(rnds8Pool); + poolPtr = 0; + } + + return rnds8Pool.slice(poolPtr, poolPtr += 16); +} +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/regex.js +/* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/validate.js + + +function validate(uuid) { + return typeof uuid === 'string' && regex.test(uuid); +} + +/* harmony default export */ const esm_node_validate = (validate); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/stringify.js + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ + +const byteToHex = []; + +for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 0x100).toString(16).substr(1)); +} + +function stringify(arr, offset = 0) { + // Note: Be careful editing this code! It's been tuned for performance + // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434 + const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one + // of the following: + // - One or more input array values don't map to a hex octet (leading to + // "undefined" in the uuid) + // - Invalid input values for the RFC `version` or `variant` fields + + if (!esm_node_validate(uuid)) { + throw TypeError('Stringified UUID is invalid'); + } + + return uuid; +} + +/* harmony default export */ const esm_node_stringify = (stringify); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v1.js + + // **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +let _nodeId; + +let _clockseq; // Previous uuid creation time + + +let _lastMSecs = 0; +let _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details + +function v1(options, buf, offset) { + let i = buf && offset || 0; + const b = buf || new Array(16); + options = options || {}; + let node = options.node || _nodeId; + let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + + if (node == null || clockseq == null) { + const seedBytes = options.random || (options.rng || rng)(); + + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]]; + } + + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + + + let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + + let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs) + + const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression + + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + + + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } // Per 4.2.1.2 Throw error if too many uuids are requested + + + if (nsecs >= 10000) { + throw new Error("uuid.v1(): Can't create more than 10M uuids/sec"); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + + msecs += 12219292800000; // `time_low` + + const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; // `time_mid` + + const tmh = msecs / 0x100000000 * 10000 & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; // `time_high_and_version` + + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + + b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + + b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low` + + b[i++] = clockseq & 0xff; // `node` + + for (let n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf || esm_node_stringify(b); +} + +/* harmony default export */ const esm_node_v1 = (v1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/parse.js + + +function parse(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); + } + + let v; + const arr = new Uint8Array(16); // Parse ########-....-....-....-............ + + arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24; + arr[1] = v >>> 16 & 0xff; + arr[2] = v >>> 8 & 0xff; + arr[3] = v & 0xff; // Parse ........-####-....-....-............ + + arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8; + arr[5] = v & 0xff; // Parse ........-....-####-....-............ + + arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8; + arr[7] = v & 0xff; // Parse ........-....-....-####-............ + + arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8; + arr[9] = v & 0xff; // Parse ........-....-....-....-############ + // (Use "/" to avoid 32-bit truncation when bit-shifting high-order bytes) + + arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff; + arr[11] = v / 0x100000000 & 0xff; + arr[12] = v >>> 24 & 0xff; + arr[13] = v >>> 16 & 0xff; + arr[14] = v >>> 8 & 0xff; + arr[15] = v & 0xff; + return arr; +} + +/* harmony default export */ const esm_node_parse = (parse); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v35.js + + + +function stringToBytes(str) { + str = unescape(encodeURIComponent(str)); // UTF8 escape + + const bytes = []; + + for (let i = 0; i < str.length; ++i) { + bytes.push(str.charCodeAt(i)); + } + + return bytes; +} + +const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8'; +const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8'; +/* harmony default export */ function v35(name, version, hashfunc) { + function generateUUID(value, namespace, buf, offset) { + if (typeof value === 'string') { + value = stringToBytes(value); + } + + if (typeof namespace === 'string') { + namespace = esm_node_parse(namespace); + } + + if (namespace.length !== 16) { + throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)'); + } // Compute hash of namespace and value, Per 4.3 + // Future: Use spread syntax when supported on all platforms, e.g. `bytes = + // hashfunc([...namespace, ... value])` + + + let bytes = new Uint8Array(16 + value.length); + bytes.set(namespace); + bytes.set(value, namespace.length); + bytes = hashfunc(bytes); + bytes[6] = bytes[6] & 0x0f | version; + bytes[8] = bytes[8] & 0x3f | 0x80; + + if (buf) { + offset = offset || 0; + + for (let i = 0; i < 16; ++i) { + buf[offset + i] = bytes[i]; + } + + return buf; + } + + return esm_node_stringify(bytes); + } // Function#name is not settable on some platforms (#270) + + + try { + generateUUID.name = name; // eslint-disable-next-line no-empty + } catch (err) {} // For CommonJS default export support + -// Returns everything but the first entry of the `array`. Especially useful on -// the `arguments` object. Passing an **n** will return the rest N values in the -// `array`. -function rest(array, n, guard) { - return slice.call(array, n == null || guard ? 1 : n); + generateUUID.DNS = DNS; + generateUUID.URL = URL; + return generateUUID; } +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/md5.js -// Get the last element of an array. Passing **n** will return the last N -// values in the array. -function last(array, n, guard) { - if (array == null || array.length < 1) return n == null || guard ? void 0 : []; - if (n == null || guard) return array[array.length - 1]; - return rest(array, Math.max(0, array.length - n)); -} -// Trim out all falsy values from an array. -function compact(array) { - return filter(array, Boolean); -} +function md5(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); + } -// Flatten out an array, either recursively (by default), or up to `depth`. -// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively. -function flatten(array, depth) { - return flatten$1(array, depth, false); + return external_crypto_default().createHash('md5').update(bytes).digest(); } -// Take the difference between one array and a number of other arrays. -// Only the elements present in just the first array will remain. -var difference = restArguments(function(array, rest) { - rest = flatten$1(rest, true, true); - return filter(array, function(value){ - return !contains(rest, value); - }); -}); +/* harmony default export */ const esm_node_md5 = (md5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v3.js -// Return a version of the array that does not contain the specified value(s). -var without = restArguments(function(array, otherArrays) { - return difference(array, otherArrays); -}); -// Produce a duplicate-free version of the array. If the array has already -// been sorted, you have the option of using a faster algorithm. -// The faster algorithm will not work with an iteratee if the iteratee -// is not a one-to-one function, so providing an iteratee will disable -// the faster algorithm. -function uniq(array, isSorted, iteratee, context) { - if (!isBoolean(isSorted)) { - context = iteratee; - iteratee = isSorted; - isSorted = false; - } - if (iteratee != null) iteratee = cb(iteratee, context); - var result = []; - var seen = []; - for (var i = 0, length = getLength(array); i < length; i++) { - var value = array[i], - computed = iteratee ? iteratee(value, i, array) : value; - if (isSorted && !iteratee) { - if (!i || seen !== computed) result.push(value); - seen = computed; - } else if (iteratee) { - if (!contains(seen, computed)) { - seen.push(computed); - result.push(value); - } - } else if (!contains(result, value)) { - result.push(value); - } - } - return result; -} +const v3 = v35('v3', 0x30, esm_node_md5); +/* harmony default export */ const esm_node_v3 = (v3); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v4.js -// Produce an array that contains the union: each distinct element from all of -// the passed-in arrays. -var union = restArguments(function(arrays) { - return uniq(flatten$1(arrays, true, true)); -}); -// Produce an array that contains every item shared between all the -// passed-in arrays. -function intersection(array) { - var result = []; - var argsLength = arguments.length; - for (var i = 0, length = getLength(array); i < length; i++) { - var item = array[i]; - if (contains(result, item)) continue; - var j; - for (j = 1; j < argsLength; j++) { - if (!contains(arguments[j], item)) break; - } - if (j === argsLength) result.push(item); - } - return result; -} -// Complement of zip. Unzip accepts an array of arrays and groups -// each array's elements on shared indices. -function unzip(array) { - var length = (array && max(array, getLength).length) || 0; - var result = Array(length); +function v4(options, buf, offset) { + options = options || {}; + const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - for (var index = 0; index < length; index++) { - result[index] = pluck(array, index); - } - return result; -} + rnds[6] = rnds[6] & 0x0f | 0x40; + rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided -// Zip together multiple lists into a single array -- elements that share -// an index go together. -var zip = restArguments(unzip); + if (buf) { + offset = offset || 0; -// Converts lists into objects. Pass either a single array of `[key, value]` -// pairs, or two parallel arrays of the same length -- one of keys, and one of -// the corresponding values. Passing by pairs is the reverse of `_.pairs`. -function object(list, values) { - var result = {}; - for (var i = 0, length = getLength(list); i < length; i++) { - if (values) { - result[list[i]] = values[i]; - } else { - result[list[i][0]] = list[i][1]; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; } + + return buf; } - return result; + + return esm_node_stringify(rnds); } -// Generate an integer Array containing an arithmetic progression. A port of -// the native Python `range()` function. See -// [the Python documentation](https://docs.python.org/library/functions.html#range). -function range(start, stop, step) { - if (stop == null) { - stop = start || 0; - start = 0; - } - if (!step) { - step = stop < start ? -1 : 1; - } +/* harmony default export */ const esm_node_v4 = (v4); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/sha1.js - var length = Math.max(Math.ceil((stop - start) / step), 0); - var range = Array(length); - for (var idx = 0; idx < length; idx++, start += step) { - range[idx] = start; +function sha1(bytes) { + if (Array.isArray(bytes)) { + bytes = Buffer.from(bytes); + } else if (typeof bytes === 'string') { + bytes = Buffer.from(bytes, 'utf8'); } - return range; + return external_crypto_default().createHash('sha1').update(bytes).digest(); } -// Chunk a single array into multiple arrays, each containing `count` or fewer -// items. -function chunk(array, count) { - if (count == null || count < 1) return []; - var result = []; - var i = 0, length = array.length; - while (i < length) { - result.push(slice.call(array, i, i += count)); +/* harmony default export */ const esm_node_sha1 = (sha1); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/v5.js + + +const v5 = v35('v5', 0x50, esm_node_sha1); +/* harmony default export */ const esm_node_v5 = (v5); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/nil.js +/* harmony default export */ const nil = ('00000000-0000-0000-0000-000000000000'); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/version.js + + +function version(uuid) { + if (!esm_node_validate(uuid)) { + throw TypeError('Invalid UUID'); } - return result; -} -// Helper function to continue chaining intermediate results. -function chainResult(instance, obj) { - return instance._chain ? _$1(obj).chain() : obj; + return parseInt(uuid.substr(14, 1), 16); } -// Add your own custom functions to the Underscore object. -function mixin(obj) { - each(functions(obj), function(name) { - var func = _$1[name] = obj[name]; - _$1.prototype[name] = function() { - var args = [this._wrapped]; - push.apply(args, arguments); - return chainResult(this, func.apply(_$1, args)); - }; - }); - return _$1; -} +/* harmony default export */ const esm_node_version = (version); +// CONCATENATED MODULE: ./node_modules/uuid/dist/esm-node/index.js + + -// Add all mutator `Array` functions to the wrapper. -each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) { - method.apply(obj, arguments); - if ((name === 'shift' || name === 'splice') && obj.length === 0) { - delete obj[0]; - } - } - return chainResult(this, obj); - }; -}); -// Add all accessor `Array` functions to the wrapper. -each(['concat', 'join', 'slice'], function(name) { - var method = ArrayProto[name]; - _$1.prototype[name] = function() { - var obj = this._wrapped; - if (obj != null) obj = method.apply(obj, arguments); - return chainResult(this, obj); - }; -}); -// Named Exports -var allExports = { - __proto__: null, - VERSION: VERSION, - restArguments: restArguments, - isObject: isObject, - isNull: isNull, - isUndefined: isUndefined, - isBoolean: isBoolean, - isElement: isElement, - isString: isString, - isNumber: isNumber, - isDate: isDate, - isRegExp: isRegExp, - isError: isError, - isSymbol: isSymbol, - isArrayBuffer: isArrayBuffer, - isDataView: isDataView$1, - isArray: isArray, - isFunction: isFunction$1, - isArguments: isArguments$1, - isFinite: isFinite$1, - isNaN: isNaN$1, - isTypedArray: isTypedArray$1, - isEmpty: isEmpty, - isMatch: isMatch, - isEqual: isEqual, - isMap: isMap, - isWeakMap: isWeakMap, - isSet: isSet, - isWeakSet: isWeakSet, - keys: keys, - allKeys: allKeys, - values: values, - pairs: pairs, - invert: invert, - functions: functions, - methods: functions, - extend: extend, - extendOwn: extendOwn, - assign: extendOwn, - defaults: defaults, - create: create, - clone: clone, - tap: tap, - get: get, - has: has, - mapObject: mapObject, - identity: identity, - constant: constant, - noop: noop, - toPath: toPath$1, - property: property, - propertyOf: propertyOf, - matcher: matcher, - matches: matcher, - times: times, - random: random, - now: now, - escape: _escape, - unescape: _unescape, - templateSettings: templateSettings, - template: template, - result: result, - uniqueId: uniqueId, - chain: chain, - iteratee: iteratee, - partial: partial, - bind: bind, - bindAll: bindAll, - memoize: memoize, - delay: delay, - defer: defer, - throttle: throttle, - debounce: debounce, - wrap: wrap, - negate: negate, - compose: compose, - after: after, - before: before, - once: once, - findKey: findKey, - findIndex: findIndex, - findLastIndex: findLastIndex, - sortedIndex: sortedIndex, - indexOf: indexOf, - lastIndexOf: lastIndexOf, - find: find, - detect: find, - findWhere: findWhere, - each: each, - forEach: each, - map: map, - collect: map, - reduce: reduce, - foldl: reduce, - inject: reduce, - reduceRight: reduceRight, - foldr: reduceRight, - filter: filter, - select: filter, - reject: reject, - every: every, - all: every, - some: some, - any: some, - contains: contains, - includes: contains, - include: contains, - invoke: invoke, - pluck: pluck, - where: where, - max: max, - min: min, - shuffle: shuffle, - sample: sample, - sortBy: sortBy, - groupBy: groupBy, - indexBy: indexBy, - countBy: countBy, - partition: partition, - toArray: toArray, - size: size, - pick: pick, - omit: omit, - first: first, - head: first, - take: first, - initial: initial, - last: last, - rest: rest, - tail: rest, - drop: rest, - compact: compact, - flatten: flatten, - without: without, - uniq: uniq, - unique: uniq, - union: union, - intersection: intersection, - difference: difference, - unzip: unzip, - transpose: unzip, - zip: zip, - object: object, - range: range, - chunk: chunk, - mixin: mixin, - 'default': _$1 -}; -// Default Export -// Add all of the Underscore functions to the wrapper object. -var _ = mixin(allExports); -// Legacy Node.js API. -_._ = _; - -exports.VERSION = VERSION; -exports._ = _; -exports._escape = _escape; -exports._unescape = _unescape; -exports.after = after; -exports.allKeys = allKeys; -exports.before = before; -exports.bind = bind; -exports.bindAll = bindAll; -exports.chain = chain; -exports.chunk = chunk; -exports.clone = clone; -exports.compact = compact; -exports.compose = compose; -exports.constant = constant; -exports.contains = contains; -exports.countBy = countBy; -exports.create = create; -exports.debounce = debounce; -exports.defaults = defaults; -exports.defer = defer; -exports.delay = delay; -exports.difference = difference; -exports.each = each; -exports.every = every; -exports.extend = extend; -exports.extendOwn = extendOwn; -exports.filter = filter; -exports.find = find; -exports.findIndex = findIndex; -exports.findKey = findKey; -exports.findLastIndex = findLastIndex; -exports.findWhere = findWhere; -exports.first = first; -exports.flatten = flatten; -exports.functions = functions; -exports.get = get; -exports.groupBy = groupBy; -exports.has = has; -exports.identity = identity; -exports.indexBy = indexBy; -exports.indexOf = indexOf; -exports.initial = initial; -exports.intersection = intersection; -exports.invert = invert; -exports.invoke = invoke; -exports.isArguments = isArguments$1; -exports.isArray = isArray; -exports.isArrayBuffer = isArrayBuffer; -exports.isBoolean = isBoolean; -exports.isDataView = isDataView$1; -exports.isDate = isDate; -exports.isElement = isElement; -exports.isEmpty = isEmpty; -exports.isEqual = isEqual; -exports.isError = isError; -exports.isFinite = isFinite$1; -exports.isFunction = isFunction$1; -exports.isMap = isMap; -exports.isMatch = isMatch; -exports.isNaN = isNaN$1; -exports.isNull = isNull; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isTypedArray = isTypedArray$1; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; -exports.iteratee = iteratee; -exports.keys = keys; -exports.last = last; -exports.lastIndexOf = lastIndexOf; -exports.map = map; -exports.mapObject = mapObject; -exports.matcher = matcher; -exports.max = max; -exports.memoize = memoize; -exports.min = min; -exports.mixin = mixin; -exports.negate = negate; -exports.noop = noop; -exports.now = now; -exports.object = object; -exports.omit = omit; -exports.once = once; -exports.pairs = pairs; -exports.partial = partial; -exports.partition = partition; -exports.pick = pick; -exports.pluck = pluck; -exports.property = property; -exports.propertyOf = propertyOf; -exports.random = random; -exports.range = range; -exports.reduce = reduce; -exports.reduceRight = reduceRight; -exports.reject = reject; -exports.rest = rest; -exports.restArguments = restArguments; -exports.result = result; -exports.sample = sample; -exports.shuffle = shuffle; -exports.size = size; -exports.some = some; -exports.sortBy = sortBy; -exports.sortedIndex = sortedIndex; -exports.tap = tap; -exports.template = template; -exports.templateSettings = templateSettings; -exports.throttle = throttle; -exports.times = times; -exports.toArray = toArray; -exports.toPath = toPath$1; -exports.union = union; -exports.uniq = uniq; -exports.uniqueId = uniqueId; -exports.unzip = unzip; -exports.values = values; -exports.where = where; -exports.without = without; -exports.wrap = wrap; -exports.zip = zip; -//# sourceMappingURL=underscore-node-f.cjs.map /***/ }), -/***/ 3571: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +/***/ 2940: +/***/ ((module) => { -// Underscore.js 1.13.4 -// https://underscorejs.org -// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors -// Underscore may be freely distributed under the MIT license. +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) -var underscoreNodeF = __nccwpck_require__(1641); + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + return wrapper -module.exports = underscoreNodeF._; -//# sourceMappingURL=underscore-node.cjs.map + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} /***/ }), diff --git a/.github/libs/GitUtils.js b/.github/libs/GitUtils.js index 979121bfbed7..7bc600470dd1 100644 --- a/.github/libs/GitUtils.js +++ b/.github/libs/GitUtils.js @@ -22,10 +22,7 @@ function fetchTag(tag) { console.log(`Running command: ${command}`); execSync(command); } catch (e) { - // This can happen if the tag was only created locally but does not exist in the remote. In this case, we'll fetch history of the staging branch instead - const command = `git fetch origin staging --no-tags --shallow-exclude=${previousPatchVersion}`; - console.log(`Running command: ${command}`); - execSync(command); + console.error(e); } } @@ -79,7 +76,7 @@ function getCommitHistoryAsJSON(fromTag, toTag) { * Parse merged PRs, excluding those from irrelevant branches. * * @param {Array>} commits - * @returns {Array} + * @returns {Array} */ function getValidMergedPRs(commits) { const mergedPRs = new Set(); @@ -94,7 +91,7 @@ function getValidMergedPRs(commits) { return; } - const pr = match[1]; + const pr = Number.parseInt(match[1], 10); if (mergedPRs.has(pr)) { // If a PR shows up in the log twice, that means that the PR was deployed in the previous checklist. // That also means that we don't want to include it in the current checklist, so we remove it now. @@ -113,16 +110,17 @@ function getValidMergedPRs(commits) { * * @param {String} fromTag * @param {String} toTag - * @returns {Promise>} – Pull request numbers + * @returns {Promise>} – Pull request numbers */ function getPullRequestsMergedBetween(fromTag, toTag) { + console.log(`Looking for commits made between ${fromTag} and ${toTag}...`); return getCommitHistoryAsJSON(fromTag, toTag).then((commitList) => { console.log(`Commits made between ${fromTag} and ${toTag}:`, commitList); // Find which commit messages correspond to merged PR's const pullRequestNumbers = getValidMergedPRs(commitList); console.log(`List of pull requests merged between ${fromTag} and ${toTag}`, pullRequestNumbers); - return pullRequestNumbers; + return _.map(pullRequestNumbers, (prNum) => Number.parseInt(prNum, 10)); }); } diff --git a/.github/libs/GithubUtils.js b/.github/libs/GithubUtils.js index ea81dc6e1136..1381d694f000 100644 --- a/.github/libs/GithubUtils.js +++ b/.github/libs/GithubUtils.js @@ -432,7 +432,7 @@ class GithubUtils { /** * Generate the well-formatted body of a production release. * - * @param {Array} pullRequests + * @param {Array} pullRequests * @returns {String} */ static getReleaseBody(pullRequests) { diff --git a/.github/scripts/verifyPodfile.sh b/.github/scripts/verifyPodfile.sh index 3a57a736cd70..ec2709a25786 100755 --- a/.github/scripts/verifyPodfile.sh +++ b/.github/scripts/verifyPodfile.sh @@ -13,10 +13,10 @@ declare EXIT_CODE=0 # Check Provisioning Style. If automatic signing is enabled, iOS builds will fail, so ensure we always have the proper profile specified info "Verifying that automatic signing is not enabled" if grep -q 'PROVISIONING_PROFILE_SPECIFIER = chat_expensify_appstore' ios/NewExpensify.xcodeproj/project.pbxproj; then - success "Automatic signing not enabled" + success "Automatic signing not enabled" else - error "Error: Automatic provisioning style is not allowed!" - EXIT_CODE=1 + error "Error: Automatic provisioning style is not allowed!" + EXIT_CODE=1 fi PODFILE_SHA=$(openssl sha1 ios/Podfile | awk '{print $2}') @@ -26,10 +26,26 @@ echo "Podfile: $PODFILE_SHA" echo "Podfile.lock: $PODFILE_LOCK_SHA" if [[ "$PODFILE_SHA" == "$PODFILE_LOCK_SHA" ]]; then - success "Podfile checksum verified!" + success "Podfile checksum verified!" else - error "Podfile.lock checksum mismatch. Did you forget to run \`npx pod-install\`?" - EXIT_CODE=1 + error "Podfile.lock checksum mismatch. Did you forget to run \`npx pod-install\`?" + EXIT_CODE=1 +fi + +info "Ensuring correct version of cocoapods is used..." + +POD_VERSION_REGEX='([[:digit:]]+\.[[:digit:]]+)(\.[[:digit:]]+)?'; +POD_VERSION_FROM_GEMFILE="$(sed -nr "s/gem \"cocoapods\", \"~> $POD_VERSION_REGEX\"/\1/p" Gemfile)" +info "Pod version from Gemfile: $POD_VERSION_FROM_GEMFILE" + +POD_VERSION_FROM_PODFILE_LOCK="$(sed -nr "s/COCOAPODS: $POD_VERSION_REGEX/\1/p" ios/Podfile.lock)" +info "Pod version from Podfile.lock: $POD_VERSION_FROM_PODFILE_LOCK" + +if [[ "$POD_VERSION_FROM_GEMFILE" == "$POD_VERSION_FROM_PODFILE_LOCK" ]]; then + success "Cocoapods version from Podfile.lock matches cocoapods version from Gemfile" +else + error "Cocoapods version from Podfile.lock does not match cocoapods version from Gemfile. Please use \`npm run pod-install\` or \`bundle exec pod install\` instead of \`pod install\` to install pods." + EXIT_CODE=1 fi info "Comparing Podfile.lock with node packages..." diff --git a/.github/workflows/README.md b/.github/workflows/README.md index e1b1696411b1..e432d9291f45 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -85,7 +85,7 @@ The GitHub workflows require a large list of secrets to deploy, notify and test 1. `LARGE_SECRET_PASSPHRASE` - decrypts secrets stored in various encrypted files stored in GitHub repository. To create updated versions of these encrypted files, refer to steps 1-4 of [this encrypted secrets help page](https://docs.github.com/en/actions/reference/encrypted-secrets#limits-for-secrets) using the `LARGE_SECRET_PASSPHRASE`. 1. `android/app/my-upload-key.keystore.gpg` 1. `android/app/android-fastlane-json-key.json.gpg` - 1. `ios/chat_expensify_adhoc.mobileprovision.gpg` + 1. `ios/expensify_chat_adhoc.mobileprovision.gpg` 1. `ios/chat_expensify_appstore.mobileprovision.gpg` 1. `ios/Certificates.p12.gpg` 1. `SLACK_WEBHOOK` - Sends Slack notifications via Slack WebHook https://expensify.slack.com/services/B01AX48D7MM diff --git a/.github/workflows/cherryPick.yml b/.github/workflows/cherryPick.yml index d4c17a734b1c..b6558b049647 100644 --- a/.github/workflows/cherryPick.yml +++ b/.github/workflows/cherryPick.yml @@ -13,7 +13,8 @@ jobs: outputs: IS_DEPLOYER: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' }} steps: - - id: isDeployer + - name: Check if user is deployer + id: isDeployer run: | if gh api /orgs/Expensify/teams/mobile-deployers/memberships/${{ github.actor }} --silent; then echo "IS_DEPLOYER=true" >> "$GITHUB_OUTPUT" @@ -39,7 +40,8 @@ jobs: ref: staging token: ${{ secrets.OS_BOTIFY_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main + - name: Set up git for OSBotify + uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main with: GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} @@ -77,6 +79,7 @@ jobs: id: cherryPick run: | echo "Attempting to cherry-pick ${{ steps.getCPMergeCommit.outputs.MERGE_COMMIT_SHA }}" + git config user.name ${{ github.actor }} if git cherry-pick -S -x --mainline 1 ${{ steps.getCPMergeCommit.outputs.MERGE_COMMIT_SHA }}; then echo "🎉 No conflicts! CP was a success, PR can be automerged 🎉" echo "HAS_CONFLICTS=false" >> "$GITHUB_OUTPUT" @@ -87,6 +90,7 @@ jobs: GIT_MERGE_AUTOEDIT=no git cherry-pick --continue echo "HAS_CONFLICTS=true" >> "$GITHUB_OUTPUT" fi + git config user.name OSBotify - name: Push changes run: | diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 8943669c2ba8..54ae1048b57b 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -13,18 +13,20 @@ jobs: # It does not run for pull requests created by OSBotify if: ${{ github.event.issue.pull_request || (github.event_name == 'pull_request_target' && github.event.pull_request.user.login != 'OSBotify') }} steps: - - uses: actions-ecosystem/action-regex-match@9c35fe9ac1840239939c59e5db8839422eed8a73 + - name: CLA comment check + uses: actions-ecosystem/action-regex-match@9c35fe9ac1840239939c59e5db8839422eed8a73 id: sign with: text: ${{ github.event.comment.body }} regex: '\s*I have read the CLA Document and I hereby sign the CLA\s*' - - uses: actions-ecosystem/action-regex-match@9c35fe9ac1840239939c59e5db8839422eed8a73 + - name: CLA comment re-check + uses: actions-ecosystem/action-regex-match@9c35fe9ac1840239939c59e5db8839422eed8a73 id: recheck with: text: ${{ github.event.comment.body }} regex: '\s*recheck\s*' - name: CLA Assistant - if: ${{ steps.recheck.outputs.match != '' || steps.sign.outputs.match != '' }} || github.event_name == 'pull_request_target' + if: ${{ steps.recheck.outputs.match != '' || steps.sign.outputs.match != '' || github.event_name == 'pull_request_target' }} # Version: 2.1.2-beta uses: cla-assistant/github-action@948230deb0d44dd38957592f08c6bd934d96d0cf env: diff --git a/.github/workflows/createNewVersion.yml b/.github/workflows/createNewVersion.yml index b2703731df79..ba907334c595 100644 --- a/.github/workflows/createNewVersion.yml +++ b/.github/workflows/createNewVersion.yml @@ -54,18 +54,21 @@ jobs: NEW_VERSION: ${{ steps.bumpVersion.outputs.NEW_VERSION }} steps: - - uses: softprops/turnstyle@ca99add00ff0c9cbc697d22631d2992f377e5bd5 + - name: Run turnstyle + uses: softprops/turnstyle@ca99add00ff0c9cbc697d22631d2992f377e5bd5 with: poll-interval-seconds: 10 env: GITHUB_TOKEN: ${{ github.token }} - - uses: actions/checkout@v3 + - name: Check out + uses: actions/checkout@v3 with: ref: main token: ${{ secrets.OS_BOTIFY_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main + - name: Setup git for OSBotify + uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main with: GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} @@ -89,7 +92,8 @@ jobs: - name: Update main branch run: git push origin main - - if: ${{ failure() }} + - name: Announce failed workflow in Slack + if: ${{ failure() }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b3105ee05c2c..f2ff67680940 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,7 +15,8 @@ jobs: ref: staging token: ${{ secrets.OS_BOTIFY_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main + - name: Setup git for OSBotify + uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main with: GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} @@ -29,12 +30,14 @@ jobs: runs-on: ubuntu-latest if: github.ref == 'refs/heads/production' steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 with: ref: production token: ${{ secrets.OS_BOTIFY_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main + - name: Setup git for OSBotify + uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main with: GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} diff --git a/.github/workflows/deployBlocker.yml b/.github/workflows/deployBlocker.yml index 8065a5c88cb2..f42d19ca8241 100644 --- a/.github/workflows/deployBlocker.yml +++ b/.github/workflows/deployBlocker.yml @@ -11,7 +11,8 @@ jobs: if: ${{ github.event.label.name == 'DeployBlockerCash' }} steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 with: token: ${{ secrets.GITHUB_TOKEN }} @@ -63,7 +64,8 @@ jobs: 2. Find someone who can quickly fix the issue. 3. Fix the issue yourself. - - if: ${{ failure() }} + - name: Announce failed workflow in Slack + if: ${{ failure() }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/finishReleaseCycle.yml b/.github/workflows/finishReleaseCycle.yml index b78a5fac4b69..e2323af2486e 100644 --- a/.github/workflows/finishReleaseCycle.yml +++ b/.github/workflows/finishReleaseCycle.yml @@ -23,7 +23,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - - name: Reopen and comment on issue + - name: Reopen and comment on issue (not a team member) if: ${{ !fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) }} uses: Expensify/App/.github/actions/javascript/reopenIssueWithComment@main with: @@ -41,8 +41,8 @@ jobs: GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} ISSUE_NUMBER: ${{ github.event.issue.number }} - - name: Reopen and comment on issue - if: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) && fromJSON(steps.checkDeployBlockers.outputs.HAS_DEPLOY_BLOCKERS) }} + - name: Reopen and comment on issue (has blockers) + if: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) && fromJSON(steps.checkDeployBlockers.outputs.HAS_DEPLOY_BLOCKERS || 'false') }} uses: Expensify/App/.github/actions/javascript/reopenIssueWithComment@main with: GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} @@ -51,7 +51,8 @@ jobs: This issue either has unchecked items or has not yet been marked with the `:shipit:` emoji of approval. Reopening! - - if: ${{ failure() }} + - name: Announce failed workflow in Slack + if: ${{ failure() }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} @@ -62,12 +63,14 @@ jobs: needs: validate if: ${{ fromJSON(needs.validate.outputs.isValid) }} steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 with: ref: staging token: ${{ secrets.OS_BOTIFY_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main + - name: Setup Git for OSBotify + uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main with: GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} @@ -79,7 +82,8 @@ jobs: # Force-update the remote production branch. git push --force origin production - - if: ${{ failure() }} + - name: Announce failed workflow in Slack + if: ${{ failure() }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} @@ -98,12 +102,14 @@ jobs: runs-on: ubuntu-latest needs: [updateProduction, createNewPatchVersion] steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 with: ref: main token: ${{ secrets.OS_BOTIFY_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main + - name: Setup Git for OSBotify + uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main with: GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} @@ -115,35 +121,8 @@ jobs: # Force-update the remote staging branch git push --force origin staging - - if: ${{ failure() }} - uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main - with: - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - - # Create a new StagingDeployCash for the next release cycle. - createNewStagingDeployCash: - runs-on: ubuntu-latest - needs: [updateStaging, createNewPatchVersion] - steps: - - uses: actions/checkout@v3 - with: - ref: staging - token: ${{ secrets.OS_BOTIFY_TOKEN }} - - # Create a local git tag so that GitUtils.getPullRequestsMergedBetween can use `git log` to generate a - # list of pull requests that were merged between this version tag and another. - # NOTE: This tag is only used locally and shouldn't be pushed to the remote. - # If it was pushed, that would trigger the staging deploy which is handled in a separate workflow (deploy.yml) - - name: Tag version - run: git tag ${{ needs.createNewPatchVersion.outputs.NEW_VERSION }} - - - name: Create new StagingDeployCash - uses: Expensify/App/.github/actions/javascript/createOrUpdateStagingDeploy@main - with: - GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - NPM_VERSION: ${{ needs.createNewPatchVersion.outputs.NEW_VERSION }} - - - if: ${{ failure() }} + - name: Announce failed workflow in Slack + if: ${{ failure() }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 795271cab60a..5953a4aa89e2 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -11,11 +11,13 @@ jobs: if: ${{ github.actor != 'OSBotify' || github.event_name == 'workflow_call' }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - name: Checkout + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - - name: Lint JavaScript with ESLint + - name: Lint JavaScript and Typescript with ESLint run: npm run lint env: CI: true diff --git a/.github/workflows/lockDeploys.yml b/.github/workflows/lockDeploys.yml index a49a5519f690..6ca025bb2a25 100644 --- a/.github/workflows/lockDeploys.yml +++ b/.github/workflows/lockDeploys.yml @@ -9,7 +9,8 @@ jobs: if: ${{ github.event.label.name == '🔐 LockCashDeploys 🔐' && contains(github.event.issue.labels.*.name, 'StagingDeployCash') && github.actor != 'OSBotify' }} runs-on: macos-12 steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 with: ref: main token: ${{ secrets.OS_BOTIFY_TOKEN }} @@ -27,7 +28,8 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - - if: ${{ failure() }} + - name: Announce failed workflow + if: ${{ failure() }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/platformDeploy.yml b/.github/workflows/platformDeploy.yml index 84f8373ff247..ad002e164837 100644 --- a/.github/workflows/platformDeploy.yml +++ b/.github/workflows/platformDeploy.yml @@ -18,7 +18,8 @@ jobs: outputs: IS_DEPLOYER: ${{ fromJSON(steps.isUserDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' }} steps: - - id: isUserDeployer + - name: Check if user is deployer + id: isUserDeployer run: | if gh api /orgs/Expensify/teams/mobile-deployers/memberships/${{ github.actor }} --silent; then echo "IS_DEPLOYER=true" >> "$GITHUB_OUTPUT" @@ -28,20 +29,45 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} + # Note: we're updating the checklist before running the deploys and assuming that it will succeed on at least one platform + deployChecklist: + name: Create or update deploy checklist + runs-on: ubuntu-latest + if: ${{ github.event_name != 'release' }} + needs: validateActor + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main + + - name: Set version + id: getVersion + run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_OUTPUT" + + - name: Create or update staging deploy + uses: Expensify/App/.github/actions/javascript/createOrUpdateStagingDeploy@main + with: + GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} + NPM_VERSION: ${{ steps.getVersion.outputs.VERSION }} + android: name: Build and deploy Android needs: validateActor if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} runs-on: ubuntu-latest-xl steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - name: Configure MapBox SDK run: ./scripts/setup-mapbox-sdk.sh ${{ secrets.MAPBOX_SDK_DOWNLOAD_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - - uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 + - name: Setup Ruby + uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 with: ruby-version: '2.7' bundler-cache: true @@ -108,9 +134,11 @@ jobs: if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} runs-on: macos-12-xl steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - name: Decrypt Developer ID Certificate run: cd desktop && gpg --quiet --batch --yes --decrypt --passphrase="$DEVELOPER_ID_SECRET_PASSPHRASE" --output developer_id.p12 developer_id.p12.gpg @@ -145,20 +173,36 @@ jobs: if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} runs-on: macos-12-xl steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - name: Configure MapBox SDK run: ./scripts/setup-mapbox-sdk.sh ${{ secrets.MAPBOX_SDK_DOWNLOAD_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - - uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 + - name: Setup Ruby + uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 with: ruby-version: '2.7' bundler-cache: true + - name: Cache Pod dependencies + uses: actions/cache@v3 + id: pods-cache + with: + path: ios/Pods + key: ${{ runner.os }}-pods-cache-${{ hashFiles('ios/Podfile.lock') }} + restore-keys: ${{ runner.os }}-pods-cache- + + - name: Compare Podfile.lock and Manifest.lock + id: compare-podfile-and-manifest + run: echo "IS_PODFILE_SAME_AS_MANIFEST=${{ hashFiles('ios/Podfile.lock') == hashFiles('ios/Pods/Manifest.lock') }}" >> "$GITHUB_OUTPUT" + - name: Install cocoapods uses: nick-invision/retry@0711ba3d7808574133d713a0d92d2941be03a350 + if: steps.pods-cache.outputs.cache-hit != 'true' || steps.compare-podfile-and-manifest.outputs.IS_PODFILE_SAME_AS_MANIFEST != 'true' with: timeout_minutes: 10 max_attempts: 5 @@ -234,9 +278,11 @@ jobs: if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }} runs-on: ubuntu-latest-xl steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - name: Setup Cloudflare CLI run: pip3 install cloudflare @@ -291,7 +337,8 @@ jobs: if: ${{ failure() }} needs: [android, desktop, iOS, web] steps: - - uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main + - name: Post Slack message on failure + uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} @@ -301,7 +348,8 @@ jobs: if: ${{ success() }} needs: [android, desktop, iOS, web] steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - name: Set version run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" @@ -361,9 +409,11 @@ jobs: if: ${{ always() }} needs: [android, desktop, iOS, web] steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - name: Set version run: echo "VERSION=$(npm run print-version --silent)" >> "$GITHUB_ENV" diff --git a/.github/workflows/preDeploy.yml b/.github/workflows/preDeploy.yml index c9fb636238aa..186490c7baaf 100644 --- a/.github/workflows/preDeploy.yml +++ b/.github/workflows/preDeploy.yml @@ -2,7 +2,8 @@ name: Process new code merged to main on: push: - branches: [main] + branches: + - main jobs: typecheck: @@ -20,12 +21,14 @@ jobs: if: ${{ always() }} steps: - - if: ${{ needs.typecheck.result == 'failure' || needs.lint.result == 'failure' || needs.test.result == 'failure' }} + - name: Announce failed workflow in Slack + if: ${{ needs.typecheck.result == 'failure' || needs.lint.result == 'failure' || needs.test.result == 'failure' }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - - if: ${{ needs.typecheck.result == 'failure' || needs.lint.result == 'failure' || needs.test.result == 'failure' }} + - name: Exit failed workflow + if: ${{ needs.typecheck.result == 'failure' || needs.lint.result == 'failure' || needs.test.result == 'failure' }} run: exit 1 chooseDeployActions: @@ -33,7 +36,7 @@ jobs: needs: confirmPassingBuild outputs: MERGED_PR: ${{ steps.getMergedPullRequest.outputs.number }} - SHOULD_DEPLOY: ${{ steps.shouldDeploy.outputs.SHOULD_DEPLOY }} + SHOULD_DEPLOY: ${{ fromJSON(steps.shouldDeploy.outputs.SHOULD_DEPLOY) }} steps: - name: Get merged pull request @@ -75,18 +78,21 @@ jobs: needs: [chooseDeployActions, createNewVersion] runs-on: ubuntu-latest steps: - - uses: softprops/turnstyle@ca99add00ff0c9cbc697d22631d2992f377e5bd5 + - name: Run turnstyle + uses: softprops/turnstyle@ca99add00ff0c9cbc697d22631d2992f377e5bd5 with: poll-interval-seconds: 10 env: GITHUB_TOKEN: ${{ github.token }} - - uses: actions/checkout@v3 + - name: Checkout main + uses: actions/checkout@v3 with: ref: main token: ${{ secrets.OS_BOTIFY_TOKEN }} - - uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main + - name: Setup Git for OSBotify + uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main with: GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }} @@ -98,26 +104,8 @@ jobs: # Force-update the remote staging branch git push --force origin staging - # Create a local git tag on staging so that GitUtils.getPullRequestsMergedBetween can use `git log` to generate a - # list of pull requests that were merged between this version tag and another. - # NOTE: This tag is only used locally and shouldn't be pushed to the remote. - # If it was pushed, that would trigger the staging deploy which is handled in a separate workflow (deploy.yml) - - name: Tag staging - run: git tag ${{ needs.createNewVersion.outputs.NEW_VERSION }} - - - name: Update StagingDeployCash - uses: Expensify/App/.github/actions/javascript/createOrUpdateStagingDeploy@main - with: - GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - NPM_VERSION: ${{ needs.createNewVersion.outputs.NEW_VERSION }} - - - name: Find open StagingDeployCash - id: getStagingDeployCash - run: echo "STAGING_DEPLOY_CASH=$(gh issue list --label StagingDeployCash --json number --jq '.[0].number')" >> "$GITHUB_OUTPUT" - env: - GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }} - - - if: ${{ failure() }} + - name: Announce failed workflow in Slack + if: ${{ failure() }} uses: Expensify/App/.github/actions/composite/announceFailedWorkflowInSlack@main with: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} @@ -153,7 +141,8 @@ jobs: if: ${{ github.actor != 'OSBotify' && !fromJSON(needs.isExpensifyEmployee.outputs.IS_EXPENSIFY_EMPLOYEE) }} steps: # Version: 2.3.4 - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - name: Checkout + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 with: token: ${{ secrets.OS_BOTIFY_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e79a02281ae0..72bdd0468fd2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -18,9 +18,11 @@ jobs: chunk: [ 1, 2, 3 ] name: test (job ${{ fromJSON(matrix.chunk) }}) steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - name: Get number of CPU cores id: cpu-cores @@ -53,9 +55,11 @@ jobs: runs-on: ubuntu-latest name: Shell tests steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - name: Test CI git logic run: tests/unit/CIGitLogicTest.sh diff --git a/.github/workflows/testBuild.yml b/.github/workflows/testBuild.yml index 16fffcc2c65e..755ab6dbaa60 100644 --- a/.github/workflows/testBuild.yml +++ b/.github/workflows/testBuild.yml @@ -19,7 +19,8 @@ jobs: outputs: READY_TO_BUILD: ${{ fromJSON(steps.isExpensifyEmployee.outputs.IS_EXPENSIFY_EMPLOYEE) && fromJSON(steps.hasReadyToBuildLabel.outputs.HAS_READY_TO_BUILD_LABEL) }} steps: - - id: isExpensifyEmployee + - name: Is Expensify employee + id: isExpensifyEmployee run: | if gh api /orgs/Expensify/teams/expensify-expensify/memberships/${{ github.actor }} --silent; then echo "IS_EXPENSIFY_EMPLOYEE=true" >> "$GITHUB_OUTPUT" @@ -70,7 +71,8 @@ jobs: PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} steps: # This action checks-out the repository, so the workflow can access it. - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - name: Checkout + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 with: ref: ${{ github.event.pull_request.head.sha || needs.getBranchRef.outputs.REF }} @@ -80,9 +82,11 @@ jobs: sed -i 's/ENVIRONMENT=staging/ENVIRONMENT=adhoc/' .env.adhoc echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> .env.adhoc - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - - uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 + - name: Setup Ruby + uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 with: ruby-version: '2.7' bundler-cache: true @@ -117,7 +121,8 @@ jobs: MYAPP_UPLOAD_STORE_PASSWORD: ${{ secrets.MYAPP_UPLOAD_STORE_PASSWORD }} MYAPP_UPLOAD_KEY_PASSWORD: ${{ secrets.MYAPP_UPLOAD_KEY_PASSWORD }} - - uses: actions/upload-artifact@v3 + - name: Upload Artifact + uses: actions/upload-artifact@v3 with: name: android path: ./android_paths.json @@ -131,7 +136,8 @@ jobs: runs-on: macos-12-xl steps: # This action checks-out the repository, so the workflow can access it. - - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 + - name: Checkout + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 with: ref: ${{ github.event.pull_request.head.sha || needs.getBranchRef.outputs.REF }} @@ -144,18 +150,33 @@ jobs: sed -i '' 's/ENVIRONMENT=staging/ENVIRONMENT=adhoc/' .env.adhoc echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> .env.adhoc - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - - name: Setup Xcode + - name: Setup XCode run: sudo xcode-select -switch /Applications/Xcode_14.2.app - - uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 + - name: Setup Ruby + uses: ruby/setup-ruby@eae47962baca661befdfd24e4d6c34ade04858f7 with: ruby-version: '2.7' bundler-cache: true + - name: Cache Pod dependencies + uses: actions/cache@v3 + id: pods-cache + with: + path: ios/Pods + key: ${{ runner.os }}-pods-cache-${{ hashFiles('ios/Podfile.lock') }} + restore-keys: ${{ runner.os }}-pods-cache- + + - name: Compare Podfile.lock and Manifest.lock + id: compare-podfile-and-manifest + run: echo "IS_PODFILE_SAME_AS_MANIFEST=${{ hashFiles('ios/Podfile.lock') == hashFiles('ios/Pods/Manifest.lock') }}" >> "$GITHUB_OUTPUT" + - name: Install cocoapods uses: nick-invision/retry@0711ba3d7808574133d713a0d92d2941be03a350 + if: steps.pods-cache.outputs.cache-hit != 'true' || steps.compare-podfile-and-manifest.outputs.IS_PODFILE_SAME_AS_MANIFEST != 'true' with: timeout_minutes: 10 max_attempts: 5 @@ -185,7 +206,8 @@ jobs: S3_BUCKET: ad-hoc-expensify-cash S3_REGION: us-east-1 - - uses: actions/upload-artifact@v3 + - name: Upload Artifact + uses: actions/upload-artifact@v3 with: name: ios path: ./ios_paths.json @@ -198,7 +220,8 @@ jobs: PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} runs-on: macos-12-xl steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha || needs.getBranchRef.outputs.REF }} @@ -208,7 +231,8 @@ jobs: sed -i '' 's/ENVIRONMENT=staging/ENVIRONMENT=adhoc/' .env.adhoc echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> .env.adhoc - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - name: Decrypt Developer ID Certificate run: cd desktop && gpg --quiet --batch --yes --decrypt --passphrase="$DEVELOPER_ID_SECRET_PASSPHRASE" --output developer_id.p12 developer_id.p12.gpg @@ -239,7 +263,8 @@ jobs: PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} runs-on: ubuntu-latest-xl steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha || needs.getBranchRef.outputs.REF }} @@ -249,7 +274,8 @@ jobs: sed -i 's/ENVIRONMENT=staging/ENVIRONMENT=adhoc/' .env.adhoc echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" >> .env.adhoc - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main - name: Configure AWS Credentials uses: Expensify/App/.github/actions/composite/configureAwsCredentials@main @@ -270,7 +296,7 @@ jobs: postGithubComment: runs-on: ubuntu-latest name: Post a GitHub comment with app download links for testing - needs: [validateActor, getBranchRef, android, ios, desktop, web] + needs: [validateActor, getBranchRef, android, iOS, desktop, web] if: ${{ always() }} env: PULL_REQUEST_NUMBER: ${{ github.event.number || github.event.inputs.PULL_REQUEST_NUMBER }} @@ -281,7 +307,8 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha || needs.getBranchRef.outputs.REF }} - - uses: actions/download-artifact@v3 + - name: Download Artifact + uses: actions/download-artifact@v3 if: ${{ fromJSON(needs.validateActor.outputs.READY_TO_BUILD) }} - name: Read JSONs with android paths @@ -297,7 +324,7 @@ jobs: - name: Read JSONs with iOS paths id: get_ios_path - if: ${{ needs.ios.result == 'success' }} + if: ${{ needs.iOS.result == 'success' }} run: | content_ios="$(cat ./ios/ios_paths.json)" content_ios="${content_ios//'%'/'%25'}" @@ -327,6 +354,6 @@ jobs: IOS: ${{ needs.iOS.result }} WEB: ${{ needs.web.result }} ANDROID_LINK: ${{steps.get_android_path.outputs.android_path}} - DESKTOP_LINK: https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/${{ env.PULL_REQUEST_NUMBER }}/NewExpensify.dmg + DESKTOP_LINK: https://ad-hoc-expensify-cash.s3.amazonaws.com/desktop/${{ env.PULL_REQUEST_NUMBER }}/NewExpensifyAdHoc.dmg IOS_LINK: ${{steps.get_ios_path.outputs.ios_path}} WEB_LINK: https://${{ env.PULL_REQUEST_NUMBER }}.pr-testing.expensify.com diff --git a/.github/workflows/validateGithubActions.yml b/.github/workflows/validateGithubActions.yml index f496c5e4b27e..bcda941e1b05 100644 --- a/.github/workflows/validateGithubActions.yml +++ b/.github/workflows/validateGithubActions.yml @@ -12,9 +12,11 @@ jobs: if: github.actor != 'OSBotify' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v3 - - uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main # Rebuild all the actions on this branch and check for a diff. Fail if there is one, # because that would be a sign that the PR author did not rebuild the Github Actions diff --git a/.github/workflows/verifyPodfile.yml b/.github/workflows/verifyPodfile.yml index 64188769f0bd..d8d931e476d1 100644 --- a/.github/workflows/verifyPodfile.yml +++ b/.github/workflows/verifyPodfile.yml @@ -14,8 +14,9 @@ jobs: if: github.actor != 'OSBotify' runs-on: macos-latest steps: - - uses: actions/checkout@v3 - - - uses: Expensify/App/.github/actions/composite/setupNode@main - - - run: ./.github/scripts/verifyPodfile.sh + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Node + uses: Expensify/App/.github/actions/composite/setupNode@main + - name: Verify podfile + run: ./.github/scripts/verifyPodfile.sh diff --git a/.github/workflows/verifySignedCommits.yml b/.github/workflows/verifySignedCommits.yml index e1068e71e041..ee1b0c4c78da 100644 --- a/.github/workflows/verifySignedCommits.yml +++ b/.github/workflows/verifySignedCommits.yml @@ -9,6 +9,7 @@ jobs: verifySignedCommits: runs-on: ubuntu-latest steps: - - uses: Expensify/App/.github/actions/javascript/verifySignedCommits@main + - name: Verify signed commits + uses: Expensify/App/.github/actions/javascript/verifySignedCommits@main with: GITHUB_TOKEN: ${{ github.token }} diff --git a/.gitignore b/.gitignore index 4919ddc1fdc9..aae9baad529f 100644 --- a/.gitignore +++ b/.gitignore @@ -101,3 +101,9 @@ tests/e2e/results/ # Typescript tsconfig.tsbuildinfo + +# Mock-github +/repo/ + +# Workflow test logs +/workflow_tests/logs/ diff --git a/.well-known/apple-app-site-association b/.well-known/apple-app-site-association index 9274dd8c1382..c871764117ed 100644 --- a/.well-known/apple-app-site-association +++ b/.well-known/apple-app-site-association @@ -63,6 +63,14 @@ { "/": "/new/*", "comment": "New Chat" + }, + { + "/": "/workspace/*", + "comment": "Workspace Details" + }, + { + "/": "/teachersunite/*", + "comment": "Teachers Unite!" } ] } diff --git a/README.md b/README.md index f0a94a16855c..fce7cee8dcdd 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ In order to have more consistent builds, we use a strict `node` and `npm` versio * Changes applied to Javascript will be applied automatically via WebPack as configured in `webpack.dev.js` ## Running the iOS app 📱 -For an M1 Mac, read this [SO](https://stackoverflow.com/c/expensify/questions/11580) for installing cocoapods. +For an M1 Mac, read this [SO](https://stackoverflow.com/questions/64901180/how-to-run-cocoapods-on-apple-silicon-m1) for installing cocoapods. * Install project gems, including cocoapods, using bundler to ensure everyone uses the same versions. In the project root, run: `bundle install` * If you get the error `Could not find 'bundler'`, install the bundler gem first: `gem install bundler` and try again. @@ -419,4 +419,4 @@ In order to compile a production desktop build, run `npm run desktop-build`, thi In order to compile a production iOS build, run `npm run ios-build`, this will generate a `Chat.ipa` in the root directory of this project. #### Local production build the Android app -To build an APK to share run (e.g. via Slack), run `npm run android-build`, this will generate a new APK in the `android/app` folder. \ No newline at end of file +To build an APK to share run (e.g. via Slack), run `npm run android-build`, this will generate a new APK in the `android/app` folder. diff --git a/android/app/build.gradle b/android/app/build.gradle index 133c71d6e7f4..4c5c2f7257ce 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -22,7 +22,7 @@ react { // The list of variants to that are debuggable. For those we're going to // skip the bundling of the JS bundle and the assets. By default is just 'debug'. // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. - debuggableVariants = ["developmentDebug"] + debuggableVariants = ["developmentDebug", "productionDebug"] /* Bundling */ // A list containing the node command and its flags. Default is just 'node'. @@ -90,8 +90,8 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion multiDexEnabled rootProject.ext.multiDexEnabled - versionCode 1001035801 - versionName "1.3.58-1" + versionCode 1001036902 + versionName "1.3.69-2" } flavorDimensions "default" diff --git a/android/app/src/development/assets/airshipconfig.properties b/android/app/src/development/assets/airshipconfig.properties index 490f74552f11..43907fcbf251 100644 --- a/android/app/src/development/assets/airshipconfig.properties +++ b/android/app/src/development/assets/airshipconfig.properties @@ -5,4 +5,4 @@ developmentLogLevel = VERBOSE # Notification Customization notificationIcon = ic_notification -notificationAccentColor = #2EAAE2 \ No newline at end of file +notificationAccentColor = #03D47C \ No newline at end of file diff --git a/android/app/src/main/assets/airshipconfig.properties b/android/app/src/main/assets/airshipconfig.properties index 194c4577de8b..e15533fdda4d 100644 --- a/android/app/src/main/assets/airshipconfig.properties +++ b/android/app/src/main/assets/airshipconfig.properties @@ -4,4 +4,4 @@ inProduction = true # Notification Customization notificationIcon = ic_notification -notificationAccentColor = #2EAAE2 \ No newline at end of file +notificationAccentColor = #03D47C \ No newline at end of file diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 000000000000..106e15001ea1 --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + diff --git a/android/app/src/main/res/values-large/orientation.xml b/android/app/src/main/res/values-large/orientation.xml index c06e0147ee73..9f60d109a2fc 100644 --- a/android/app/src/main/res/values-large/orientation.xml +++ b/android/app/src/main/res/values-large/orientation.xml @@ -1,4 +1,4 @@ - false + true diff --git a/android/app/src/main/res/values-sw600dp/orientation.xml b/android/app/src/main/res/values-sw600dp/orientation.xml index c06e0147ee73..9f60d109a2fc 100644 --- a/android/app/src/main/res/values-sw600dp/orientation.xml +++ b/android/app/src/main/res/values-sw600dp/orientation.xml @@ -1,4 +1,4 @@ - false + true diff --git a/assets/animations/Safe.json b/assets/animations/Safe.json new file mode 100644 index 000000000000..15d4f4917dd0 --- /dev/null +++ b/assets/animations/Safe.json @@ -0,0 +1 @@ +{"v":"5.9.0","fr":24,"ip":0,"op":64,"w":625,"h":400,"nm":"C","assets":[{"id":"comp_0","nm":"E","fr":24,"layers":[{"ind":1,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.1},"t":38,"s":[1002.5,667.5,0],"to":[25.25,-33.75,0],"ti":[-25.25,33.75,0]},{"t":48,"s":[1154,465,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":38,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":43,"s":[100,100,100]},{"t":48,"s":[25,25,100]}],"l":2}},"ao":0,"ip":38,"op":49,"st":0},{"ind":2,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":38,"s":[941.5,674.5,0],"to":[-30.25,-30,0],"ti":[30.25,30,0]},{"t":48,"s":[760,494.5,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":38,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":43,"s":[100,100,100]},{"t":48,"s":[25,25,100]}],"l":2}},"ao":0,"ip":38,"op":49,"st":0},{"ind":3,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.041},"t":38,"s":[984,730.5,0],"to":[7.333,29.25,0],"ti":[-7.333,-29.25,0]},{"t":48,"s":[1028,906,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":38,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":43,"s":[100,100,100]},{"t":48,"s":[25,25,100]}],"l":2}},"ao":0,"ip":38,"op":49,"st":0},{"ind":4,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.166},"t":39,"s":[995.5,714.5,0],"to":[42,3.333,0],"ti":[-42,-3.333,0]},{"t":49,"s":[1247.5,734.5,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":39,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":44,"s":[100,100,100]},{"t":49,"s":[25,25,100]}],"l":2}},"ao":0,"ip":39,"op":50,"st":0},{"ind":5,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0.036},"t":39,"s":[957.5,666.5,0],"to":[9.167,-41.5,0],"ti":[-9.167,41.5,0]},{"t":49,"s":[1012.5,417.5,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":39,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":44,"s":[100,100,100]},{"t":49,"s":[25,25,100]}],"l":2}},"ao":0,"ip":39,"op":50,"st":0},{"ind":6,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":39,"s":[932,732.5,0],"to":[-20.75,21.5,0],"ti":[20.75,-21.5,0]},{"t":49,"s":[807.5,861.5,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":39,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":44,"s":[100,100,100]},{"t":49,"s":[25,25,100]}],"l":2}},"ao":0,"ip":39,"op":50,"st":0},{"ind":7,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":41,"s":[-44]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":46,"s":[0]},{"t":51,"s":[48]}]},"p":{"a":0,"k":[1033,663,0],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":41,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":46,"s":[100,100,100]},{"t":51,"s":[25,25,100]}],"l":2}},"ao":0,"ip":41,"op":52,"st":0},{"ind":8,"ty":3,"nm":"s","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":45,"s":[-45]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":49,"s":[0]},{"t":54,"s":[48]}]},"p":{"a":0,"k":[906,769,0],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":45,"s":[25,25,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":49,"s":[100,100,100]},{"t":54,"s":[25,25,100]}],"l":2}},"ao":0,"ip":44,"op":55,"st":2},{"ind":9,"ty":3,"nm":"b","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":0,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":5,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":33,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":37,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":38,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":42,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":52,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.65,"y":0.65},"o":{"x":0.313,"y":0.313},"t":57,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.378,"y":0.378},"t":59,"s":[886,870,0],"to":[0,0,0],"ti":[0,0,0]},{"t":63,"s":[886,870,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[106,92,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":5,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.407,0.407,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0.273,0.273,0]},"t":37,"s":[98.704,102.592,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":38,"s":[98,104,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":42,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":52,"s":[100,100,100]},{"i":{"x":[0.65,0.65,0.65],"y":[-0.264,-0.264,1]},"o":{"x":[0.313,0.313,0.313],"y":[0,0,0]},"t":57,"s":[97,103,100]},{"i":{"x":[0.831,0.831,0.831],"y":[0.881,0.881,1]},"o":{"x":[0.378,0.378,0.378],"y":[0.16,0.16,0]},"t":59,"s":[97.166,102.834,100]},{"t":63,"s":[100,100,100]}],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":10,"ty":3,"nm":"h","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[93,-80,0],"to":[0.667,0,0],"ti":[-0.667,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":6,"s":[97,-80,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[97,-80,0],"to":[13.333,0,0],"ti":[-13.333,0,0]},{"t":37,"s":[177,-80,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[100,100,100]},{"t":37,"s":[100,100,100]}],"l":2}},"ao":0,"ip":0,"op":38,"st":0},{"ind":11,"ty":3,"nm":"h","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":9,"s":[0]},{"i":{"x":[0.694],"y":[0.113]},"o":{"x":[0.299],"y":[0]},"t":14,"s":[13]},{"i":{"x":[0.79],"y":[0.911]},"o":{"x":[0.43],"y":[0.241]},"t":19,"s":[-6.26]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":21,"s":[-46]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":22,"s":[-81]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":23,"s":[-125]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":24,"s":[-241]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":25,"s":[-285]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":26,"s":[-319]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":32,"s":[-376]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.333],"y":[0]},"t":33,"s":[-376]},{"t":37,"s":[-372]}]},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[90,-80,0],"to":[0.833,0,0],"ti":[-0.833,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":6,"s":[95,-80,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[95,-80,0],"to":[13.333,0,0],"ti":[-13.333,0,0]},{"t":37,"s":[175,-80,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[100,100,100]},{"t":37,"s":[55,100,100]}],"l":2}},"ao":0,"ip":0,"op":38,"st":0},{"ind":12,"ty":3,"nm":"d","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[182,-134,0],"to":[0.667,0,0],"ti":[-0.667,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":6,"s":[186,-134,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[186,-134,0],"to":[6.5,0,0],"ti":[-6.5,0,0]},{"t":37,"s":[225,-134,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[100,100,100]},{"t":37,"s":[80,100,100]}],"l":2}},"ao":0,"ip":0,"op":38,"st":0},{"ind":13,"ty":3,"nm":"d","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[170,-139,0],"to":[0.667,0,0],"ti":[-0.667,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":6,"s":[174,-139,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[174,-139,0],"to":[5.833,0,0],"ti":[-5.833,0,0]},{"t":37,"s":[209,-139,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[100,100,100]},{"t":37,"s":[53,100,100]}],"l":2}},"ao":0,"ip":0,"op":38,"st":0},{"ind":14,"ty":3,"nm":"b","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":0,"k":[49,52,0],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":38,"st":0},{"ind":15,"ty":3,"nm":"d","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":0,"s":[223,-145,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":6,"s":[223,-145,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":33,"s":[223,-145,0],"to":[0,0,0],"ti":[0,0,0]},{"t":37,"s":[223,-145,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[114,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[100,100,100]},{"t":37,"s":[42,100,100]}],"l":2}},"ao":0,"ip":0,"op":38,"st":0},{"ind":16,"ty":3,"nm":"d","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[75.5,-107.5,0],"to":[0.583,0.583,0],"ti":[-0.583,-0.583,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0.333},"t":6,"s":[79,-104,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.333,"y":0},"t":33,"s":[79,-104,0],"to":[14.333,0,0],"ti":[-14.333,0,0]},{"t":37,"s":[165,-104,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":6,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":33,"s":[100,100,100]},{"t":37,"s":[100,100,100]}],"l":2}},"ao":0,"ip":0,"op":38,"st":0},{"ind":17,"ty":3,"nm":"d","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":38,"s":[222,-147,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":43,"s":[222,-147,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":51,"s":[222,-147,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.65,"y":0.65},"o":{"x":0.313,"y":0.313},"t":57,"s":[222,-147,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.378,"y":0.378},"t":59,"s":[222,-147,0],"to":[0,0,0],"ti":[0,0,0]},{"t":63,"s":[222,-147,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":38,"s":[111,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":43,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":51,"s":[100,100,100]},{"i":{"x":[0.65,0.65,0.65],"y":[-0.264,1,1]},"o":{"x":[0.313,0.313,0.313],"y":[0,0,0]},"t":57,"s":[111,100,100]},{"i":{"x":[0.831,0.831,0.831],"y":[0.881,1,1]},"o":{"x":[0.378,0.378,0.378],"y":[0.16,0,0]},"t":59,"s":[108.452,100,100]},{"t":63,"s":[65,100,100]}],"l":2}},"ao":0,"ip":38,"op":64,"st":0},{"ind":18,"ty":3,"nm":"d","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":38,"s":[306,-107,0],"to":[-1.333,0,0],"ti":[1.333,0,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":43,"s":[298,-107,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":51,"s":[298,-107,0],"to":[1.333,0,0],"ti":[4.333,0,0]},{"i":{"x":0.723,"y":1},"o":{"x":0.313,"y":0},"t":57,"s":[306,-107,0],"to":[-0.439,0,0],"ti":[0.802,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.378,"y":0},"t":59,"s":[304.119,-107,0],"to":[-7.123,0,0],"ti":[5.093,0,0]},{"t":63,"s":[272,-107,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":38,"s":[109,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":43,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":51,"s":[100,100,100]},{"i":{"x":[0.65,0.65,0.65],"y":[-0.264,1,1]},"o":{"x":[0.313,0.313,0.313],"y":[0,0,0]},"t":57,"s":[109,100,100]},{"i":{"x":[0.831,0.831,0.831],"y":[0.881,1,1]},"o":{"x":[0.378,0.378,0.378],"y":[0.16,0,0]},"t":59,"s":[106.563,100,100]},{"t":63,"s":[65,100,100]}],"l":2}},"ao":0,"ip":38,"op":64,"st":0},{"ind":19,"ty":3,"nm":"b","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":0,"k":[49,52,0],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":20,"ty":3,"nm":"c","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[914,792,0],"to":[0,-1.667,0],"ti":[0,-0.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":38,"s":[914,782,0],"to":[0,0.5,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":43,"s":[914,795,0],"to":[0,1.667,0],"ti":[0,0.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":48,"s":[914,792,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":52,"s":[914,792,0],"to":[0,-0.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":58,"s":[914,788,0],"to":[0,0,0],"ti":[0,-0.667,0]},{"t":63,"s":[914,792,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":21,"ty":3,"nm":"c","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[969,759,0],"to":[0,-1.667,0],"ti":[0,-0.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":38,"s":[969,749,0],"to":[0,0.5,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":43,"s":[969,762,0],"to":[0,1.667,0],"ti":[0,0.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":48,"s":[969,759,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":52,"s":[969,759,0],"to":[0,-0.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":58,"s":[969,755,0],"to":[0,0,0],"ti":[0,-0.667,0]},{"t":63,"s":[969,759,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":22,"ty":3,"nm":"c","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":34,"s":[1017,763,0],"to":[0,-1.667,0],"ti":[0,-0.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":38,"s":[1017,753,0],"to":[0,0.5,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":43,"s":[1017,766,0],"to":[0,1.667,0],"ti":[0,0.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":48,"s":[1017,763,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":52,"s":[1017,763,0],"to":[0,-0.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":58,"s":[1017,759,0],"to":[0,0,0],"ti":[0,-0.667,0]},{"t":63,"s":[1017,763,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":23,"ty":3,"nm":"g","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":36,"s":[1015,712,0],"to":[0,-1.667,0],"ti":[0,-0.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[1015,702,0],"to":[0,0.5,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[1015,715,0],"to":[0,1.667,0],"ti":[0,0.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":50,"s":[1015,712,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":54,"s":[1015,712,0],"to":[0,-0.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":58,"s":[1015,708,0],"to":[0,0,0],"ti":[0,-0.667,0]},{"t":63,"s":[1015,712,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":24,"ty":3,"nm":"g","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":36,"s":[931,726,0],"to":[0,-1.667,0],"ti":[0,-0.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[931,716,0],"to":[0,0.5,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":45,"s":[931,729,0],"to":[0,1.667,0],"ti":[0,0.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":50,"s":[931,726,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":54,"s":[931,726,0],"to":[0,-0.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":58,"s":[931,722,0],"to":[0,0,0],"ti":[0,-0.667,0]},{"t":63,"s":[931,726,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":25,"ty":3,"nm":"c","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":38,"s":[955,679,0],"to":[0,-1.667,0],"ti":[0,-0.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":42,"s":[955,669,0],"to":[0,0.5,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":47,"s":[955,682,0],"to":[0,1.667,0],"ti":[0,0.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":52,"s":[955,679,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":56,"s":[955,679,0],"to":[0,-0.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":58,"s":[955,675,0],"to":[0,0,0],"ti":[0,-0.667,0]},{"t":63,"s":[955,679,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":26,"ty":3,"nm":"c","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":38,"s":[1025,686,0],"to":[0,-1.667,0],"ti":[0,-0.5,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":42,"s":[1025,676,0],"to":[0,0.5,0],"ti":[0,-1.667,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":47,"s":[1025,689,0],"to":[0,1.667,0],"ti":[0,0.5,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":52,"s":[1025,686,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":56,"s":[1025,686,0],"to":[0,-0.667,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0},"t":58,"s":[1025,682,0],"to":[0,0,0],"ti":[0,-0.667,0]},{"t":63,"s":[1025,686,0]}],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":27,"ty":3,"nm":"b","parent":9,"sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":0,"k":[142,-112,0],"l":2},"a":{"a":0,"k":[49,52,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":28,"ty":4,"nm":"s","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-122,94,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-1.466,-2.97],[0,0],[-1.301,-0.189],[0,0],[2.372,-2.313],[0,0],[-0.223,-1.297],[0,0],[2.932,1.542],[0,0],[1.165,-0.612],[0,0],[-0.559,3.265],[0,0],[0.941,0.918],[0,0],[-3.278,0.476],[0,0],[-0.582,1.179],[0,0]],"o":[[0,0],[0.582,1.179],[0,0],[3.278,0.476],[0,0],[-0.942,0.918],[0,0],[0.56,3.265],[0,0],[-1.164,-0.612],[0,0],[-2.932,1.542],[0,0],[0.222,-1.297],[0,0],[-2.372,-2.313],[0,0],[1.302,-0.189],[0,0],[1.466,-2.97]],"v":[[3.584,-16.859],[6.572,-10.804],[9.581,-8.618],[16.263,-7.647],[18.478,-0.83],[13.643,3.882],[12.494,7.42],[13.635,14.074],[7.836,18.287],[1.859,15.145],[-1.86,15.145],[-7.836,18.287],[-13.635,14.074],[-12.493,7.42],[-13.642,3.882],[-18.477,-0.83],[-16.262,-7.647],[-9.581,-8.618],[-6.572,-10.804],[-3.584,-16.859]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1131.528,497.634]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.986,1.549],[0,0],[2.113,0],[0.423,-0.563],[0,0],[1.55,-0.282],[0,0],[0.282,-1.268],[-1.408,-1.268],[0,0],[0.705,-2.113],[0,0],[-1.691,-0.564],[-1.127,0.845],[0,0],[-0.563,-0.563],[0,0],[-0.704,0.845],[0.141,1.691],[0,0],[-1.127,1.127],[0,0],[1.127,1.408],[1.128,0.282]],"o":[[0,0],[-0.986,-1.55],[0,0],[-2.113,0],[-0.422,0.564],[0,0],[-1.549,0.282],[0,0],[-0.282,1.268],[1.409,1.268],[0,0],[-0.704,2.113],[0,0],[1.69,0.563],[1.127,-0.845],[0,0],[0.564,0.564],[0,0],[0.705,-0.845],[-0.141,-1.69],[0,0],[1.128,-1.127],[0,0],[-1.127,-1.409],[-1.126,-0.281]],"v":[[8.425,-8.645],[6.128,-11.128],[3.31,-17.187],[-0.212,-18.878],[-3.734,-16.623],[-7.256,-9.721],[-10.637,-8.312],[-16.835,-7.326],[-19.512,-4.789],[-18.667,-0.422],[-13.454,4.367],[-12.75,8.031],[-13.595,14.37],[-12.186,18.315],[-6.974,18.032],[-1.339,14.933],[2.042,15.638],[7.959,18.596],[12.185,17.891],[13.453,14.229],[12.326,7.185],[13.312,4.086],[19.229,-1.549],[18.948,-5.352],[15.566,-7.466]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1131.759,497.456]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":39,"op":49,"st":0},{"ind":29,"ty":4,"nm":"s","parent":2,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[219,68,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-1.466,-2.97],[0,0],[-1.302,-0.189],[0,0],[2.372,-2.312],[0,0],[-0.222,-1.297],[0,0],[2.932,1.542],[0,0],[1.165,-0.612],[0,0],[-0.559,3.265],[0,0],[0.942,0.918],[0,0],[-3.278,0.476],[0,0],[-0.582,1.179],[0,0]],"o":[[0,0],[0.582,1.179],[0,0],[3.278,0.476],[0,0],[-0.942,0.918],[0,0],[0.56,3.265],[0,0],[-1.164,-0.612],[0,0],[-2.932,1.542],[0,0],[0.222,-1.297],[0,0],[-2.372,-2.312],[0,0],[1.302,-0.189],[0,0],[1.466,-2.97]],"v":[[3.584,-16.859],[6.572,-10.804],[9.581,-8.618],[16.263,-7.647],[18.478,-0.831],[13.643,3.882],[12.493,7.42],[13.635,14.074],[7.836,18.287],[1.859,15.145],[-1.86,15.145],[-7.836,18.287],[-13.635,14.074],[-12.493,7.42],[-13.643,3.882],[-18.477,-0.831],[-16.262,-7.647],[-9.581,-8.618],[-6.572,-10.804],[-3.584,-16.859]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[790.365,522.523]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.986,1.549],[0,0],[2.113,0],[0.423,-0.563],[0,0],[1.55,-0.282],[0,0],[0.282,-1.268],[-1.409,-1.268],[0,0],[0.704,-2.113],[0,0],[-1.691,-0.564],[-1.127,0.845],[0,0],[-0.563,-0.563],[0,0],[-0.704,0.845],[0.141,1.691],[0,0],[-1.127,1.127],[0,0],[1.127,1.409],[1.127,0.282]],"o":[[0,0],[-0.987,-1.55],[0,0],[-2.113,0],[-0.422,0.564],[0,0],[-1.549,0.282],[0,0],[-0.282,1.268],[1.409,1.268],[0,0],[-0.704,2.113],[0,0],[1.69,0.563],[1.127,-0.845],[0,0],[0.564,0.564],[0,0],[0.705,-0.845],[-0.141,-1.69],[0,0],[1.127,-1.127],[0,0],[-1.127,-1.408],[-1.127,-0.281]],"v":[[8.426,-8.645],[6.129,-11.128],[3.311,-17.187],[-0.211,-18.878],[-3.733,-16.623],[-7.255,-9.721],[-10.636,-8.312],[-16.834,-7.326],[-19.511,-4.789],[-18.666,-0.422],[-13.453,4.367],[-12.749,8.031],[-13.594,14.37],[-12.185,18.315],[-6.973,18.032],[-1.338,14.933],[2.043,15.638],[7.96,18.596],[12.186,17.891],[13.454,14.229],[12.327,7.185],[13.313,4.086],[19.23,-1.549],[18.948,-5.354],[15.567,-7.466]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[790.595,522.345]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":39,"op":49,"st":0},{"ind":30,"ty":4,"nm":"s","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-13,-288,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-1.466,-2.97],[0,0],[-1.301,-0.189],[0,0],[2.372,-2.312],[0,0],[-0.222,-1.297],[0,0],[2.932,1.542],[0,0],[1.165,-0.612],[0,0],[-0.56,3.265],[0,0],[0.942,0.918],[0,0],[-3.278,0.476],[0,0],[-0.582,1.179],[0,0]],"o":[[0,0],[0.582,1.179],[0,0],[3.278,0.476],[0,0],[-0.942,0.918],[0,0],[0.56,3.265],[0,0],[-1.164,-0.612],[0,0],[-2.932,1.542],[0,0],[0.222,-1.297],[0,0],[-2.372,-2.312],[0,0],[1.302,-0.189],[0,0],[1.466,-2.97]],"v":[[3.583,-16.859],[6.571,-10.804],[9.58,-8.618],[16.262,-7.647],[18.477,-0.831],[13.642,3.882],[12.492,7.42],[13.634,14.074],[7.835,18.287],[1.859,15.145],[-1.861,15.145],[-7.837,18.287],[-13.635,14.074],[-12.494,7.42],[-13.644,3.882],[-18.478,-0.831],[-16.263,-7.647],[-9.582,-8.618],[-6.573,-10.804],[-3.585,-16.859]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1021.652,878.862]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.986,1.549],[0,0],[2.113,0],[0.423,-0.563],[0,0],[1.55,-0.282],[0,0],[0.282,-1.268],[-1.408,-1.268],[0,0],[0.705,-2.113],[0,0],[-1.691,-0.564],[-1.127,0.845],[0,0],[-0.563,-0.563],[0,0],[-0.704,0.845],[0.141,1.691],[0,0],[-1.127,1.127],[0,0],[1.127,1.409],[1.128,0.282]],"o":[[0,0],[-0.986,-1.55],[0,0],[-2.113,0],[-0.422,0.564],[0,0],[-1.549,0.282],[0,0],[-0.282,1.268],[1.409,1.268],[0,0],[-0.704,2.113],[0,0],[1.69,0.563],[1.127,-0.845],[0,0],[0.564,0.564],[0,0],[0.705,-0.845],[-0.141,-1.69],[0,0],[1.128,-1.127],[0,0],[-1.127,-1.408],[-1.126,-0.281]],"v":[[8.425,-8.645],[6.128,-11.128],[3.31,-17.187],[-0.212,-18.878],[-3.734,-16.623],[-7.256,-9.721],[-10.637,-8.312],[-16.835,-7.326],[-19.512,-4.789],[-18.667,-0.423],[-13.454,4.367],[-12.75,8.03],[-13.595,14.37],[-12.186,18.315],[-6.974,18.032],[-1.339,14.933],[2.042,15.638],[7.959,18.596],[12.185,17.891],[13.453,14.228],[12.326,7.185],[13.312,4.086],[19.229,-1.549],[18.948,-5.354],[15.566,-7.466]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1021.883,878.685]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":39,"op":49,"st":0},{"ind":31,"ty":4,"nm":"s","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-198,-141,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-2.137,-2.531],[0,0],[-1.309,0.129],[0,0],[1.747,-2.815],[0,0],[-0.528,-1.205],[0,0],[3.216,0.791],[0,0],[0.983,-0.874],[0,0],[0.241,3.304],[0,0],[1.135,0.665],[0,0],[-3.068,1.25],[0,0],[-0.281,1.285],[0,0]],"o":[[0,0],[0.848,1.005],[0,0],[3.296,-0.326],[0,0],[-0.694,1.118],[0,0],[1.328,3.035],[0,0],[-1.277,-0.315],[0,0],[-2.476,2.201],[0,0],[-0.096,-1.311],[0,0],[-2.858,-1.674],[0,0],[1.218,-0.497],[0,0],[0.709,-3.236]],"v":[[0.182,-18.266],[4.538,-13.106],[7.984,-11.707],[14.703,-12.371],[18.491,-6.286],[14.931,-0.55],[14.666,3.16],[17.373,9.345],[12.757,14.829],[6.201,13.216],[2.59,14.109],[-2.455,18.596],[-9.096,15.9],[-9.588,9.166],[-11.554,6.009],[-17.38,2.596],[-16.868,-4.553],[-10.616,-7.101],[-8.221,-9.947],[-6.775,-16.542]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1206.516,732.392]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[1.33,1.267],[0,0],[2.051,-0.508],[0.275,-0.649],[0,0],[1.436,-0.646],[0,0],[-0.031,-1.298],[-1.672,-0.892],[0,0],[0.176,-2.221],[0,0],[-1.776,-0.141],[-0.891,1.092],[0,0],[-0.683,-0.412],[0,0],[-0.48,0.99],[0.544,1.607],[0,0],[-0.823,1.365],[0,0],[1.433,1.096],[1.162,0.003]],"o":[[0,0],[-1.33,-1.268],[0,0],[-2.051,0.508],[-0.275,0.648],[0,0],[-1.437,0.646],[0,0],[0.031,1.299],[1.672,0.892],[0,0],[-0.176,2.22],[0,0],[1.776,0.14],[0.891,-1.091],[0,0],[0.682,0.411],[0,0],[0.481,-0.989],[-0.543,-1.607],[0,0],[0.823,-1.365],[0,0],[-1.433,-1.097],[-1.162,-0.002]],"v":[[6.892,-11.449],[4.065,-13.308],[-0.126,-18.511],[-3.951,-19.306],[-6.828,-16.271],[-8.587,-8.724],[-11.53,-6.544],[-17.31,-4.097],[-19.299,-0.992],[-17.429,3.044],[-11.218,6.441],[-9.654,9.827],[-8.951,16.184],[-6.635,19.674],[-1.643,18.147],[3.082,13.784],[6.533,13.656],[12.987,15.105],[16.92,13.405],[17.27,9.545],[14.483,2.979],[14.696,-0.267],[19.085,-7.159],[17.897,-10.783],[14.107,-12.022]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1206.661,732.158]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":40,"op":50,"st":0},{"ind":32,"ty":4,"nm":"s","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[5,134,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-2.137,-2.531],[0,0],[-1.309,0.129],[0,0],[1.747,-2.815],[0,0],[-0.528,-1.205],[0,0],[3.216,0.791],[0,0],[0.983,-0.874],[0,0],[0.241,3.304],[0,0],[1.135,0.665],[0,0],[-3.067,1.25],[0,0],[-0.281,1.285],[0,0]],"o":[[0,0],[0.848,1.005],[0,0],[3.296,-0.326],[0,0],[-0.694,1.118],[0,0],[1.328,3.035],[0,0],[-1.277,-0.315],[0,0],[-2.476,2.201],[0,0],[-0.096,-1.311],[0,0],[-2.858,-1.674],[0,0],[1.218,-0.497],[0,0],[0.709,-3.236]],"v":[[0.182,-18.266],[4.538,-13.106],[7.984,-11.707],[14.703,-12.371],[18.491,-6.287],[14.931,-0.551],[14.666,3.16],[17.373,9.345],[12.757,14.829],[6.201,13.215],[2.59,14.109],[-2.455,18.595],[-9.096,15.9],[-9.588,9.165],[-11.554,6.009],[-17.38,2.595],[-16.868,-4.553],[-10.616,-7.102],[-8.221,-9.947],[-6.775,-16.543]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1003.018,457.183]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[1.33,1.267],[0,0],[2.051,-0.508],[0.275,-0.649],[0,0],[1.436,-0.646],[0,0],[-0.031,-1.298],[-1.672,-0.892],[0,0],[0.176,-2.221],[0,0],[-1.776,-0.141],[-0.891,1.092],[0,0],[-0.683,-0.412],[0,0],[-0.48,0.99],[0.544,1.607],[0,0],[-0.823,1.365],[0,0],[1.433,1.096],[1.162,0.003]],"o":[[0,0],[-1.33,-1.268],[0,0],[-2.051,0.508],[-0.275,0.648],[0,0],[-1.437,0.646],[0,0],[0.031,1.299],[1.673,0.892],[0,0],[-0.176,2.22],[0,0],[1.776,0.14],[0.891,-1.091],[0,0],[0.682,0.411],[0,0],[0.481,-0.989],[-0.543,-1.607],[0,0],[0.823,-1.365],[0,0],[-1.433,-1.097],[-1.161,-0.002]],"v":[[6.892,-11.449],[4.065,-13.308],[-0.126,-18.511],[-3.951,-19.306],[-6.828,-16.271],[-8.587,-8.724],[-11.53,-6.544],[-17.31,-4.097],[-19.299,-0.992],[-17.429,3.044],[-11.218,6.441],[-9.654,9.827],[-8.951,16.184],[-6.635,19.674],[-1.643,18.147],[3.082,13.785],[6.533,13.656],[12.987,15.105],[16.92,13.405],[17.27,9.545],[14.483,2.979],[14.696,-0.267],[19.085,-7.159],[17.897,-10.783],[14.107,-12.022]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1003.163,456.949]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":40,"op":50,"st":0},{"ind":33,"ty":4,"nm":"s","parent":6,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[183,-251,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-2.137,-2.531],[0,0],[-1.309,0.129],[0,0],[1.747,-2.815],[0,0],[-0.528,-1.205],[0,0],[3.216,0.791],[0,0],[0.983,-0.874],[0,0],[0.241,3.304],[0,0],[1.135,0.665],[0,0],[-3.067,1.25],[0,0],[-0.281,1.285],[0,0]],"o":[[0,0],[0.848,1.005],[0,0],[3.296,-0.326],[0,0],[-0.694,1.118],[0,0],[1.328,3.035],[0,0],[-1.277,-0.315],[0,0],[-2.476,2.201],[0,0],[-0.096,-1.312],[0,0],[-2.858,-1.674],[0,0],[1.218,-0.497],[0,0],[0.709,-3.236]],"v":[[0.182,-18.266],[4.538,-13.107],[7.984,-11.708],[14.703,-12.372],[18.491,-6.287],[14.931,-0.551],[14.666,3.159],[17.373,9.344],[12.757,14.828],[6.201,13.215],[2.59,14.109],[-2.455,18.595],[-9.096,15.899],[-9.588,9.165],[-11.554,6.008],[-17.38,2.595],[-16.868,-4.554],[-10.616,-7.102],[-8.221,-9.948],[-6.775,-16.543]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[826.073,843.483]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[1.33,1.267],[0,0],[2.051,-0.508],[0.275,-0.649],[0,0],[1.436,-0.646],[0,0],[-0.031,-1.298],[-1.672,-0.892],[0,0],[0.176,-2.221],[0,0],[-1.776,-0.141],[-0.891,1.092],[0,0],[-0.683,-0.411],[0,0],[-0.48,0.99],[0.544,1.607],[0,0],[-0.823,1.365],[0,0],[1.433,1.096],[1.162,0.003]],"o":[[0,0],[-1.33,-1.268],[0,0],[-2.051,0.508],[-0.275,0.648],[0,0],[-1.437,0.646],[0,0],[0.031,1.299],[1.673,0.892],[0,0],[-0.176,2.22],[0,0],[1.776,0.14],[0.891,-1.091],[0,0],[0.682,0.412],[0,0],[0.481,-0.989],[-0.543,-1.607],[0,0],[0.823,-1.365],[0,0],[-1.433,-1.097],[-1.162,-0.002]],"v":[[6.892,-11.449],[4.065,-13.308],[-0.126,-18.511],[-3.951,-19.306],[-6.828,-16.271],[-8.587,-8.724],[-11.53,-6.544],[-17.31,-4.097],[-19.299,-0.992],[-17.429,3.044],[-11.218,6.441],[-9.654,9.827],[-8.951,16.184],[-6.635,19.674],[-1.643,18.147],[3.082,13.784],[6.533,13.655],[12.987,15.105],[16.92,13.405],[17.27,9.545],[14.483,2.979],[14.696,-0.267],[19.085,-7.159],[17.897,-10.783],[14.107,-12.022]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[826.218,843.248]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":40,"op":50,"st":0},{"ind":34,"ty":4,"nm":"s","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-24,-71,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-2.887,-13.663]],"o":[[14.055,2.969],[0,0]],"v":[[-12.203,-13.299],[12.203,13.299]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1022.756,676.426]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-13.603,2.79]],"o":[[2.906,-13.951],[0,0]],"v":[[-11.693,13.585],[11.693,-13.584]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1046.801,676.14]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[2.887,13.662]],"o":[[-14.055,-2.969],[0,0]],"v":[[12.472,11.971],[-12.472,-11.971]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1046.023,650.585]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[13.603,-2.79]],"o":[[-2.906,13.951],[0,0]],"v":[[11.426,-12.251],[-11.425,12.251]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1021.978,650.875]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[2.518,1.139],[2.755,3.369],[0.956,4.707],[0.234,-0.024],[4.601,-4.339],[4.891,-1.655],[-4.14,-4.891],[-1.773,-6.039],[-0.293,0.019],[-2.404,4.223],[-7.336,2.215],[-0.049,0.218]],"o":[[-3.961,-1.792],[-2.999,-3.669],[-0.217,0.049],[-0.438,6.266],[-3.404,3.211],[5.775,1.396],[4.201,4.965],[0.267,-0.056],[0.658,-4.272],[3.85,-6.766],[0.022,-0.223],[-2.523,-0.434]],"v":[[15.656,-4.367],[5.309,-12.227],[-0.689,-25.093],[-1.363,-24.98],[-9.593,-8.044],[-23.102,-1.03],[-7.773,8.232],[0.268,25.093],[0.61,24.984],[5.448,12.271],[23.081,-1.535],[22.804,-1.808]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1034.497,664.127]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":42,"op":52,"st":0},{"ind":35,"ty":4,"nm":"s","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[103,-177,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-2.887,-13.663]],"o":[[14.055,2.969],[0,0]],"v":[[-12.203,-13.299],[12.203,13.299]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[895.756,782.426]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-13.603,2.79]],"o":[[2.906,-13.951],[0,0]],"v":[[-11.693,13.585],[11.693,-13.584]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.801,782.14]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[2.887,13.662]],"o":[[-14.055,-2.969],[0,0]],"v":[[12.471,11.971],[-12.472,-11.971]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.023,756.585]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[13.603,-2.79]],"o":[[-2.906,13.951],[0,0]],"v":[[11.426,-12.251],[-11.425,12.251]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[894.978,756.875]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[2.518,1.139],[2.755,3.369],[0.957,4.707],[0.234,-0.024],[4.602,-4.339],[4.891,-1.655],[-4.14,-4.891],[-1.772,-6.039],[-0.293,0.019],[-2.403,4.223],[-7.336,2.215],[-0.049,0.218]],"o":[[-3.961,-1.792],[-2.999,-3.669],[-0.217,0.049],[-0.438,6.266],[-3.404,3.211],[5.776,1.396],[4.201,4.965],[0.268,-0.056],[0.658,-4.272],[3.85,-6.766],[0.022,-0.223],[-2.522,-0.434]],"v":[[15.656,-4.367],[5.309,-12.227],[-0.689,-25.093],[-1.363,-24.98],[-9.593,-8.044],[-23.102,-1.03],[-7.773,8.232],[0.268,25.093],[0.61,24.984],[5.448,12.271],[23.081,-1.535],[22.804,-1.808]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[907.497,770.127]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":45,"op":55,"st":2},{"ind":36,"ty":4,"nm":"h","parent":10,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[75,-146,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.398],[4.398,0],[0,4.398],[-4.398,0]],"o":[[0,4.398],[-4.398,0],[0,-4.398],[4.398,0]],"v":[[7.963,0],[0,7.963],[-7.963,0],[0,-7.963]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[934.796,738.397]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-9.856],[9.458,0],[0,9.856],[-9.458,0]],"o":[[0,9.856],[-9.458,0],[0,-9.856],[9.458,0]],"v":[[17.125,0],[0,17.846],[-17.125,0],[0,-17.846]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[932.888,738.574]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.357],[4.095,0],[0,4.725],[-4.096,0]],"o":[[0,4.378],[-4.096,0],[0,-4.634],[4.095,0]],"v":[[7.963,0.098],[0.068,7.963],[-7.963,0],[0.068,-7.963]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[1,0.878,0.839,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[934.796,738.397]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.031],[4.032,0],[0,4.031],[-4.031,0]],"o":[[0,4.031],[-4.031,0],[0,-4.031],[4.032,0]],"v":[[7.299,-0.001],[-0.001,7.299],[-7.3,-0.001],[-0.001,-7.299]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[933.962,738.702]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-9.529],[9.162,0],[0,9.529],[-9.162,0]],"o":[[0,9.529],[-9.162,0],[0,-9.529],[9.162,0]],"v":[[17.125,-0.177],[-0.083,17.846],[-17.125,-0.177],[-0.083,-17.845]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[1,0.878,0.839,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[932.888,738.574]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":38,"st":0},{"ind":37,"ty":4,"nm":"h","parent":11,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[77,-146,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.016,-3.878]],"o":[[5.016,-1.856],[0,0]],"v":[[-7.524,-0.588],[7.524,2.444]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[929.987,753.851]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-3.731,-4.4]],"o":[[1.774,10.592],[0,0]],"v":[[-4.323,-10.629],[4.323,10.629]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[945.755,733.21]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-0.781,6.685]],"o":[[4.838,-2.979],[0,0]],"v":[[-4.214,7.249],[4.214,-7.248]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.522,729.829]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-11.348,-11.45],[5.119,-5.074],[11.048,11.146],[16.289,12.664]],"o":[[22.889,23.251],[11.348,11.449],[-5.119,5.073],[-11.047,-11.147],[0,0]],"v":[[-20.161,-31.188],[21.382,-0.539],[23.227,24.845],[-1.323,20.042],[-32.731,-18.731]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[970.24,775.026]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[14.744,-6.517],[2.914,6.592],[-14.353,6.345],[-17.64,10.701]],"o":[[-29.886,13.09],[-14.744,6.518],[-2.914,-6.592],[14.354,-6.346],[0,0]],"v":[[35.368,-9.107],[-8.083,18.773],[-32.455,11.443],[-19.211,-9.778],[28.213,-25.292]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[887.094,762.369]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,16.12],[-7.208,0],[0,-15.694],[-2.655,-20.461]],"o":[[0.111,-32.627],[0,-16.12],[7.207,0],[0,15.693],[0,0]],"v":[[-7.374,35.17],[-15.306,-15.843],[1.253,-35.171],[15.307,-14.477],[10.322,35.17]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[931.11,687.411]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-9.468,-12.012],[-4.525,-2.95],[-6.391,8.121],[3.693,4.101],[2.867,2.283],[2.387,1.824],[0,0],[0,0]],"o":[[7.57,-2.202],[3.264,7.733],[4.524,2.951],[6.39,-8.121],[-3.692,-4.101],[-2.867,-2.284],[-2.387,-1.824],[0,0],[0,0]],"v":[[-38.034,-19.5],[-10.472,0.539],[11.962,27.967],[31.644,26.592],[32.603,6.389],[24.931,-0.95],[3.06,-13.607],[-13.692,-28.254],[-30.464,-34.713]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[962.937,771.79]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[8.353,-0.835],[4.437,-3.08],[-5.116,-8.979],[-5.189,1.876],[-3.195,1.796],[-2.589,1.525],[-5.172,1.795],[0,0]],"o":[[0,0],[-8.352,0.836],[-4.437,3.08],[5.116,8.978],[5.19,-1.876],[3.194,-1.795],[9.339,-5.607],[0,0],[0,0]],"v":[[24.733,-24.106],[3.732,-14.844],[-28.971,-5.03],[-35.877,15.128],[-16.755,22.106],[-7.066,18.513],[11.511,3.018],[33.422,-8.217],[40.993,-23.502]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[891.481,760.579]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-4.253,29.44],[0.995,5.309],[10.285,-0.995],[0.411,-5.503],[-0.332,-3.65],[-0.331,-2.986],[0,0],[0,0]],"o":[[0,0],[2.655,-7.963],[-0.996,-5.309],[-10.286,0.996],[-0.411,5.503],[0.332,3.649],[5.569,35.238],[0,0],[0,0]],"v":[[16.969,45.869],[9.486,3.568],[13.8,-31.602],[-0.799,-44.874],[-16.062,-31.602],[-16.062,-20.984],[-10.09,3.568],[-16.969,39.411],[0.196,39.411]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[932.277,697.667]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":38,"st":0},{"ind":38,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.479,1.659],[4.479,-1.659]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1036.159,651.134]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.325,7.335],[2.325,-7.335]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1023.057,637.495]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.038,-4.049],[1.038,4.049]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1032.689,717.29]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.774,-7.576],[0.774,7.576]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.072,725.07]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.645,-5.143],[-4.645,5.143]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[988.879,713.899]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.853,-0.829],[-7.853,0.83]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.474,678.805]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.475,5.812],[-6.475,-5.811]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[991.694,644.438]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.953,1.294],[-7.953,-1.294]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.912,660.899]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.878,7.12],[2.878,-7.12]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1001.042,724.724]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.081,8.57],[-3.081,-8.57]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1006.038,632.61]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.791,3.087],[7.791,-3.087]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.079,694.917]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":7,"st":0},{"ind":39,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.791,3.1]],"o":[[-0.79,-3.1],[0,0]],"v":[[1.186,4.651],[-1.186,-4.65]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1032.154,717.769]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.572,5.215]],"o":[[-0.571,-5.215],[0,0]],"v":[[0.857,7.823],[-0.857,-7.823]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1018.215,725.065]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.042,7.306],[3.041,-7.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1000.26,724.191]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-3.155,3.343]],"o":[[3.156,-3.343],[0,0]],"v":[[-4.733,5.014],[4.734,-5.014]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[988.646,712.59]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.766,3.026],[7.766,-3.026]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.054,693.638]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.08,0.535]],"o":[[5.08,-0.535],[0,0]],"v":[[-7.62,0.803],[7.62,-0.803]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.571,677.81]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[3.219,-1.199]],"o":[[-3.218,1.199],[0,0]],"v":[[4.828,-1.798],[-4.828,1.798]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1037.177,652.047]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[1.7,-4.695]],"o":[[-1.7,4.696],[0,0]],"v":[[2.55,-7.044],[-2.55,7.044]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1024.035,637.84]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-1.697,-5.769]],"o":[[1.697,5.769],[0,0]],"v":[[-2.545,-8.653],[2.545,8.653]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1007.087,632.282]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-4.362,-3.998]],"o":[[4.363,3.998],[0,0]],"v":[[-6.544,-5.996],[6.544,5.997]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[991.919,643.492]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.417,-0.993]],"o":[[5.417,0.993],[0,0]],"v":[[-8.126,-1.489],[8.126,1.489]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.839,659.713]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":7,"op":8,"st":0},{"ind":40,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.215,-4.814],[1.215,4.813]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1031.072,718.713]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.796,-8.146],[0.796,8.146]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1016.246,725.64]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.128,-7.241],[-3.128,7.241]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[999.136,723.526]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.374,-5.319],[-5.374,5.319]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[987.936,711.05]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.636,2.969],[7.636,-2.969]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[982.562,691.948]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.58,-0.387],[-7.58,0.386]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.748,676.188]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8.005,1.923],[-8.006,-1.923]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[984.574,657.948]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.977,1.818],[4.977,-1.819]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1037.666,653.662]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.779,6.854],[2.779,-6.854]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1025.836,639.26]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.989,-8.776],[1.989,8.776]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1008.789,632.405]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.255,6.514],[-6.255,-6.514]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[993.31,641.664]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":8,"op":9,"st":0},{"ind":41,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.353,-2.221],[1.353,2.22]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1037.389,711.679]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.323,-6.161],[1.323,6.161]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1026.705,721.334]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.64,-8.829],[-0.64,8.829]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1010.138,726.323]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.618,7.148],[3.618,-7.148]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[995.312,720.39]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.48,4.253],[6.48,-4.253]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[985.385,704.503]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.673,-2.302],[-7.673,2.302]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[981.206,686.676]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.475,0.488],[-7.475,-0.488]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[981.404,669.44]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.588,3.638],[-7.588,-3.638]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[987.055,651.843]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.403,0.885],[5.403,-0.885]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1038.742,659.097]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.332,4.776],[3.333,-4.776]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1030.535,643.402]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1015.45,641.18],[1015.45,625.096]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.716,7.889],[-4.717,-7.889]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[998.24,636.548]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":9,"op":10,"st":0},{"ind":42,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.952,-4.203],[0.952,4.203]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1034.291,715.881]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.979,-6.984],[0.979,6.984]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1021.475,724.274]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.498,-7.569],[-2.498,7.57]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1003.54,725.759]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.697,5.621],[4.697,-5.62]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[990.615,715.713]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.867,3.537],[7.867,-3.537]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.827,697.397]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.56,-1.222],[-7.56,1.221]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.767,681.101]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.791,1.089],[-7.791,-1.089]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.078,663.283]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.894,5.473],[-6.894,-5.473]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[989.972,646.37]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.726,8.524],[-3.726,-8.525]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1003.926,633.621]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.708,2.368],[4.708,-2.368]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1035.243,648.766]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.992,7.469],[1.992,-7.469]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1021.065,635.629]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":10,"op":11,"st":0},{"ind":43,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[3.216,-1.215]],"o":[[-3.216,1.215],[0,0]],"v":[[4.824,-1.823],[-4.825,1.823]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1036.38,650.589]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[1.476,-5.124]],"o":[[-1.476,5.124],[0,0]],"v":[[2.214,-7.686],[-2.214,7.686]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1022.414,636.844]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-2.129,-5.705]],"o":[[2.128,5.704],[0,0]],"v":[[-3.192,-8.557],[3.193,8.557]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1005.399,632.774]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.634,-5.964],[6.634,5.964]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[990.867,645.17]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.203,-1.328],[8.203,1.328]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.491,661.954]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.609,1.148],[7.608,-1.148]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.719,679.953]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.702,3.25],[7.703,-3.25]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.167,695.88]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.895,5.492],[4.895,-5.492]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[989.59,714.249]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.63,2.816]],"o":[[-0.63,-2.816],[0,0]],"v":[[0.944,4.224],[-0.945,-4.224]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1033.347,717.115]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.83,7.427],[-0.83,-7.427]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.902,724.717]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.812,7.521],[2.812,-7.521]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1002.207,725.125]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":11,"op":14,"st":0},{"ind":44,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.952,-4.203],[0.952,4.203]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1034.291,715.881]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.979,-6.984],[0.979,6.984]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1021.475,724.274]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[2.498,-7.569],[-2.498,7.57]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1003.54,725.759]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.697,5.621],[4.697,-5.62]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[990.615,715.713]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.867,3.537],[7.867,-3.537]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.827,697.397]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.56,-1.222],[-7.56,1.221]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.767,681.101]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.791,1.089],[-7.791,-1.089]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.078,663.283]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.894,5.473],[-6.894,-5.473]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[989.972,646.37]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.726,8.524],[-3.726,-8.525]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1003.926,633.621]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.708,2.368],[4.708,-2.368]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1035.243,648.766]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.992,7.469],[1.992,-7.469]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1021.065,635.629]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":14,"op":15,"st":1},{"ind":45,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.353,-2.221],[1.353,2.22]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1037.389,711.679]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.323,-6.161],[1.323,6.161]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1026.705,721.334]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[0.64,-8.829],[-0.64,8.829]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1010.138,726.323]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.618,7.148],[3.618,-7.148]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[995.312,720.39]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.48,4.253],[6.48,-4.253]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[985.385,704.503]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.673,-2.302],[-7.673,2.302]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[981.206,686.676]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.475,0.488],[-7.475,-0.488]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[981.404,669.44]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.588,3.638],[-7.588,-3.638]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[987.055,651.843]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.403,0.885],[5.403,-0.885]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1038.742,659.097]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.332,4.776],[3.333,-4.776]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1030.535,643.402]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1015.45,641.18],[1015.45,625.096]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.716,7.889],[-4.717,-7.889]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[998.24,636.548]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":15,"op":16,"st":1},{"ind":46,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.215,-4.814],[1.215,4.813]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1031.072,718.713]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.796,-8.146],[0.796,8.146]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1016.246,725.64]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.128,-7.241],[-3.128,7.241]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[999.136,723.526]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[5.374,-5.319],[-5.374,5.319]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[987.936,711.05]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.636,2.969],[7.636,-2.969]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[982.562,691.948]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.58,-0.387],[-7.58,0.386]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.748,676.188]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8.005,1.923],[-8.006,-1.923]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[984.574,657.948]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.977,1.818],[4.977,-1.819]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1037.666,653.662]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.779,6.854],[2.779,-6.854]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1025.836,639.26]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.989,-8.776],[1.989,8.776]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1008.789,632.405]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.255,6.514],[-6.255,-6.514]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[993.31,641.664]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":16,"op":17,"st":1},{"ind":47,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.791,3.1]],"o":[[-0.79,-3.1],[0,0]],"v":[[1.186,4.651],[-1.186,-4.65]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1032.154,717.769]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0.572,5.215]],"o":[[-0.571,-5.215],[0,0]],"v":[[0.857,7.823],[-0.857,-7.823]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1018.215,725.065]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.042,7.306],[3.041,-7.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1000.26,724.191]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-3.155,3.343]],"o":[[3.156,-3.343],[0,0]],"v":[[-4.733,5.014],[4.734,-5.014]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[988.646,712.59]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.766,3.026],[7.766,-3.026]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.054,693.638]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.08,0.535]],"o":[[5.08,-0.535],[0,0]],"v":[[-7.62,0.803],[7.62,-0.803]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.571,677.81]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[3.219,-1.199]],"o":[[-3.218,1.199],[0,0]],"v":[[4.828,-1.798],[-4.828,1.798]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1037.177,652.047]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[1.7,-4.695]],"o":[[-1.7,4.696],[0,0]],"v":[[2.55,-7.044],[-2.55,7.044]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1024.035,637.84]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-1.697,-5.769]],"o":[[1.697,5.769],[0,0]],"v":[[-2.545,-8.653],[2.545,8.653]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1007.087,632.282]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-4.362,-3.998]],"o":[[4.363,3.998],[0,0]],"v":[[-6.544,-5.996],[6.544,5.997]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[991.919,643.492]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.417,-0.993]],"o":[[5.417,0.993],[0,0]],"v":[[-8.126,-1.489],[8.126,1.489]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.839,659.713]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":17,"op":18,"st":1},{"ind":48,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.479,1.659],[4.479,-1.659]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1036.159,651.134]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.325,7.335],[2.325,-7.335]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1023.057,637.495]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-1.038,-4.049],[1.038,4.049]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1032.689,717.29]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-0.774,-7.576],[0.774,7.576]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.072,725.07]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.645,-5.143],[-4.645,5.143]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[988.879,713.899]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.853,-0.829],[-7.853,0.83]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[980.474,678.805]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.475,5.812],[-6.475,-5.811]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[991.694,644.438]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[7.953,1.294],[-7.953,-1.294]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.912,660.899]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-2.878,7.12],[2.878,-7.12]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1001.042,724.724]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[3.081,8.57],[-3.081,-8.57]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1006.038,632.61]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.791,3.087],[7.791,-3.087]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[983.079,694.917]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":18,"op":38,"st":0},{"ind":49,"ty":4,"nm":"d","parent":12,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-14,-92,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.665,0.957],[-6.664,-0.957]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1027.203,706.13]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.665,0.957],[-6.664,-0.957]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1029.857,659.181]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.761],[3.769,0],[0,5.761],[-3.769,0]],"o":[[0,5.761],[-3.769,0],[0,-5.761],[3.769,0]],"v":[[6.825,0],[0,10.431],[-6.824,0],[0,-10.431]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1037.321,683.429]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-13.072],[8.552,0],[0,13.072],[-8.551,0]],"o":[[0,13.072],[-8.551,0],[0,-13.072],[8.552,0]],"v":[[15.484,0],[0,23.668],[-15.484,0],[0,-23.668]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1036.521,683.806]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,13.071],[-8.552,0]],"o":[[-8.552,0],[0,-13.072],[0,0]],"v":[[7.742,23.668],[-7.742,0],[7.742,-23.668]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1015.45,681.892]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.436],[3.543,0],[0,5.436],[-3.543,0]],"o":[[0,5.436],[-3.543,0],[0,-5.436],[3.543,0]],"v":[[6.71,-0.018],[0.295,10.414],[-6.711,0.022],[0.295,-10.414]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1037.246,683.446]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[3.273,-14.001],[-5.747,-3.465],[0,0],[-4.162,21.333]],"o":[[0,0],[0,0],[-3.546,15.293],[0,0],[0,0],[1.355,-12.273]],"v":[[14.16,-22.341],[2.215,-24.111],[-10.614,-8.184],[-0.882,22.341],[11.506,24.111],[2.658,-5.53]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1019.179,682.323]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-12.736],[8.612,0],[0,12.736],[-8.613,0]],"o":[[0,12.736],[-8.613,0],[0,-12.736],[8.612,0]],"v":[[15.969,0.078],[0.355,23.867],[-15.969,0.078],[-0.374,-23.867]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[1,0.878,0.839,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1036.036,683.738]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":38,"st":0},{"ind":50,"ty":4,"nm":"d","parent":13,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[4,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[4.583,-13.275]],"o":[[2.542,13.252],[0,0]],"v":[[0.512,-19.896],[-3.054,19.896]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1046.553,685.835]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,28.82],[-18.576,0]],"o":[[-21.899,0],[0,-27.109],[0,0]],"v":[[18.914,55.778],[-18.914,0.041],[14.936,-55.777]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[991.864,679.407]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[16.43,0],[0,30.982],[-23.579,0],[-4.672,-24.325]],"o":[[-7.138,17.878],[-23.579,0],[0,-30.982],[19.963,0],[0,0]],"v":[[38.479,26.023],[0.648,56.097],[-42.046,0],[0.648,-56.097],[42.046,-13.768]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1005.02,679.708]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-21.291,9.809],[10.312,-35.082],[-34.418,3.115],[2.873,51.821],[0,0]],"o":[[0,0],[-9.475,35.945],[-6.259,-0.27],[0.12,-0.832],[0,0]],"v":[[17.567,-57.392],[-17.659,-20.046],[27.134,54.277],[-10.362,-2.742],[-8.838,-17.97]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[983.312,681.355]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.193,-30.602],[20.464,-2.017],[0,30.602],[-20.89,0]],"o":[[-0.188,29.712],[-20.79,2.049],[0,-30.602],[20.89,0]],"v":[[37.728,-0.737],[-0.096,54.673],[-37.921,-0.737],[-2.691,-56.721]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1010.542,680.406]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":38,"st":0},{"ind":51,"ty":4,"nm":"S","parent":14,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":-1},"p":{"a":0,"k":[123,-275,0],"l":2},"a":{"a":0,"k":[0,0,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[84.5,50],[154.5,12],[215.5,368],[-60,378.5],[-57,107]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":0},"lc":1,"lj":1,"ml":4,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[1,0,0,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"S"}],"ip":0,"op":64,"st":0},{"ind":52,"ty":4,"nm":"b","parent":14,"tt":2,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[123,-278,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.14,2.542],[0,0]],"o":[[0,0],[0,7.579],[0,0],[0,0]],"v":[[-37.335,-28.415],[-37.335,15.542],[-22.69,25.873],[37.336,4.502]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[936.187,795.678]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.291,2.367],[0,0],[0,1.835],[0,0],[7.173,-2.712],[0,0],[0,-4.56],[0,0]],"o":[[0,0],[2.54,-0.905],[0,0],[0.879,-1.611],[0,0],[0,-7.67],[0,0],[-4.266,1.613],[0,0],[0,0]],"v":[[-6.066,107.801],[58.212,84.916],[64.161,79.836],[79.398,51.901],[80.737,46.65],[80.737,-94.83],[65.893,-105.089],[-73.649,-52.33],[-80.737,-42.073],[-80.737,74.884]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[979.588,692.379]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.948,0],[0,5.222],[4.947,0]],"o":[[0,5.222],[4.947,0],[0,-5.223],[-4.948,0]],"v":[[-8.958,0],[0,9.456],[8.958,0],[0,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1024.823,530.913]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.947,0],[0,5.222],[4.948,0]],"o":[[0,5.222],[4.948,0],[0,-5.223],[-4.947,0]],"v":[[-8.958,0],[-0.001,9.456],[8.958,0],[-0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[994.409,543.632]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.947,0],[0,5.223],[4.948,0]],"o":[[0,5.223],[4.948,0],[0,-5.223],[-4.947,0]],"v":[[-8.958,0],[-0.001,9.456],[8.958,0],[-0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[959.459,556.904]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.947,0],[0,5.223],[4.948,0]],"o":[[0,5.223],[4.948,0],[0,-5.223],[-4.947,0]],"v":[[-8.958,0],[-0.001,9.456],[8.958,0],[-0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[922.63,571.061]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[4.947,0],[0,5.223],[-4.948,0]],"o":[[0,5.223],[-4.948,0],[0,-5.223],[4.947,0]],"v":[[8.958,0],[0,9.456],[-8.959,0],[0,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[883.81,581.236]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[4.947,0],[0,5.223],[-4.948,0]],"o":[[0,5.223],[-4.948,0],[0,-5.223],[4.947,0]],"v":[[8.959,0],[0.001,9.456],[-8.958,0],[0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[847.091,567.964]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[4.947,0],[0,5.222],[-4.948,0]],"o":[[0,5.222],[-4.948,0],[0,-5.223],[4.947,0]],"v":[[8.959,0],[0.001,9.456],[-8.958,0],[0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[817.008,549.826]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[24.097,8.032],[-24.098,-8.032]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[874.007,510.924]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[6.025,-30.925],[-6.024,-0.402],[-2.812,30.925]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[872.802,510.522]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.82,-30.925],[24.098,8.434],[-4.016,30.925],[-24.097,-7.631]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[874.007,510.522]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-24.097,8.032],[24.097,-8.032]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[949.936,491.557]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-6.024,-30.925],[6.024,-0.402],[2.812,30.925]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[951.141,491.155]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.819,-30.925],[-24.097,8.434],[4.017,30.925],[24.098,-7.631]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[949.936,491.155]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.14,2.542],[0,0]],"o":[[0,0],[0,7.579],[0,0],[0,0]],"v":[[-37.335,-28.415],[-37.335,15.542],[-22.69,25.873],[37.336,4.502]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[936.187,795.678]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.291,2.367],[0,0],[0,1.835],[0,0],[7.173,-2.712],[0,0],[0,-4.56],[0,0]],"o":[[0,0],[2.54,-0.905],[0,0],[0.879,-1.611],[0,0],[0,-7.67],[0,0],[-4.266,1.613],[0,0],[0,0]],"v":[[-6.066,107.801],[58.212,84.916],[64.161,79.836],[79.398,51.901],[80.737,46.65],[80.737,-94.83],[65.893,-105.089],[-73.649,-52.33],[-80.737,-42.073],[-80.737,74.884]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[979.588,692.379]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.511,1.186],[0,0],[0.014,-5.253],[0,0],[-0.697,-1.119],[0,0],[-1.35,-0.593],[0,0],[0.024,5.187],[0,0]],"o":[[0,0],[-0.013,-2.719],[0,0],[-4.851,-2.292],[0,0],[-0.004,1.31],[0,0],[0.768,1.233],[0,0],[4.855,2.13],[0,0],[0,0]],"v":[[36.582,69.522],[36.067,-71.032],[31.943,-77.414],[-25.981,-104.779],[-36.488,-98.383],[-36.892,56.11],[-35.832,59.825],[-21.818,82.338],[-18.567,85.141],[26.552,104.94],[36.872,98.409],[36.734,69.522]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[831.343,714.552]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[6.464,0],[0,8.344],[-4.924,2.734]],"o":[[-4.668,2.091],[-15.026,0],[0,-4.172],[0,0]],"v":[[22.139,9.552],[5.069,12.895],[-22.138,-2.213],[-14.169,-12.895]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[808.179,817.41]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-1.373],[10.261,0],[0,7.513],[-0.705,1.437]],"o":[[0.516,1.249],[0,7.513],[-10.262,0],[0,-1.614],[0,0]],"v":[[17.786,-8.448],[18.58,-4.501],[0,9.102],[-18.581,-4.501],[-17.492,-9.102]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[812.805,836.023]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-3.305],[15.026,0],[4.978,3.561]],"o":[[3.243,2.487],[0,8.344],[-8.748,0],[0,0]],"v":[[19.204,-11.979],[24.358,-3.129],[-2.849,11.979],[-24.358,6.125]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1032.871,798.861]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-1.373],[10.261,0],[0,7.513],[-0.705,1.437]],"o":[[0.516,1.249],[0,7.513],[-10.262,0],[0,-1.614],[0,0]],"v":[[17.786,-8.448],[18.58,-4.501],[0,9.102],[-18.581,-4.501],[-17.492,-9.102]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1029.579,816.557]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-1.373],[10.262,0],[0,7.513],[-0.704,1.437]],"o":[[1.025,0.937],[0,7.513],[-10.262,0],[0,-1.615],[0,0]],"v":[[17.133,-9.102],[18.581,-4.501],[-0.001,9.102],[-18.581,-4.501],[-17.492,-9.101]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[886.686,868.317]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-2.311],[14.843,0],[0,8.613],[-1.156,1.076]],"o":[[1.554,1.973],[0,8.613],[-14.843,0],[0,-1.077],[0,0]],"v":[[24.455,-11.036],[26.875,-4.558],[0,11.036],[-26.875,-4.558],[-25.166,-9.239]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[886.64,851.548]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[883.81,845.788],[883.81,778.765]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[883.81,778.765],[883.81,630.937]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-41.838,-20.679],[0,0],[-13.667,5.067],[0,0],[45.715,17.404],[6.243,0.052]],"o":[[0,0],[-43.889,15.871],[0,0],[13.068,6.458],[0,0],[45.865,-17.004],[-5.927,-2.256],[0,0]],"v":[[-48.32,-39.792],[-53.245,-38.011],[-58.703,59.297],[-57.951,59.669],[-16.064,61.849],[54.392,35.727],[54.825,-63.452],[36.421,-66.916]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.482,494.565]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[5.964,-2.156],[0,0]],"o":[[-6.243,-0.052],[0,0],[0,0]],"v":[[42.371,-13.536],[23.911,-10.381],[-42.37,13.588]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[913.533,441.185]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-22.66,-11.2],[0,0],[-7.403,2.745],[0,0],[24.759,9.426],[0,0]],"o":[[0,0],[-23.77,8.596],[0,0],[7.078,3.498],[0,0],[24.84,-9.21],[0,0],[0,0]],"v":[[-92.612,-34.094],[-110.589,-27.593],[-113.545,25.109],[-52.348,55.356],[-29.661,56.536],[111.212,4.308],[111.446,-49.407],[85.514,-59.28]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[923.265,544.66]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-10.475,-5.177],[0,0],[-3.422,1.268],[0,0],[11.446,4.357],[0,0]],"o":[[0,0],[-10.989,3.973],[0,0],[3.272,1.617],[0,0],[11.483,-4.258],[0,0],[0,0]],"v":[[-130.762,-30.138],[-147.021,-24.258],[-148.388,0.104],[-48.788,49.332],[-38.301,49.878],[147.31,-18.937],[147.418,-43.768],[128.039,-51.146]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[925.005,580.174]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-17.728,-9.042],[0,0],[-13.831,5.068],[0,0],[0,22.215],[0,0]],"o":[[0,0],[0,19.9],[0,0],[13.122,6.693],[0,0],[20.858,-7.643],[0,0],[0,0]],"v":[[-146.322,-121.324],[-146.322,63.906],[-117.435,111.068],[-68.026,136.271],[-25.755,138.818],[111.596,88.488],[146.322,38.778],[146.322,-143.886]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[926.833,704.772]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[4.866,2.654],[0,0],[0.884,-7.078],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-4.866,-2.655],[0,0],[-0.885,7.078],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[36.055,-65.032],[31.631,-76.534],[-27.65,-104.849],[-36.055,-98.654],[-36.498,57.511],[-21.456,84.497],[-11.281,89.806],[25.88,105.29],[33.843,105.733],[36.94,100.423]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.02,0.482,0.843,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[831.386,713.955]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.088,-31.084],[-23.226,8.079],[4.645,31.084],[23.225,-8.29]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[949.948,491.314]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-23.668,-6.232],[-3.135,30.669],[23.668,8.368],[5.637,-30.669]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[873.413,510.49]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-23.889],[0,0],[0,-6.194],[-9.069,-6.415],[0,0],[-9.291,3.539],[0,0],[0.442,4.424],[1.327,0.885],[0,0],[26.544,10.175],[0,0],[17.696,17.696],[18.58,-4.866],[0,0],[4.494,-21.791],[0,0],[0,0]],"o":[[0,0],[0,0],[0,6.194],[0,0],[0,0],[9.29,-3.539],[0,0],[-0.442,-4.424],[-1.327,-0.884],[0,0],[-16.147,-7.121],[0,0],[-17.696,-17.696],[-18.581,4.867],[0,0],[-4.494,21.791],[0,0],[0,0]],"v":[[-132.055,21.235],[-149.308,27.429],[-155.944,38.046],[-145.106,53.751],[-50.212,100.866],[-32.958,99.539],[151.52,30.083],[155.502,19.908],[150.193,9.29],[127.189,-0.442],[106.396,-34.507],[83.163,-43.653],[69.235,-83.613],[13.051,-98.212],[-63.484,-70.783],[-92.064,-38.664],[-94.963,-18.467],[-118.341,-10.175]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[925.616,529.033]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.205,-0.719],[6.972,-12.532],[1.409,-0.652],[12.518,-4.674],[14.678,-4.721],[7.937,-3.109],[6.008,-3.367],[-1.058,10.694],[0,1.086],[0,0],[-1.071,2.068],[-4.972,1.578],[-5.873,2.236],[-17.537,6.674],[-10.891,4.659],[-9.839,1.97],[-2.72,-0.142],[-0.908,-1.043],[-0.64,-3.923],[0,-1.229],[0,0]],"o":[[-5.824,11.718],[-0.281,1.1],[-12.146,5.623],[-14.442,5.394],[-7.146,2.298],[-6.327,2.694],[-8.814,4.938],[-0.473,-0.72],[0,0],[0,-2.878],[3.522,-6.806],[5.996,-1.902],[17.53,-6.674],[11.637,-4.427],[4.004,-1.713],[2.397,-1.257],[1.509,0.079],[3.536,0.795],[0.59,0.76],[0,0],[0.072,0.615]],"v":[[133.166,36.389],[116.586,67.576],[113.183,71.41],[75.613,85.335],[31.962,100.904],[10.648,108.511],[-8.37,114.909],[-28.313,105.78],[-28.313,100.624],[-28.313,-48.77],[-26.956,-58.636],[-13.865,-66.824],[5.085,-73.772],[56.379,-93.436],[89.317,-106.317],[114.032,-114.819],[122.735,-117.831],[127.066,-116.643],[132.388,-108.518],[133.345,-105.537],[133.345,34.385]],"c":true}},"nm":"P"},{"ind":1,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-11.281,-8.627],[0,0],[0,0],[-25.87,11.612],[0,0],[0,38.709],[0,0]],"o":[[0,0],[0,0],[0,0],[4.7,7.852],[0,0],[0,0],[68.939,-24.365],[0,0],[0,-34.507],[0,0]],"v":[[-14.599,-148.147],[-146.654,-121.603],[-146.654,68.184],[-132.055,100.037],[-117.01,111.318],[-66.449,138.087],[-18.58,136.535],[116.48,86.635],[145.991,37.001],[146.654,-143.502]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.004,0.502,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[927.164,704.387]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-7.806],[10.079,0],[0,6.506],[-10.078,0]],"o":[[0,6.505],[-10.078,0],[0,-6.505],[10.079,0]],"v":[[18.816,1.184],[0.567,12.964],[-18.815,0.051],[0.567,-12.964]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1029.455,812.364]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[7.9,2.803],[13.437,-4.051],[0,-0.124],[-14.455,0],[0,8.85]],"o":[[-13.097,5.033],[-0.004,0.124],[0,8.85],[14.455,0],[0,-5.83]],"v":[[13.25,-14.174],[-26.656,-0.81],[-26.671,-0.438],[-0.498,14.174],[26.67,-0.438]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1030.559,796.665]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-7.327],[10.262,0],[0,7.327],[-10.261,0]],"o":[[0,7.327],[-10.261,0],[0,-7.327],[10.262,0]],"v":[[18.581,0],[-0.001,13.266],[-18.581,0],[-0.001,-13.266]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[886.685,864.153]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-8.85],[14.763,0],[0,8.85],[-14.764,0]],"o":[[0,8.85],[-14.764,0],[0,-8.85],[14.763,0]],"v":[[26.733,0],[0,16.023],[-26.732,0],[0,-16.023]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[886.496,846.991]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[29.862,0.995],[0.664,-17.585],[0,0],[0,0],[-16.59,0.664],[1.991,5.309]],"o":[[0,0],[1.041,5.758],[0,0],[0,0],[16.59,-0.663],[0,0]],"v":[[-1.659,-17.997],[-28.203,-5.64],[-18.912,4.977],[-20.24,11.281],[-0.332,22.562],[15.788,5.115]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[814.354,822.01]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":53,"ty":4,"nm":"d","parent":15,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-51,-81,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.14,2.542],[0,0]],"o":[[0,0],[0,7.579],[0,0],[0,0]],"v":[[-37.335,-28.415],[-37.335,15.542],[-22.69,25.873],[37.336,4.502]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[936.187,795.678]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.291,2.367],[0,0],[0,1.835],[0,0],[7.173,-2.712],[0,0],[0,-4.56],[0,0]],"o":[[0,0],[2.54,-0.905],[0,0],[0.879,-1.611],[0,0],[0,-7.67],[0,0],[-4.266,1.613],[0,0],[0,0]],"v":[[-6.066,107.801],[58.212,84.916],[64.161,79.836],[79.398,51.901],[80.737,46.65],[80.737,-94.83],[65.893,-105.089],[-73.649,-52.33],[-80.737,-42.073],[-80.737,74.884]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[979.588,692.379]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-0.019,0.073],[-0.132,0.464],[-0.341,0.659],[0,0],[-0.001,0.051],[0,0],[0,0],[4.031,1.872],[2.844,-1.312],[0,0],[0,-9.732],[0,0],[-15.484,3.982],[0,0],[0,0],[0,0]],"o":[[0.125,-0.469],[-0.004,-0.763],[0,0],[0,-0.051],[0,0],[0,0],[-0.583,-4.194],[-2.256,-0.975],[0,0],[0,0],[0,0],[0,0],[15.484,-3.982],[0,0],[0,0],[0.016,-0.073]],"v":[[79.701,38.074],[80.127,36.688],[80.672,34.544],[80.672,31.077],[80.679,30.927],[80.353,28.306],[80.353,-108.836],[73.717,-118.128],[66.196,-118.128],[-74.043,-65.482],[-80.679,-53.095],[-80.679,105.724],[-64.311,115.458],[61.329,69.891],[66.637,62.37],[79.663,38.292]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.02,0.482,0.843,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[979.973,705.556]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":38,"st":0},{"ind":54,"ty":1,"nm":"R","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.882},"o":{"x":0.167,"y":0.118},"t":34,"s":[1007,599,0],"to":[2.833,-2.833,0],"ti":[-2.833,2.833,0]},{"t":36,"s":[1024,582,0]}],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0,0]},"t":34,"s":[4,4,100]},{"t":36,"s":[3,4,100]}],"l":2}},"ao":0,"sw":1920,"sh":1080,"sc":"#057bd7","ip":34,"op":37,"st":0},{"ind":55,"ty":4,"nm":"d","parent":16,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[93,-122,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-4.938,-2.968]],"o":[[4.937,1.179],[0,0]],"v":[[-7.406,-3.111],[7.406,3.11]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[954.811,579.157]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-0.306,-4.202]],"o":[[3.191,1.669],[0,0]],"v":[[-2.577,-4.444],[2.578,4.444]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[964.794,586.712]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.419,-0.571]],"o":[[4.978,-4.775],[0,0]],"v":[[-7.851,2.803],[7.85,-2.233]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[939.553,578.28]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[22.219,-17.923],[-22.219,17.923]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[909.484,599.006]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-8.344,6.795]],"o":[[-0.247,-8.617],[0,0]],"v":[[-5.95,11.56],[6.196,-11.56]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[881.068,628.489]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[3.354,-48.906]],"o":[[5.48,44.39],[0,0]],"v":[[-2.802,-70.211],[-0.552,70.211]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[970.174,661.367]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[6.791,-8.893]],"o":[[-1.327,20.088],[0,0]],"v":[[5.925,-22.07],[-5.925,22.07]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[963.698,753.649]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-20.127,19.405],[20.126,-19.404]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[937.646,795.124]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-1.69,-1.495]],"o":[[-0.018,7.359],[0,0]],"v":[[-1.324,-6.37],[1.342,6.37]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[876.443,803.123]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[6.256,2.79]],"o":[[-6.586,9.505],[0,0]],"v":[[10.387,-4.753],[-10.387,0.284]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[907.133,819.281]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-7.604,-2.352]],"o":[[4.46,4.816],[0,0]],"v":[[-9.48,-5.036],[9.48,5.037]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[887.265,814.529]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[875.119,796.754],[875.119,640.049]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.008,0.936],[0.082,1.93],[0.147,5.634],[0.279,7.708],[0.103,3.719],[0.874,2.442],[0.01,0.51],[0.01,0.2],[2.212,8.594],[3.946,1.823],[5.648,-0.728],[4.04,-3.064],[2.682,-1.719],[0.081,-0.07],[9.164,-7.212],[3.172,-3.404],[1.409,-2.826],[0.657,-3.44],[0,-0.183],[0,0],[0,-0.368],[0,0],[0.01,-0.14],[0.028,-0.407],[-3.108,-3.699],[-4.435,-1.61],[-6.78,9.474],[-0.208,0.21],[-0.27,0.261],[-13.73,13.033],[-0.065,0.12],[-1.664,3.82],[-0.156,0.359],[-0.835,4.822],[-0.428,6.69],[-0.411,13.032],[-0.499,1.172],[-0.141,0.238],[0.03,0.173]],"o":[[-0.017,-1.932],[-0.238,-5.63],[-0.201,-7.71],[-0.135,-3.72],[-0.072,-2.556],[-0.207,-0.577],[-0.029,-0.187],[-0.48,-9.058],[-2.056,-3.194],[-5.079,-2.347],[-5.184,0.667],[-2.538,1.924],[-0.074,0.07],[-8.83,7.624],[-3.276,2.579],[-1.824,2.504],[-1.624,3.257],[0.016,0.172],[0,0],[0.061,0.326],[0,0],[0,0.147],[0.055,0.355],[-0.316,4.646],[3.29,3.916],[8.754,3.177],[0.185,-0.258],[0.193,-0.275],[13.595,-13.147],[0.055,-0.119],[2.115,-3.607],[0.076,-0.351],[1.965,-4.518],[1.143,-6.61],[0.832,-13.013],[-0.421,-1.088],[0.015,-0.109],[-0.002,-0.132],[-0.158,-0.914]],"v":[[48.806,-20.064],[48.625,-25.856],[48.294,-42.76],[47.604,-65.892],[47.025,-77.048],[46.615,-84.741],[46.299,-86.373],[46.24,-86.953],[43.305,-113.537],[34.721,-120.809],[18.245,-124.325],[4.802,-116.932],[-2.573,-110.676],[-2.795,-110.465],[-30.872,-88.243],[-41.328,-78.828],[-45.881,-71.937],[-48.539,-61.287],[-48.495,-60.769],[-48.495,18.9],[-48.396,19.939],[-48.396,94.665],[-48.417,95.091],[-48.373,96.234],[-45.707,109.066],[-32.979,116.835],[-6.425,115.579],[-5.832,114.884],[-5.154,114.077],[35.487,74.453],[35.645,74.097],[40.987,62.807],[41.333,61.741],[44.788,46.429],[46.927,26.436],[48.581,-12.657],[48.596,-16.135],[48.815,-16.656],[48.773,-17.108]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.02,0.482,0.843,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[923.492,700.426]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":38,"st":0},{"ind":56,"ty":3,"nm":"a","sr":1,"ks":{"o":{"a":0,"k":0},"r":{"a":0,"k":0},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":42,"s":[600,540,0],"to":[60,0,0],"ti":[-60,0,0]},{"i":{"x":0.667,"y":0.887},"o":{"x":0.333,"y":0},"t":51,"s":[960,540,0],"to":[0,0,0],"ti":[-0.284,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.313},"t":52,"s":[962.455,540,0],"to":[1.399,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":56,"s":[966,540,0],"to":[-3.6,0,0],"ti":[11.213,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":60,"s":[950.215,540,0],"to":[-3.129,0,0],"ti":[3.41,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":61,"s":[932.371,540,0],"to":[-1.308,0,0],"ti":[9.989,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":62,"s":[915.207,540,0],"to":[-8.694,0,0],"ti":[0.483,0,0]},{"t":63,"s":[893,540,0]}],"l":2},"a":{"a":0,"k":[0,0,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"ip":0,"op":64,"st":0},{"ind":57,"ty":4,"nm":"S","td":1,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[960,540,0],"l":2},"a":{"a":0,"k":[0,0,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[432,384]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"nm":"R"},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[1,0,0,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[146,137]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"R"}],"ip":0,"op":64,"st":0},{"ind":58,"ty":4,"nm":"B","parent":56,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[43.53,573.11,0],"l":2},"a":{"a":0,"k":[965.53,543.11,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-11.035,-0.167],[-3.344,-4.013],[12.205,-0.335],[0,0]],"o":[[0,0],[11.546,0.175],[4.774,5.728],[-12.205,0.334],[0,0]],"v":[[-22.922,-8.611],[-2.585,-2.424],[18.147,-4.43],[1.762,8.277],[-18.301,5.602]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":1,"ml":10,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.322,0.812,0.518,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1186.095,134.345]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-11.035,-0.167],[-3.344,-4.013],[12.206,-0.335],[0,0]],"o":[[0,0],[11.546,0.175],[4.774,5.728],[-12.205,0.334],[0,0]],"v":[[-20.216,-6.99],[-4.895,-2.508],[15.837,-4.514],[-0.548,8.193],[-20.611,5.517]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":1,"ml":10,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.322,0.812,0.518,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1188.405,143.091]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.121,-0.078],[-3.344,-4.013],[12.205,-0.334],[0,0]],"o":[[3.555,1.527],[11.546,0.175],[4.773,5.728],[-12.206,0.335],[0,0]],"v":[[-19.547,-6.122],[-4.895,-2.508],[15.838,-4.514],[-0.547,8.192],[-20.611,5.517]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":1,"ml":10,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.322,0.812,0.518,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1188.405,151.753]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-5.828,-0.088],[-3.344,-4.013],[12.205,-0.335],[0,0]],"o":[[3.674,1.736],[11.546,0.175],[4.773,5.728],[-12.205,0.334],[0,0]],"v":[[-18.713,-6.201],[-5.342,-2.508],[15.39,-4.514],[-0.995,8.193],[-20.162,5.949]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":1,"ml":10,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.322,0.812,0.518,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1188.853,160.415]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":1228,"st":0},{"ind":59,"ty":4,"nm":"S","td":1,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[960,540,0],"l":2},"a":{"a":0,"k":[0,0,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[432,384]},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"nm":"R"},{"ty":"st","c":{"a":0,"k":[1,1,1,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":1,"lj":1,"ml":4,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[1,0,0,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[146,137]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"R"}],"ip":0,"op":64,"st":0},{"ind":60,"ty":4,"nm":"B","parent":56,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[43.53,573.11,0],"l":2},"a":{"a":0,"k":[965.53,543.11,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-4.179,3.345],[-0.668,2.677],[4.178,4.68],[-1.146,1.478],[-5.684,-5.353],[-0.165,-3.174],[0.336,-1.672],[0,0],[-4.415,-2.212],[-1.507,-2.671],[0,0],[15.415,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[5.452,-4.363],[0.346,-1.388],[-3.245,-3.638],[1.17,-1.506],[3.729,3.506],[0.166,3.179],[-0.332,1.673],[0,0],[4.686,2.34],[1.771,3.146],[0,0],[-20.509,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[130.488,25.468],[-230.581,25.468],[-230.581,1.559],[129.819,1.559],[143.026,1.559],[147.375,1.559],[163.089,1.559],[167.939,1.559],[176.13,1.559],[180.811,1.559],[185.828,1.559],[191.346,-6.968],[203.384,-13.486],[200.375,-23.851],[199.37,-31.042],[210.906,-29.536],[215.756,-19.005],[214.918,-12.482],[213.417,-10.141],[220.603,-7.967],[228.297,0.891],[230.582,32.437],[212.302,34.889],[186.442,25.468],[180.811,25.468],[172.117,25.468],[163.089,25.468],[147.375,25.468],[143.026,25.468]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0,0.129,0.251,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":1,"ml":10,"nm":"S"},{"ty":"fl","c":{"a":0,"k":[0.322,0.812,0.518,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[940.896,132.7]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-15.848,-0.223],[0,0],[1.772,3.145],[4.685,2.341],[0,0],[-0.331,1.672],[0.166,3.178],[3.728,3.505],[1.17,-1.507],[-3.245,-3.639],[0.346,-1.388],[5.453,-4.363],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[2.612,4.399],[13.259,-1.376],[0,0],[-1.506,-2.672],[-4.415,-2.212],[0,0],[0.337,-1.672],[-0.166,-3.174],[-5.685,-5.353],[-1.146,1.477],[4.178,4.68],[-0.668,2.676],[-4.178,3.344],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-105.281,25.025],[-105.281,25.357],[61.655,25.357],[88.852,35],[105.19,33.233],[103.509,0.78],[95.816,-8.079],[88.63,-10.253],[90.131,-12.593],[90.97,-19.116],[86.119,-29.647],[74.584,-31.153],[75.588,-23.962],[78.596,-13.597],[66.559,-7.079],[61.04,1.448],[56.024,1.448],[-105.281,1.95],[-105.281,6.801],[-105.281,16.83]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.322,0.812,0.518,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1065.683,132.812]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":1228,"st":0},{"ind":61,"ty":4,"nm":"d","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-50,-79,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[6.975,2.542],[0,0]],"o":[[0,0],[0,7.579],[0,0],[0,0]],"v":[[36.476,-28.415],[36.476,15.542],[22.169,25.873],[-36.477,4.502]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1181.357,795.678]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[1.261,2.367],[0,0],[0,1.835],[0,0],[-7.008,-2.712],[0,0],[0,-4.56],[0,0]],"o":[[0,0],[-2.482,-0.905],[0,0],[-0.859,-1.611],[0,0],[0,-7.67],[0,0],[4.167,1.613],[0,0],[0,0]],"v":[[5.927,107.801],[-56.873,84.916],[-62.685,79.836],[-77.571,51.901],[-78.88,46.65],[-78.88,-94.83],[-64.377,-105.089],[71.954,-52.33],[78.88,-42.073],[78.88,74.884]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1138.954,692.379]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-9.733],[0,0],[15.128,3.981],[0,0],[0,0],[0,0],[0,0],[0,0],[-3.939,1.871],[-2.779,-1.312]],"o":[[0,0],[0,0],[0,0],[-15.127,-3.982],[0,0],[0,0],[0,0],[0,0],[0.569,-4.194],[2.204,-0.976],[0,0]],"v":[[72.613,-65.482],[79.095,-53.095],[79.095,105.725],[63.104,115.458],[-59.646,69.891],[-64.832,62.37],[-79.095,35.384],[-78.23,28.306],[-78.23,-108.837],[-71.748,-118.127],[-64.4,-118.127]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.02,0.482,0.843,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1138.305,705.556]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":38,"op":64,"st":0},{"ind":62,"ty":4,"nm":"d","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-126,-119,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-6.669,4.373]],"o":[[-6.669,4.372],[0,0]],"v":[[-72.026,-117.132],[78.696,112.758]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1135.266,706.895]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[4.327,-4.699],[0,0]],"o":[[0,0],[0,7.579],[0,0],[0,0]],"v":[[10.983,-32.695],[10.983,-1.622],[7.562,15.365],[-11.889,32.695]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1225.851,786.958]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-12.298,-4.493],[-23.143,-9.041],[-22.805,-9.215],[0,-5],[0.172,-39.102]],"o":[[27.744,-16.857],[6.487,2.481],[21.744,8.04],[4,2],[0,39],[0,0]],"v":[[-86.882,-73.822],[-48.024,-85.594],[13.882,-61.423],[78.882,-37.423],[86.882,-26.423],[86.71,90.678]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1150.122,663.585]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-9.733],[0,0],[11.475,-10.224],[0,0],[0,0],[0,0],[0,0],[0,0],[-3.939,1.872],[-2.778,-1.312]],"o":[[0,0],[0,9.733],[-1.866,2.288],[-1.674,0.062],[0,0],[0,0],[0,0],[0,0],[9.127,-5.528],[2.204,-0.975],[0,0]],"v":[[80.353,-70.308],[86.836,-57.921],[86.836,100.899],[63.886,122.505],[57.327,116.613],[33.941,85.318],[-37.671,-21.888],[-85.506,-101.703],[-86.836,-107.385],[-65.404,-119.789],[-54.012,-121.255]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.02,0.482,0.843,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1150.076,697.148]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":38,"op":64,"st":0},{"ind":63,"ty":4,"nm":"b","parent":19,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[123,-278,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-19.518,6.981]],"o":[[19.975,-7.545],[0,0]],"v":[[-30.247,10.763],[30.246,-10.763]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[930.276,796.943]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-22,8],[-7,12],[-0.32,47.452]],"o":[[21.483,-8.019],[9,-10],[0,-47],[0,0]],"v":[[-43.401,99.735],[22.082,76.716],[43.082,41.716],[43.401,-99.736]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1003.924,686.444]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.14,2.542],[0,0]],"o":[[0,0],[0,7.579],[0,0],[0,0]],"v":[[-37.335,-28.415],[-37.335,15.542],[-22.69,25.873],[37.336,4.502]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[936.187,795.678]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.291,2.367],[0,0],[0,1.835],[0,0],[7.173,-2.712],[0,0],[0,-4.56],[0,0]],"o":[[0,0],[2.54,-0.905],[0,0],[0.879,-1.611],[0,0],[0,-7.67],[0,0],[-4.266,1.613],[0,0],[0,0]],"v":[[-6.066,107.801],[58.212,84.916],[64.161,79.836],[79.398,51.901],[80.737,46.65],[80.737,-94.83],[65.893,-105.089],[-73.649,-52.33],[-80.737,-42.073],[-80.737,74.884]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[979.588,692.379]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-0.591,1.697],[-0.105,1.416],[-0.23,0.568],[0,0],[5.556,-0.154],[0,0],[0.645,-1.456],[7.506,-10.569],[0.734,-0.251],[0.643,-0.138],[4.886,-1.77],[7.05,-2.138],[14.569,-5.251],[0,0],[-0.059,-0.154],[-1.434,-3.399],[-0.458,-0.463],[-3.041,0.294],[-0.982,0.273],[-9.367,2.812],[-11.546,4.084],[-11.368,4.678],[-4.957,1.419],[-3.277,2.289],[-3.358,6.006],[-1.936,3.082]],"o":[[0.459,-1.318],[0.047,-0.639],[0,0],[-2.987,-4.684],[0,0],[0.588,0.987],[-5.307,11.976],[-0.606,0.853],[-0.462,0.291],[-5.093,1.096],[-6.928,2.511],[-14.824,4.497],[-10.106,3.643],[0,0],[0.151,2.829],[0.4,0.467],[2.125,1.496],[0.69,-0.519],[16.286,-4.514],[11.729,-3.52],[11.582,-4.096],[4.765,-1.961],[3.784,-1.082],[3.031,-4.704],[2.017,-3.608],[0.531,-1.722]],"v":[[80.298,37.236],[80.711,33.24],[81.139,31.421],[81.139,-110.782],[67.098,-118.313],[67.098,19.669],[67.167,23.374],[47.788,57.057],[45.745,58.676],[44.095,59.334],[29.153,64.741],[9.339,71.601],[-32.732,86.728],[-65.979,97.923],[-81.08,103.647],[-78.852,114.573],[-74.963,116.971],[-69.581,117.693],[-67.032,116.68],[-32.36,105.561],[2.167,93.004],[36.746,80.469],[51.195,75.15],[61.998,70.444],[72.826,51.662],[78.608,41.529]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.02,0.482,0.843,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[979.716,704.434]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[-22,8],[-7,12],[-0.32,47.452]],"o":[[21.483,-8.019],[9,-10],[0,-47],[0,0]],"v":[[-43.401,99.735],[22.082,76.716],[43.082,41.716],[43.401,-99.736]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1003.924,686.444]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.948,0],[0,5.222],[4.947,0]],"o":[[0,5.222],[4.947,0],[0,-5.223],[-4.948,0]],"v":[[-8.958,0],[0,9.456],[8.958,0],[0,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1024.823,530.913]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.947,0],[0,5.222],[4.948,0]],"o":[[0,5.222],[4.948,0],[0,-5.223],[-4.947,0]],"v":[[-8.958,0],[-0.001,9.456],[8.958,0],[-0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[994.409,543.632]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.947,0],[0,5.223],[4.948,0]],"o":[[0,5.223],[4.948,0],[0,-5.223],[-4.947,0]],"v":[[-8.958,0],[-0.001,9.456],[8.958,0],[-0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[959.459,556.904]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[-4.947,0],[0,5.223],[4.948,0]],"o":[[0,5.223],[4.948,0],[0,-5.223],[-4.947,0]],"v":[[-8.958,0],[-0.001,9.456],[8.958,0],[-0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[922.63,571.061]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[4.947,0],[0,5.223],[-4.948,0]],"o":[[0,5.223],[-4.948,0],[0,-5.223],[4.947,0]],"v":[[8.958,0],[0,9.456],[-8.959,0],[0,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[883.81,581.236]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[4.947,0],[0,5.223],[-4.948,0]],"o":[[0,5.223],[-4.948,0],[0,-5.223],[4.947,0]],"v":[[8.959,0],[0.001,9.456],[-8.958,0],[0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[847.091,567.964]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-5.223],[4.947,0],[0,5.222],[-4.948,0]],"o":[[0,5.222],[-4.948,0],[0,-5.223],[4.947,0]],"v":[[8.959,0],[0.001,9.456],[-8.958,0],[0.001,-9.456]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[817.008,549.826]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[24.097,8.032],[-24.098,-8.032]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[874.007,510.924]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[6.025,-30.925],[-6.024,-0.402],[-2.812,30.925]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[872.802,510.522]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[4.82,-30.925],[24.098,8.434],[-4.016,30.925],[-24.097,-7.631]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[874.007,510.522]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-24.097,8.032],[24.097,-8.032]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[949.936,491.557]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-6.024,-30.925],[6.024,-0.402],[2.812,30.925]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[951.141,491.155]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.819,-30.925],[-24.097,8.434],[4.017,30.925],[24.098,-7.631]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[949.936,491.155]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-7.14,2.542],[0,0]],"o":[[0,0],[0,7.579],[0,0],[0,0]],"v":[[-37.335,-28.415],[-37.335,15.542],[-22.69,25.873],[37.336,4.502]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[936.187,795.678]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.291,2.367],[0,0],[0,1.835],[0,0],[7.173,-2.712],[0,0],[0,-4.56],[0,0]],"o":[[0,0],[2.54,-0.905],[0,0],[0.879,-1.611],[0,0],[0,-7.67],[0,0],[-4.266,1.613],[0,0],[0,0]],"v":[[-6.066,107.801],[58.212,84.916],[64.161,79.836],[79.398,51.901],[80.737,46.65],[80.737,-94.83],[65.893,-105.089],[-73.649,-52.33],[-80.737,-42.073],[-80.737,74.884]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[979.588,692.379]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.511,1.186],[0,0],[0.014,-5.253],[0,0],[-0.697,-1.119],[0,0],[-1.35,-0.593],[0,0],[0.024,5.187],[0,0]],"o":[[0,0],[-0.013,-2.719],[0,0],[-4.851,-2.292],[0,0],[-0.004,1.31],[0,0],[0.768,1.233],[0,0],[4.855,2.13],[0,0],[0,0]],"v":[[36.582,69.522],[36.067,-71.032],[31.943,-77.414],[-25.981,-104.779],[-36.488,-98.383],[-36.892,56.11],[-35.832,59.825],[-21.818,82.338],[-18.567,85.141],[26.552,104.94],[36.872,98.409],[36.734,69.522]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[831.343,714.552]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[6.464,0],[0,8.344],[-4.924,2.734]],"o":[[-4.668,2.091],[-15.026,0],[0,-4.172],[0,0]],"v":[[22.139,9.552],[5.069,12.895],[-22.138,-2.213],[-14.169,-12.895]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[808.179,817.41]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-1.373],[10.261,0],[0,7.513],[-0.705,1.437]],"o":[[0.516,1.249],[0,7.513],[-10.262,0],[0,-1.614],[0,0]],"v":[[17.786,-8.448],[18.58,-4.501],[0,9.102],[-18.581,-4.501],[-17.492,-9.102]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[812.805,836.023]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-3.305],[15.026,0],[4.978,3.561]],"o":[[3.243,2.487],[0,8.344],[-8.748,0],[0,0]],"v":[[19.204,-11.979],[24.358,-3.129],[-2.849,11.979],[-24.358,6.125]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1032.871,798.861]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-1.373],[10.261,0],[0,7.513],[-0.705,1.437]],"o":[[0.516,1.249],[0,7.513],[-10.262,0],[0,-1.614],[0,0]],"v":[[17.786,-8.448],[18.58,-4.501],[0,9.102],[-18.581,-4.501],[-17.492,-9.102]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1029.579,816.557]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-1.373],[10.262,0],[0,7.513],[-0.704,1.437]],"o":[[1.025,0.937],[0,7.513],[-10.262,0],[0,-1.615],[0,0]],"v":[[17.133,-9.102],[18.581,-4.501],[-0.001,9.102],[-18.581,-4.501],[-17.492,-9.101]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[886.686,868.317]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-2.311],[14.843,0],[0,8.613],[-1.156,1.076]],"o":[[1.554,1.973],[0,8.613],[-14.843,0],[0,-1.077],[0,0]],"v":[[24.455,-11.036],[26.875,-4.558],[0,11.036],[-26.875,-4.558],[-25.166,-9.239]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[886.64,851.548]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[883.81,845.788],[883.81,778.765]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[883.81,778.765],[883.81,630.937]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-41.838,-20.679],[0,0],[-13.667,5.067],[0,0],[45.715,17.404],[6.243,0.052]],"o":[[0,0],[-43.889,15.871],[0,0],[13.068,6.458],[0,0],[45.865,-17.004],[-5.927,-2.256],[0,0]],"v":[[-48.32,-39.792],[-53.245,-38.011],[-58.703,59.297],[-57.951,59.669],[-16.064,61.849],[54.392,35.727],[54.825,-63.452],[36.421,-66.916]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.482,494.565]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[5.964,-2.156],[0,0]],"o":[[-6.243,-0.052],[0,0],[0,0]],"v":[[42.371,-13.536],[23.911,-10.381],[-42.37,13.588]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[913.533,441.185]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-22.66,-11.2],[0,0],[-7.403,2.745],[0,0],[24.759,9.426],[0,0]],"o":[[0,0],[-23.77,8.596],[0,0],[7.078,3.498],[0,0],[24.84,-9.21],[0,0],[0,0]],"v":[[-92.612,-34.094],[-110.589,-27.593],[-113.545,25.109],[-52.348,55.356],[-29.661,56.536],[111.212,4.308],[111.446,-49.407],[85.514,-59.28]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[923.265,544.66]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-10.475,-5.177],[0,0],[-3.422,1.268],[0,0],[11.446,4.357],[0,0]],"o":[[0,0],[-10.989,3.973],[0,0],[3.272,1.617],[0,0],[11.483,-4.258],[0,0],[0,0]],"v":[[-130.762,-30.138],[-147.021,-24.258],[-148.388,0.104],[-48.788,49.332],[-38.301,49.878],[147.31,-18.937],[147.418,-43.768],[128.039,-51.146]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[925.005,580.174]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[-17.728,-9.042],[0,0],[-13.831,5.068],[0,0],[0,22.215],[0,0]],"o":[[0,0],[0,19.9],[0,0],[13.122,6.693],[0,0],[20.858,-7.643],[0,0],[0,0]],"v":[[-146.322,-121.324],[-146.322,63.906],[-117.435,111.068],[-68.026,136.271],[-25.755,138.818],[111.596,88.488],[146.322,38.778],[146.322,-143.886]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[926.833,704.772]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[4.866,2.654],[0,0],[0.884,-7.078],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-4.866,-2.655],[0,0],[-0.885,7.078],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[36.055,-65.032],[31.631,-76.534],[-27.65,-104.849],[-36.055,-98.654],[-36.498,57.511],[-21.456,84.497],[-11.281,89.806],[25.88,105.29],[33.843,105.733],[36.94,100.423]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.02,0.482,0.843,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[831.386,713.955]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-5.428,-31.084],[-23.566,8.079],[4.305,31.084],[23.566,-7.609]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[950.288,491.314]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-23.668,-6.194],[-4.203,29.641],[23.668,8.406],[4.645,-29.641]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[873.413,510.452]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-3.597,-22.99],[0,0],[0,-6.193],[-8.721,-4.298],[0,0],[-9.291,3.539],[0,0],[0.442,4.424],[1.327,0.885],[0,0],[26.544,10.175],[0,0],[16.466,16.466],[18.58,-4.866],[0,0],[4.494,-21.791],[0,0],[0,0]],"o":[[0,0],[0,0],[0,6.194],[0,0],[0,0],[9.29,-3.54],[0,0],[-0.442,-4.423],[-1.327,-0.885],[0,0],[-15.484,-7.963],[0,0],[-17.696,-17.696],[-18.581,4.866],[0,0],[-3.535,18.475],[0,0],[0,0]],"v":[[-131.159,21.003],[-149.094,27.428],[-156.159,38.952],[-144.892,53.023],[-49.998,100.866],[-32.744,99.539],[151.734,30.083],[155.716,19.907],[150.407,9.29],[127.403,-0.443],[106.61,-34.507],[83.164,-43.654],[69.449,-83.613],[13.266,-98.212],[-63.27,-70.784],[-91.81,-38.299],[-93.611,-18.468],[-116.036,-10.882]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[925.402,529.033]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0.205,-0.719],[6.972,-12.532],[1.409,-0.652],[12.518,-4.674],[14.678,-4.72],[6.918,-2.946],[6.504,-2.265],[0.872,7.84],[0,1.586],[0,0],[0,0.419],[0,0],[-0.718,1.473],[-0.111,0.198],[-4.232,1.296],[-1.455,0.565],[-5.873,2.236],[-17.537,6.674],[-10.891,4.659],[-9.839,1.97],[-2.72,-0.142],[-0.908,-1.043],[-0.64,-3.923],[0,-1.229],[0,0]],"o":[[-5.824,11.718],[-0.281,1.1],[-12.146,5.623],[-14.442,5.394],[-7.146,2.299],[-6.327,2.695],[-7.126,2.482],[-0.916,-0.805],[0,0],[-0.079,-0.364],[0,0],[-0.492,-1.211],[0.101,-0.206],[0.573,-4.286],[1.513,-0.697],[5.864,-2.276],[17.53,-6.674],[11.637,-4.427],[4.004,-1.713],[2.397,-1.257],[1.509,0.079],[3.536,0.796],[0.59,0.76],[0,0],[0.072,0.615]],"v":[[133.166,36.389],[116.586,67.576],[113.183,71.41],[75.613,84.364],[31.962,99.644],[10.648,106.859],[-8.37,114.909],[-26.604,108.326],[-28.129,104.741],[-28.129,0.271],[-28.252,-0.902],[-28.252,-52.668],[-28.065,-56.774],[-27.738,-57.372],[-18.365,-64.953],[-13.865,-66.824],[3.102,-73.657],[56.379,-93.436],[89.317,-106.318],[114.032,-114.819],[121.941,-117.038],[125.694,-115.271],[132.388,-108.518],[133.345,-105.537],[133.345,34.385]],"c":true}},"nm":"P"},{"ind":1,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-11.281,-8.627],[0,0],[0,0],[-25.87,11.613],[0,0],[0,38.709],[0,0]],"o":[[0,0],[0,0],[0,0],[4.7,7.852],[0,0],[0,0],[68.939,-24.365],[0,0],[0,-34.507],[0,0]],"v":[[-14.599,-148.147],[-146.654,-121.604],[-146.654,68.184],[-132.055,100.036],[-117.01,111.318],[-66.449,138.087],[-18.58,136.535],[116.48,86.635],[145.991,37.001],[146.654,-143.502]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.004,0.502,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[927.164,704.388]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-7.806],[10.079,0],[0,6.506],[-10.078,0]],"o":[[0,6.505],[-10.078,0],[0,-6.505],[10.079,0]],"v":[[18.816,1.184],[0.567,12.964],[-18.815,0.051],[0.567,-12.964]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1029.455,812.364]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-8.85],[14.455,0],[0,8.85],[-14.454,0]],"o":[[0,8.85],[-14.454,0],[0,-8.85],[14.455,0]],"v":[[26.67,0.706],[-0.498,15.318],[-26.67,0.706],[-0.498,-15.318]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1030.559,795.521]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-7.327],[10.262,0],[0,7.327],[-10.261,0]],"o":[[0,7.327],[-10.261,0],[0,-7.327],[10.262,0]],"v":[[18.581,0],[-0.001,13.266],[-18.581,0],[-0.001,-13.266]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[886.685,864.153]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-8.85],[14.763,0],[0,8.85],[-14.764,0]],"o":[[0,8.85],[-14.764,0],[0,-8.85],[14.763,0]],"v":[[26.733,0],[0,16.023],[-26.732,0],[0,-16.023]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[886.496,846.991]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[29.862,0.995],[0.664,-17.585],[0,0],[0,0],[-16.59,0.664],[1.991,5.309]],"o":[[0,0],[1.041,5.758],[0,0],[0,0],[16.59,-0.663],[0,0]],"v":[[-1.659,-17.997],[-28.203,-5.64],[-18.912,4.977],[-20.24,11.281],[-0.332,22.562],[15.788,5.115]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[814.354,822.01]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":64,"ty":4,"nm":"c","parent":20,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[95,-200,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.805,766.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[948.066,766.516],[948.066,776.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[891.544,766.516],[891.544,776.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.805,779.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.805,766.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[919.805,771.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[910.805,778.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[939.066,778.516],[939.066,788.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[882.544,778.516],[882.544,788.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[910.805,791.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[910.805,778.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[910.805,783.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.805,791.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[948.066,791.516],[948.066,801.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[891.544,791.516],[891.544,801.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.805,804.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[919.805,791.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[919.805,796.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[911.805,804.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[940.066,804.516],[940.066,814.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[883.544,804.516],[883.544,814.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[911.805,817.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[911.805,804.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[911.805,809.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":65,"ty":4,"nm":"c","parent":21,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[40,-167,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[971.805,733.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1000.066,733.516],[1000.066,743.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[943.544,733.516],[943.544,743.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[971.805,746.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[971.805,733.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[971.805,738.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[962.805,745.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[991.066,745.516],[991.066,755.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[934.544,745.516],[934.544,755.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[962.805,758.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[962.805,745.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[962.805,750.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[971.805,758.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1000.066,758.516],[1000.066,768.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[943.544,758.516],[943.544,768.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[971.805,771.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[971.805,758.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[971.805,763.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[963.805,771.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[992.066,771.516],[992.066,781.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[935.544,771.516],[935.544,781.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.242,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[963.805,784.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[963.805,771.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[963.805,776.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":66,"ty":4,"nm":"c","parent":22,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-8,-171,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1012.003,739.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[984.231,739.271],[984.231,749.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1039.776,739.271],[1039.776,749.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.007,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1012.003,752.302]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.773,0],[0,6.572],[27.772,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1012.003,739.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.772,-5],[-27.355,6.129],[-1.07,11.572],[27.72,5.39],[27.772,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1012.003,744.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1020.848,751.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[993.075,751.271],[993.075,761.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1048.62,751.271],[1048.62,761.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.006,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1020.848,764.302]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.772,0],[0,6.572],[27.772,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1020.848,751.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.772,-5],[-27.355,6.129],[-1.07,11.572],[27.72,5.39],[27.772,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1020.848,756.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1012.003,764.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[984.231,764.271],[984.231,774.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1039.776,764.271],[1039.776,774.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.007,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1012.003,777.302]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.773,0],[0,6.572],[27.772,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1012.003,764.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.772,-5],[-27.355,6.129],[-1.07,11.572],[27.72,5.39],[27.772,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1012.003,769.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.865,777.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[992.092,777.271],[992.092,787.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1047.638,777.271],[1047.638,787.271]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.007,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.865,790.302]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.772,0],[0,6.572],[27.772,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.865,777.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.772,-5],[-27.355,6.129],[-1.07,11.572],[27.72,5.39],[27.772,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1019.865,782.271]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":67,"ty":4,"nm":"g","parent":23,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-6,-120,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-15.004,-14.219],[15.004,14.22]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1046.58,682.649]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[25.105,-6.669],[-25.105,6.669]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1006.471,675.098]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-6.997,19.024],[6.997,-19.025]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[974.369,700.792]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-30.827,-22.653],[30.828,22.653]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[998.199,742.469]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[16.279,-34.127],[-16.279,34.127]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1045.305,730.996]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.782,31.611],[5.782,-31.61]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1034.809,733.512]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[6.865,28.39],[-6.865,-28.39]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1022.162,736.733]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-19.055,-25.521],[19.054,25.521]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1009.972,739.602]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-16.966,-13.288],[16.965,13.288]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[998.332,695.055]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[8.14,-19.957],[-8.14,19.956]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1023.436,688.386]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-47.107,11.473],[47.106,-11.474]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1014.478,708.343]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-4.898,-29.025],[-16.094,34.056],[16.094,-34.057],[5.045,-31.413]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1045.49,730.926]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-19.239,-22.581],[19.239,28.32],[5.141,-28.32],[-10.846,-24.625]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1010.156,736.662]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-23.143,20.026],[2.151,13.586],[23.144,8.552],[-6.751,-20.026]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1038.44,688.316]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-24.036,19.099],[-0.343,13.216],[24.036,7.478],[-9.895,-19.099]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[991.26,700.865]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[6.655,6.275],[2.997,2.884],[4.085,-1.028],[5.638,-1.449],[4.943,-1.792],[2.279,-0.386],[1.279,-3.395],[3.747,-9.154],[-4.642,-3.606],[-8.639,-5.896],[-7.678,-5.761],[-0.402,0.474],[-0.027,0.032],[-0.025,0.098],[-2.556,3.838],[-0.975,1.827],[-0.109,0.277],[-3.204,6.475],[-3.35,7.425],[-0.974,1.941]],"o":[[-3.667,-3.458],[-3.879,1.541],[-5.645,1.42],[-5.09,1.309],[-2.298,0.833],[-1.237,3.949],[-3.488,9.255],[4.793,3.363],[8.254,6.414],[7.927,5.409],[0.203,-0.504],[0.027,-0.032],[0.02,-0.096],[1.174,-4.461],[0.792,-1.977],[0.107,-0.279],[2.647,-6.729],[3.613,-7.304],[0.893,-1.98],[-6.967,-5.903]],"v":[[27.21,-38.784],[17.172,-48.346],[5.112,-45.241],[-11.803,-40.883],[-26.907,-36.448],[-33.713,-34.506],[-37.42,-23.24],[-47.292,3.328],[-33.803,13.096],[-8.78,31.964],[14.879,48.346],[15.777,46.872],[15.855,46.775],[15.902,46.49],[22.04,34.117],[24.631,28.414],[24.953,27.578],[34.223,8.013],[44.479,-14.135],[47.292,-20.01]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.004,0.502,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1014.516,716.636]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":68,"ty":4,"nm":"g","parent":24,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[78,-134,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.892,-19.814],[5.892,19.814]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[970.626,718.181]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[25.078,6.767],[-25.078,-6.768]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[939.656,691.599]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-15.567,12.983],[15.568,-12.983]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[899.01,697.815]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-15.384,-35.026],[15.385,35.026]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[898.827,745.824]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[31.153,-21.427],[-31.153,21.428]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[945.365,759.422]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-20.804,24.492],[20.803,-24.492]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[935.015,756.357]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.239,28.022],[8.239,-28.022]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[922.45,752.828]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.753,-31.627],[3.753,31.627]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[910.458,749.223]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-8.057,-19.987],[8.056,19.987]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[922.634,704.819]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[17.022,-13.219],[-17.022,13.22]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[947.712,711.586]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-46.537,-13.598],[46.537,13.598]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[929.98,724.397]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[10.259,-24.524],[-30.958,24.524],[30.958,-18.394],[20.065,-21.624]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[945.559,756.389]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-11.992,-31.659],[-4.096,31.659],[11.992,-24.447],[-3.702,-29.235]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[918.697,749.254]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-22.914,6.658],[2.215,13.717],[22.914,19.847],[11.298,-19.847]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[953.604,718.148]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[-23.724,6.034],[-0.261,12.776],[23.724,19.987],[7.612,-19.987]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.459,0.855,0.875,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[906.965,704.819]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[2.629,8.761],[1.155,3.995],[4.052,1.151],[5.608,1.562],[5.176,0.918],[2.167,0.805],[2.805,-2.302],[7.821,-6.057],[-2.218,-5.443],[-4.538,-9.424],[-3.772,-8.827],[-0.585,0.211],[-0.039,0.015],[-0.071,0.072],[-4.131,2.048],[-1.757,1.095],[-0.233,0.185],[-6.01,4.007],[-6.612,4.759],[-1.813,1.194]],"o":[[-1.449,-4.828],[-4.13,-0.604],[-5.599,-1.59],[-5.063,-1.41],[-2.408,-0.427],[-3.044,2.803],[-7.645,6.274],[2.472,5.308],[3.945,9.68],[4.163,8.646],[0.428,-0.335],[0.04,-0.014],[0.066,-0.073],[3.246,-3.278],[1.674,-1.317],[0.232,-0.189],[5.655,-4.507],[6.78,-4.522],[1.763,-1.269],[-3.085,-8.595]],"v":[[38.781,-21.288],[34.864,-34.587],[22.866,-37.924],[6.036,-42.599],[-9.262,-46.305],[-16.129,-48.024],[-24.97,-40.116],[-46.796,-22.036],[-39.992,-6.835],[-27.743,22.012],[-15.436,48.025],[-13.922,47.196],[-13.805,47.15],[-13.622,46.927],[-2.124,39.276],[2.971,35.63],[3.668,35.068],[21.473,22.752],[41.424,8.691],[46.796,5.008]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.004,0.502,1,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[930.037,732.889]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":69,"ty":4,"nm":"c","parent":25,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[54,-87,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[950.815,655.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[923.042,655.305],[923.042,665.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[978.588,655.305],[978.588,665.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.006,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[950.815,668.336]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.773,0],[0,6.572],[27.772,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[950.815,655.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.773,-5],[-27.356,6.129],[-1.07,11.572],[27.72,5.39],[27.772,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[950.815,660.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[959.66,667.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[931.887,667.305],[931.887,677.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[987.432,667.305],[987.432,677.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.007,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[959.66,680.336]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.773,0],[0,6.572],[27.772,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[959.66,667.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.773,-5],[-27.356,6.129],[-1.07,11.572],[27.72,5.39],[27.772,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[959.66,672.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[950.815,680.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[923.042,680.305],[923.042,690.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[978.588,680.305],[978.588,690.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.006,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[950.815,693.336]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.773,0],[0,6.572],[27.772,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[950.815,680.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.773,-5],[-27.356,6.129],[-1.07,11.572],[27.72,5.39],[27.772,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[950.815,685.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[-7.108,0],[0,1.682],[7.108,0]],"o":[[0,1.682],[7.108,0],[0,-1.682],[-7.108,0]],"v":[[-12.871,0],[0,3.046],[12.871,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[958.677,693.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[930.904,693.305],[930.904,703.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[986.45,693.305],[986.45,703.305]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[15.338,0],[0,3.63],[-0.007,0.06]],"o":[[0.055,0.168],[0,3.63],[-15.338,0],[0,-0.06],[0,0]],"v":[[27.681,-3.542],[27.773,-3.031],[0,3.542],[-27.773,-3.031],[-27.754,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[958.677,706.336]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[-15.339,0],[0,3.63],[15.338,0]],"o":[[0,3.63],[15.338,0],[0,-3.63],[-15.339,0]],"v":[[-27.772,0],[0,6.572],[27.773,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[958.677,693.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[-0.417,-3.041],[-7.296,0],[-4.559,6.182],[0,2.251],[9.904,0]],"o":[[0,1.713],[4.422,4.02],[6.479,0],[0.052,-3.818],[0,-5.043],[-9.905,0]],"v":[[-27.772,-5],[-27.355,6.129],[-1.07,11.572],[27.721,5.39],[27.773,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[958.677,698.305]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":70,"ty":4,"nm":"c","parent":26,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[-16,-94,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1028.805,662.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1057.066,662.516],[1057.066,672.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1000.544,662.516],[1000.544,672.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.241,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1028.805,675.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1028.805,662.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1028.805,667.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.805,674.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1048.066,674.516],[1048.066,684.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[991.544,674.516],[991.544,684.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.241,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.805,687.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1019.805,674.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1019.805,679.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1028.805,687.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1057.066,687.516],[1057.066,697.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1000.544,687.516],[1000.544,697.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.241,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1028.805,700.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1028.805,687.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1028.805,692.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-1.682],[7.233,0],[0,1.682],[-7.234,0]],"o":[[0,1.682],[-7.234,0],[0,-1.682],[7.233,0]],"v":[[13.097,0],[0,3.046],[-13.097,0],[0,-3.046]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1020.805,700.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1049.066,700.516],[1049.066,710.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[992.544,700.516],[992.544,710.516]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[0,0]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,0],[0,-0.172],[-15.608,0],[0,3.63],[0.007,0.06]],"o":[[-0.056,0.168],[0,3.63],[15.608,0],[0,-0.06],[0,0]],"v":[[-28.167,-3.542],[-28.26,-3.031],[0,3.542],[28.26,-3.031],[28.241,-3.21]],"c":false}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1020.805,713.547]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-3.63],[15.608,0],[0,3.63],[-15.608,0]],"o":[[0,3.63],[-15.608,0],[0,-3.63],[15.608,0]],"v":[[28.261,0],[0,6.572],[-28.261,0],[0,-6.572]],"c":true}},"nm":"P"},{"ty":"st","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"w":{"a":0,"k":2},"lc":2,"lj":2,"nm":"S"},{"ty":"tr","p":{"a":0,"k":[1020.805,700.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"},{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[0,-4.941],[0.424,-3.041],[7.424,0],[4.639,6.182],[0,2.251],[-10.078,0]],"o":[[0,1.713],[-4.5,4.02],[-6.592,0],[-0.054,-3.818],[0,-5.043],[10.079,0]],"v":[[28.261,-5],[27.837,6.129],[1.088,11.572],[-28.207,5.39],[-28.261,-4.646],[0,-11.572]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.894,0.737,0.027,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[1020.805,705.516]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0},{"ind":71,"ty":4,"nm":"b","parent":27,"sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[30,-114,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[100,100,100],"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ks":{"a":0,"k":{"i":[[-1.599,-114.088],[77.845,-30.921],[3.198,101.826],[-101.123,46.915]],"o":[[5.331,115.762],[-117.65,39.451],[0,-126.35],[98.798,-37.851]],"v":[[95.429,-23.191],[9.426,103.692],[-85.299,30.121],[9.426,-105.292]],"c":true}},"nm":"P"},{"ty":"fl","c":{"a":0,"k":[0.043,0.106,0.204,1]},"o":{"a":0,"k":100},"r":1,"nm":"F"},{"ty":"tr","p":{"a":0,"k":[973.054,702.158]},"a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"r":{"a":0,"k":0},"o":{"a":0,"k":100},"sk":{"a":0,"k":0},"sa":{"a":0,"k":0},"nm":"T"}],"nm":"G"}],"ip":0,"op":64,"st":0}]}],"layers":[{"ind":1,"ty":0,"nm":"E","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100},"r":{"a":0,"k":0},"p":{"a":0,"k":[333.5,110,0],"l":2},"a":{"a":0,"k":[960,540,0],"l":2},"s":{"a":0,"k":[73,73,100],"l":2}},"ao":0,"w":1920,"h":1080,"ip":0,"op":64,"st":0}],"markers":[]} \ No newline at end of file diff --git a/assets/animations/SaveTheWorld.json b/assets/animations/SaveTheWorld.json new file mode 100644 index 000000000000..ea3a7ae28e71 --- /dev/null +++ b/assets/animations/SaveTheWorld.json @@ -0,0 +1 @@ +{"v":"5.9.6","fr":24,"ip":0,"op":146,"w":375,"h":240,"nm":"Comp 2","ddd":0,"assets":[{"id":"comp_0","nm":"Comp 1","fr":24,"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"ED_saveTheWorld_scale_032222_NL_kjs_2","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[200,200,0],"ix":2,"l":2},"a":{"a":0,"k":[966,543.5,0],"ix":1,"l":2},"s":{"a":0,"k":[37,37,100],"ix":6,"l":2}},"ao":0,"w":1932,"h":1087,"ip":0,"op":146,"st":0,"bm":0}]},{"id":"comp_1","nm":"ED_saveTheWorld_scale_032222_NL_kjs_2","fr":24,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"base ol Outlines","parent":27,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[67.876,-351.08,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.458],[5.458,0],[0,5.458],[-5.458,0]],"o":[[0,5.458],[-5.458,0],[0,-5.458],[5.458,0]],"v":[[9.883,0],[0,9.882],[-9.883,0],[0,-9.882]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.92,291.656],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"pole pole PEG","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[948,291.5,0],"to":[0,4.167,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":37,"s":[948,316.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":73,"s":[948,291.5,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":110,"s":[948,316.5,0],"to":[0,0,0],"ti":[0,0,0]},{"t":146,"s":[948,291.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":3,"nm":"pole PEG","parent":2,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":73,"s":[-26]},{"t":146,"s":[0]}],"ix":10},"p":{"a":0,"k":[50.154,50.19,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":3,"nm":"side 2 base string PEG","parent":2,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":73,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":110,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":146,"s":[0]},{"t":183,"s":[5]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.51},"o":{"x":0.333,"y":0},"t":0,"s":[349.654,198.69,0],"to":[8.428,-11.161,0],"ti":[-7.131,30.991,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.507},"t":37,"s":[377.055,125.036,0],"to":[8.522,-37.037,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.5},"o":{"x":0.333,"y":0},"t":73,"s":[388.654,51.69,0],"to":[0,0,0],"ti":[8.849,-38.09,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.497},"t":110,"s":[376.539,128.158,0],"to":[-6.961,29.962,0],"ti":[8.365,-10.787,0]},{"t":146,"s":[349.654,198.69,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":3,"nm":"side 1 base string PEG","parent":2,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":37,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":73,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":110,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":146,"s":[0]},{"t":183,"s":[5]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.509},"o":{"x":0.333,"y":0},"t":0,"s":[-258.346,-99.31,0],"to":[-8.847,11.796,0],"ti":[5.677,-31.408,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.506},"t":37,"s":[-283.482,-24.138,0],"to":[-6.835,37.82,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":0.501},"o":{"x":0.333,"y":0},"t":73,"s":[-291.346,50.69,0],"to":[0,0,0],"ti":[-7.181,38.877,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.497},"t":110,"s":[-282.912,-27.257,0],"to":[5.612,-30.383,0],"ti":[-8.554,11.406,0]},{"t":146,"s":[-258.346,-99.31,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"pole Outlines","parent":3,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[67.376,301.42,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.38,-1.18],[-1.18,2.38],[0,0],[2.38,1.18],[0.71,0],[0.84,-1.7],[0,0]],"o":[[2.38,1.17],[0,0],[1.17,-2.38],[-0.68,-0.33],[-1.78,0],[0,0],[-1.17,2.38]],"v":[[-4.68,9.16],[1.78,6.96],[6.88,-3.38],[4.68,-9.84],[2.57,-10.33],[-1.78,-7.64],[-6.88,2.7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1243.299,438.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.37,-1.17],[-1.17,2.38],[0,0],[2.38,1.17],[0.71,0],[0.84,-1.7],[0,0]],"o":[[2.38,1.17],[0,0],[1.18,-2.38],[-0.68,-0.34],[-1.78,0],[0,0],[-1.17,2.38]],"v":[[-4.69,9.16],[1.77,6.97],[6.87,-3.37],[4.68,-9.83],[2.56,-10.33],[-1.78,-7.64],[-6.88,2.7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1252.269,442.73],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.38,-1.17],[-1.17,2.38],[0,0],[2.38,1.17],[0.71,0],[0.83,-1.7],[0,0]],"o":[[2.38,1.18],[0,0],[1.18,-2.38],[-0.68,-0.34],[-1.78,0],[0,0],[-1.17,2.38]],"v":[[-4.69,9.15],[1.77,6.96],[6.87,-3.38],[4.68,-9.84],[2.56,-10.33],[-1.78,-7.65],[-6.88,2.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1261.239,447.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.43,-1.69],[0,0],[0,0],[-4.8,-1.65],[-0.55,-0.27]],"o":[[1.05,2.2],[7.18,3.54],[0,0],[0,0],[0.53,0.18],[0,0]],"v":[[-22.62,-4.995],[-16.25,1.455],[0.33,1.365],[12.2,-2.735],[21,-2.745],[22.62,-2.075]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1146.939,395.935],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-6.12,-3.02],[-0.98,-2.17]],"o":[[6.75,3.33],[0,0],[0,0],[3.83,1.89],[0,0]],"v":[[-22.615,2.16],[-12.835,3.55],[1.885,-1.23],[15.875,-2.47],[22.615,4.16]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1113.434,367.82],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.59,-1.77],[-3.02,0.29],[0,0],[0,0],[-2.4,0.68],[-3.3,-1.63],[0,0]],"o":[[1.01,2.27],[3.16,1.55],[3.86,-0.38],[0,0],[0,0],[2.81,-0.79],[8.02,3.96],[0,0]],"v":[[-31.685,-4.125],[-25.175,2.635],[-15.415,4.065],[-8.605,2.545],[9.675,-3.395],[13.755,-4.985],[23.665,-4.635],[31.405,6.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1139.724,386.795],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.17,-3.54],[-3.16,0.4],[0,0],[0,0],[-2.41,0.68],[-3.3,-1.63],[-0.94,-2.23]],"o":[[0,0],[3.41,1.68],[3.5,-0.44],[0,0],[0,0],[2.81,-0.79],[4.01,1.97],[0,0]],"v":[[-31.675,-6.3],[-24.045,4.55],[-13.555,5.9],[-7.475,4.46],[10.805,-1.48],[14.885,-3.06],[24.795,-2.71],[31.675,4.22]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1121.554,376.47],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.38,1.17],[-1.17,2.38],[0,0],[-2.38,-1.18],[0,-1.79],[0.34,-0.68],[0,0]],"o":[[-2.38,-1.17],[0,0],[1.17,-2.38],[1.7,0.83],[0,0.71],[0,0],[-1.17,2.38]],"v":[[-4.35,9.5],[-6.54,3.04],[-1.44,-7.3],[5.02,-9.49],[7.71,-5.15],[7.21,-3.03],[2.11,7.31]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[651.039,146.03],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.38,1.17],[-1.17,2.38],[0,0],[-2.38,-1.17],[0,-1.78],[0.34,-0.68],[0,0]],"o":[[-2.37,-1.18],[0,0],[1.18,-2.38],[1.7,0.84],[0,0.71],[0,0],[-1.17,2.38]],"v":[[-4.35,9.5],[-6.54,3.04],[-1.44,-7.3],[5.02,-9.5],[7.71,-5.16],[7.21,-3.04],[2.11,7.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[642.069,141.61],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[2.38,1.18],[-1.17,2.38],[0,0],[-2.38,-1.17],[0,-1.79],[0.33,-0.68],[0,0]],"o":[[-2.38,-1.17],[0,0],[1.18,-2.38],[1.7,0.84],[0,0.71],[0,0],[-1.18,2.38]],"v":[[-4.34,9.49],[-6.54,3.03],[-1.44,-7.31],[5.02,-9.5],[7.71,-5.15],[7.22,-3.04],[2.12,7.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[633.099,137.19],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.43,1.69],[0,0],[0,0],[5.49,2.71]],"o":[[-2.38,0.51],[-7.18,-3.54],[0,0],[0,0],[0,0]],"v":[[14.925,16.775],[5.935,15.645],[-4.085,2.445],[-8.065,-9.465],[-14.925,-17.335]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[746.184,195.025],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[6.12,3.02],[2.32,-0.54]],"o":[[-6.75,-3.33],[0,0],[0,0],[-3.83,-1.89],[0,0]],"v":[[14.56,17.625],[7.51,10.705],[2.34,-3.885],[-5.19,-15.735],[-14.56,-17.055]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[783.569,208.005],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.59,1.77],[1.61,2.58],[0,0],[0,0],[0.96,2.37],[3.25,1.6],[0,0]],"o":[[-2.42,0.58],[-3.15,-1.55],[-2.05,-3.3],[0,0],[0,0],[-1.09,-2.69],[-8.02,-3.95],[0,0]],"v":[[23.325,23.735],[14.005,22.675],[6.925,15.805],[3.985,9.475],[-2.425,-8.645],[-3.695,-12.955],[-9.955,-20.495],[-23.325,-19.995]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[754.254,195.955],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[7.18,3.54],[1.62,2.72],[0,0],[0,0],[0.96,2.37],[3.25,1.6],[2.34,-0.62]],"o":[[0,0],[-3.36,-1.66],[-1.83,-3.09],[0,0],[0,0],[-1.09,-2.69],[-4.01,-1.98],[0,0]],"v":[[23.455,20.255],[10.195,20.805],[2.805,13.415],[0.175,7.595],[-6.235,-10.515],[-7.505,-14.825],[-13.765,-22.365],[-23.455,-23.605]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[775.104,206.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.43,1.69],[0,0],[0,0],[5.49,2.71],[0,0],[-8.02,-3.95],[-1.09,-2.69],[0,0],[0,0],[-2.05,-3.3]],"o":[[-2.38,0.51],[-7.18,-3.54],[0,0],[0,0],[0,0],[0,0],[3.25,1.6],[0.96,2.37],[0,0],[0,0],[0,0]],"v":[[15.055,19.865],[6.065,18.735],[-3.955,5.535],[-7.935,-6.375],[-14.795,-14.245],[-15.125,-15.975],[-1.755,-16.475],[4.505,-8.935],[5.775,-4.625],[12.185,13.495],[15.125,19.825]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[746.054,191.935],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.59,1.77],[1.61,2.58],[0,0],[0,0],[0.96,2.37],[0,0],[-4.01,-1.98],[-1.09,-2.69],[0,0],[0,0],[-1.83,-3.09]],"o":[[-2.42,0.58],[-3.15,-1.55],[-2.05,-3.3],[0,0],[0,0],[0,0],[2.34,-0.62],[3.25,1.6],[0.96,2.37],[0,0],[0,0],[0,0]],"v":[[13.345,18.545],[4.025,17.485],[-3.055,10.615],[-5.995,4.285],[-12.405,-13.835],[-13.675,-18.145],[-12.585,-18.515],[-2.895,-17.275],[3.365,-9.735],[4.635,-5.425],[11.045,12.685],[13.675,18.505]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[764.234,201.145],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.75,-3.33],[0,0],[7.18,3.54],[1.62,2.72],[0,0],[0,0],[0.96,2.37],[0,0],[-3.83,-1.89],[0,0],[0,0]],"o":[[0,0],[0,0],[-3.36,-1.66],[-1.83,-3.09],[0,0],[0,0],[0,0],[2.32,-0.54],[6.12,3.02],[0,0],[0,0]],"v":[[15.05,15.15],[15.48,16.01],[2.22,16.56],[-5.17,9.17],[-7.8,3.35],[-14.21,-14.76],[-15.48,-19.07],[-14.07,-19.53],[-4.7,-18.21],[2.83,-6.36],[8,8.23]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[783.079,210.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.12,-3.02],[-0.98,-2.17],[0,0],[0,0],[0,0],[3.5,-0.44],[3.41,1.68],[0,0],[0,0],[0,0],[0,0]],"o":[[3.83,1.89],[0,0],[-2.41,0.68],[0,0],[0,0],[-3.16,0.4],[-7.17,-3.54],[0,0],[6.75,3.33],[0,0],[0,0]],"v":[[16.15,-7.2],[22.89,-0.57],[23.28,0.86],[19.2,2.44],[0.92,8.38],[-5.16,9.82],[-15.65,8.47],[-23.28,-2.38],[-22.34,-2.57],[-12.56,-1.18],[2.16,-5.96]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1113.158,372.55],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-3.3,-1.63],[-0.94,-2.23],[0,0],[0,0],[0,0],[3.86,-0.38],[3.16,1.55],[1.01,2.27],[0,0],[0,0],[0,0],[-2.41,0.68]],"o":[[4.01,1.97],[0,0],[-2.4,0.68],[0,0],[0,0],[-3.02,0.29],[-3.59,-1.77],[0,0],[3.5,-0.44],[0,0],[0,0],[2.81,-0.79]],"v":[[15.61,-7.88],[22.49,-0.95],[22.74,0.17],[18.66,1.76],[0.38,7.7],[-6.43,9.22],[-16.19,7.79],[-22.7,1.03],[-22.74,0.73],[-16.66,-0.71],[1.62,-6.65],[5.7,-8.23]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1130.739,381.64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[7.18,3.54],[1.05,2.2],[0,0],[0,0],[0,0],[-2.4,0.68],[-3.3,-1.63],[0,0]],"o":[[-4.8,-1.65],[0,0],[0,0],[-3.43,-1.69],[0,0],[3.86,-0.38],[0,0],[0,0],[2.81,-0.79],[8.02,3.96],[0,0]],"v":[[20.08,2.46],[11.28,2.47],[-0.59,6.57],[-17.17,6.66],[-23.54,0.21],[-23.55,0.13],[-16.74,-1.39],[1.54,-7.33],[5.62,-8.92],[15.53,-8.57],[23.27,2.33]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1147.859,390.73],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.68,-0.33],[1.17,-2.38],[0,0],[2.38,1.17],[-1.17,2.38],[0,0],[-1.78,0]],"o":[[2.38,1.18],[0,0],[-1.18,2.38],[-2.38,-1.18],[0,0],[0.84,-1.7],[0.71,0]],"v":[[4.68,-9.84],[6.88,-3.38],[1.78,6.96],[-4.68,9.16],[-6.88,2.7],[-1.78,-7.64],[2.57,-10.33]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1243.299,438.31],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.68,-0.34],[1.18,-2.38],[0,0],[2.38,1.17],[-1.17,2.38],[0,0],[-1.78,0]],"o":[[2.38,1.17],[0,0],[-1.17,2.38],[-2.37,-1.17],[0,0],[0.84,-1.7],[0.71,0]],"v":[[4.68,-9.83],[6.87,-3.37],[1.77,6.97],[-4.69,9.16],[-6.88,2.7],[-1.78,-7.64],[2.56,-10.33]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1252.269,442.73],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.68,-0.34],[1.18,-2.38],[0,0],[2.38,1.18],[-1.17,2.38],[0,0],[-1.78,0]],"o":[[2.38,1.17],[0,0],[-1.17,2.38],[-2.38,-1.17],[0,0],[0.83,-1.7],[0.71,0]],"v":[[4.68,-9.84],[6.87,-3.38],[1.77,6.96],[-4.69,9.15],[-6.88,2.69],[-1.78,-7.65],[2.56,-10.33]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1261.239,447.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.38,-1.17],[0,-1.79],[0.33,-0.68],[0,0],[2.38,1.18],[-1.17,2.38],[0,0]],"o":[[1.7,0.84],[0,0.71],[0,0],[-1.18,2.38],[-2.38,-1.17],[0,0],[1.18,-2.38]],"v":[[5.02,-9.5],[7.71,-5.15],[7.22,-3.04],[2.12,7.3],[-4.34,9.49],[-6.54,3.03],[-1.44,-7.31]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[633.099,137.19],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.38,-1.17],[0,-1.78],[0.34,-0.68],[0,0],[2.38,1.17],[-1.17,2.38],[0,0]],"o":[[1.7,0.84],[0,0.71],[0,0],[-1.17,2.38],[-2.37,-1.18],[0,0],[1.18,-2.38]],"v":[[5.02,-9.5],[7.71,-5.16],[7.21,-3.04],[2.11,7.3],[-4.35,9.5],[-6.54,3.04],[-1.44,-7.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[642.069,141.61],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.79],[0.34,-0.68],[0,0],[2.38,1.17],[-1.17,2.38],[0,0],[-2.38,-1.18]],"o":[[0,0.71],[0,0],[-1.17,2.38],[-2.38,-1.17],[0,0],[1.17,-2.38],[1.7,0.83]],"v":[[7.71,-5.15],[7.21,-3.03],[2.11,7.31],[-4.35,9.5],[-6.54,3.04],[-1.44,-7.3],[5.02,-9.49]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[651.039,146.03],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.35,-2.74],[-2.74,-1.35],[-1.35,2.74],[2.74,1.35]],"o":[[-1.35,2.74],[2.73,1.35],[1.35,-2.73],[-2.74,-1.35]],"v":[[-4.96,-2.45],[-2.44,4.96],[4.96,2.44],[2.45,-4.96]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1351.868,491.52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.06,-0.18],[-2.21,-1.09],[-1.17,2.38],[0,0],[2.38,1.17],[0.71,0],[0.91,-1.33],[0.1,-0.21],[0,0]],"o":[[-0.81,2.27],[2.38,1.18],[0,0],[1.17,-2.38],[-0.68,-0.34],[-1.56,0],[-0.13,0.19],[0,0],[-0.09,0.17]],"v":[[-7.165,3.21],[-4.755,9.15],[1.705,6.96],[6.805,-3.38],[4.615,-9.84],[2.495,-10.33],[-1.495,-8.25],[-1.845,-7.65],[-6.945,2.69]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1342.024,486.97],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.35,-2.74],[2.74,1.35],[-1.36,2.74],[-2.74,-1.35]],"o":[[-1.35,2.74],[-2.74,-1.35],[1.35,-2.74],[2.74,1.35]],"v":[[4.96,2.445],[-2.44,4.955],[-4.95,-2.445],[2.45,-4.955]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[542.799,92.485],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.22,-0.27],[2.06,1.02],[-1.18,2.38],[0,0],[-2.38,-1.17],[0,-1.78],[0.19,-0.52],[0.09,-0.17],[0,0]],"o":[[-1.38,1.73],[-2.38,-1.17],[0,0],[1.17,-2.38],[1.7,0.83],[0,0.53],[-0.06,0.18],[0,0],[-0.16,0.32]],"v":[[1.56,8.26],[-4.34,9.57],[-6.53,3.11],[-1.43,-7.23],[5.03,-9.42],[7.71,-5.08],[7.44,-3.48],[7.22,-2.96],[2.12,7.38]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[552.379,97.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-389.02,-191.87],[389.02,191.87]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[944.129,297.44],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-389.025,-191.87],[389.025,191.87]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[949.884,285.78],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.06,-0.18],[0,0],[0,0],[0,0],[-0.16,0.32],[0,0],[-0.06,0.18],[0,0],[0,0],[0,0],[0.1,-0.21]],"o":[[-0.09,0.17],[0,0],[0,0],[0,0],[0.22,-0.27],[0,0],[0.09,-0.17],[0,0],[0,0],[0,0],[-0.13,0.19],[0,0]],"v":[[387.845,197.66],[387.625,198.18],[385.915,197.31],[-392.125,-186.43],[-393.295,-186.44],[-392.735,-187.32],[-387.635,-197.66],[-387.415,-198.18],[-386.375,-198.09],[391.675,185.65],[393.295,186.72],[392.945,187.32]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.234,292],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.68,-0.34],[1.17,-2.38],[0,0],[2.38,1.18],[-0.81,2.27],[-0.09,0.17],[0,0],[-0.13,0.19],[-1.56,0]],"o":[[2.38,1.17],[0,0],[-1.17,2.38],[-2.21,-1.09],[0.06,-0.18],[0,0],[0.1,-0.21],[0.91,-1.33],[0.71,0]],"v":[[4.615,-9.84],[6.805,-3.38],[1.705,6.96],[-4.755,9.15],[-7.165,3.21],[-6.945,2.69],[-1.845,-7.65],[-1.495,-8.25],[2.495,-10.33]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1342.024,486.97],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.74,-1.35],[1.35,-2.73],[2.73,1.35],[-1.35,2.74]],"o":[[2.74,1.35],[-1.35,2.74],[-2.74,-1.35],[1.35,-2.74]],"v":[[2.45,-4.96],[4.96,2.44],[-2.44,4.96],[-4.96,-2.45]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1351.869,491.52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.74,-1.35],[1.35,-2.74],[2.74,1.35],[-1.36,2.74]],"o":[[2.74,1.35],[-1.35,2.74],[-2.74,-1.35],[1.35,-2.74]],"v":[[2.45,-4.955],[4.96,2.445],[-2.44,4.955],[-4.95,-2.445]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[542.799,92.485],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-1.78],[0.19,-0.52],[0.09,-0.17],[0,0],[0.22,-0.27],[2.06,1.02],[-1.18,2.38],[0,0],[-2.38,-1.17]],"o":[[0,0.53],[-0.06,0.18],[0,0],[-0.16,0.32],[-1.38,1.73],[-2.38,-1.17],[0,0],[1.17,-2.38],[1.7,0.83]],"v":[[7.71,-5.08],[7.44,-3.48],[7.22,-2.96],[2.12,7.38],[1.56,8.26],[-4.34,9.57],[-6.53,3.11],[-1.43,-7.23],[5.03,-9.42]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[552.379,97.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":3,"nm":"side 2 seat PEG","parent":4,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[-1.292]},"o":{"x":[0.333],"y":[2.292]},"t":-108,"s":[-0.098]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0.647]},"t":0,"s":[-0.098]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":3,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":113,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":149,"s":[0]},{"t":186,"s":[5]}],"ix":10},"p":{"a":0,"k":[51,178,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":3,"nm":"side 2 tassle PEG","parent":7,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[-7.333]},"o":{"x":[0.333],"y":[8.333]},"t":-108,"s":[-0.741]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0.625]},"t":0,"s":[-0.741]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":43,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":79,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":116,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":152,"s":[0]},{"t":189,"s":[10]}],"ix":10},"p":{"a":0,"k":[49,348,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":3,"nm":"earth PEG","parent":7,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.667],"y":[-3.167]},"o":{"x":[0.333],"y":[4.167]},"t":-108,"s":[-0.37]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0.625]},"t":0,"s":[-0.37]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":43,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":79,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":116,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":152,"s":[0]},{"t":189,"s":[5]}],"ix":10},"p":{"a":0,"k":[49,348,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"side 2 seat Outlines","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-233.124,24.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.848],[5.848,0],[0,5.848],[-5.848,0]],"o":[[0,5.848],[-5.848,0],[0,-5.848],[5.848,0]],"v":[[10.588,0],[0,10.588],[-10.588,0],[0,-10.588]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.651,569.013],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.454],[9.454,0],[0,9.454],[-9.453,0]],"o":[[0,9.454],[-9.453,0],[0,-9.454],[9.454,0]],"v":[[17.118,0],[0,17.118],[-17.118,0],[0,-17.118]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.65,569.013],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.882,0],[0,0],[0,3.883],[-3.882,0],[0,0],[0,-3.882]],"o":[[0,0],[-3.882,0],[0,-3.882],[0,0],[3.882,0],[0,3.883]],"v":[[116.5,7.059],[-116.5,7.059],[-123.559,0],[-116.5,-7.059],[116.5,-7.059],[123.559,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1248.739,823.042],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[83.647,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-83.647,0],[0,0]],"v":[[115.883,-17.824],[0.118,17.823],[-0.117,17.823],[-115.882,-17.824]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1248.739,848.278],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.97,1.6],[3.97,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1253.028,567.648],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.71,1.495],[3.71,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1263.628,595.983],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.975,1.6],[3.975,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1275.623,623.748],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.71,1.495],[3.71,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1286.228,652.083],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.97,1.6],[3.97,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1298.218,679.858],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.71,1.495],[3.71,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1308.818,708.183],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.97,1.6],[3.97,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1320.808,735.958],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.71,1.495],[3.71,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1331.408,764.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.975,1.6],[3.975,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1343.403,792.058],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.715,1.495],[3.715,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1354.003,820.393],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-52.44,-130.225],[-51.17,-127.075],[-39.88,-99.025],[-28.58,-70.975],[-17.28,-42.925],[-5.99,-14.865],[5.31,13.175],[16.6,41.235],[27.9,69.285],[39.2,97.335],[50.49,125.395],[52.44,130.225]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1308.528,692.984],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-52.13,-129.455],[-51.02,-126.695],[-39.72,-98.645],[-28.43,-70.595],[-17.13,-42.535],[-5.83,-14.485],[5.46,13.565],[16.76,41.615],[28.06,69.675],[39.35,97.715],[50.65,125.765],[52.13,129.455]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1299.208,696.293],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.06,-15.87],[10.23,12.18],[8.92,12.71],[1.5,15.7],[1.07,15.87],[-10.23,-12.18],[-9.36,-12.53],[-1.42,-15.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1258.418,581.778],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.07,-15.87],[10.23,12.18],[9.88,12.32],[1.93,15.52],[1.06,15.87],[-10.23,-12.18],[-9.8,-12.35],[-2.38,-15.34]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1269.718,609.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.235,12.175],[8.925,12.705],[1.505,15.695],[1.065,15.875],[-10.235,-12.185],[-9.365,-12.535],[-1.415,-15.735],[-1.065,-15.875]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1281.013,637.883],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.06,-15.875],[10.23,12.185],[9.88,12.325],[1.94,15.525],[1.07,15.875],[-10.23,-12.175],[-9.79,-12.355],[-2.37,-15.345]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1292.308,665.933],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.23,12.17],[8.92,12.7],[1.5,15.69],[1.06,15.87],[-10.23,-12.18],[-9.36,-12.53],[-1.42,-15.73],[-1.07,-15.87]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1303.608,693.988],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.06,-15.875],[10.23,12.185],[9.88,12.325],[1.94,15.525],[1.07,15.875],[-10.23,-12.175],[-9.79,-12.355],[-2.37,-15.345]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1314.898,722.033],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.07,-15.875],[10.23,12.175],[8.92,12.705],[1.5,15.695],[1.07,15.875],[-10.23,-12.185],[-9.36,-12.535],[-1.42,-15.735]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1326.198,750.093],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.23,12.18],[9.88,12.32],[1.93,15.52],[1.06,15.87],[-10.23,-12.17],[-9.8,-12.35],[-2.38,-15.34],[-1.07,-15.87]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1337.498,778.138],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.06,-15.87],[10.23,12.19],[8.93,12.71],[1.5,15.7],[1.07,15.87],[-10.23,-12.18],[-9.36,-12.53],[-1.41,-15.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1348.788,806.188],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.935,-1.68],[3.935,1.68]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1247.27,567.918],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.57],[3.68,1.57]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1234.735,595.448],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.94,-1.675],[3.94,1.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1223.575,623.563],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.565],[3.68,1.565]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1211.035,651.093],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.935,-1.675],[3.935,1.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1199.88,679.213],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.565],[3.68,1.565]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1187.345,706.743],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.94,-1.68],[3.94,1.68]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1176.185,734.858],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.57],[3.68,1.57]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1163.645,762.388],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.935,-1.675],[3.935,1.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1152.49,790.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.565],[3.68,1.565]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1139.955,818.033],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[54.755,-128.6],[53.605,-125.89],[41.755,-98.07],[29.915,-70.25],[18.065,-42.43],[6.215,-14.6],[-5.625,13.22],[-17.475,41.05],[-29.325,68.87],[-41.165,96.69],[-53.015,124.51],[-54.755,128.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1197.95,695.638],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[55.265,-129.795],[53.865,-126.505],[42.015,-98.685],[30.165,-70.855],[18.325,-43.025],[6.475,-15.205],[-5.375,12.615],[-17.215,40.435],[-29.065,68.265],[-40.915,96.085],[-52.755,123.915],[-55.265,129.795]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1188.6,692.373],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.975],[-1.38,15.845],[-2.68,15.295],[-10.04,12.165],[-10.47,11.985],[1.37,-15.845],[2.24,-15.475],[10.11,-12.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1146.315,804.303],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.975],[-1.37,15.845],[-1.73,15.695],[-9.6,12.345],[-10.47,11.975],[1.38,-15.845],[1.81,-15.665],[9.17,-12.525]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1158.155,776.483],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":2,"cix":2,"bm":0,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.97],[-1.38,15.85],[-2.68,15.3],[-10.04,12.16],[-10.47,11.98],[1.38,-15.85],[2.24,-15.48],[10.12,-12.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1170.005,748.658],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.98],[-1.38,15.85],[-1.73,15.7],[-9.61,12.34],[-10.47,11.97],[1.37,-15.85],[1.81,-15.66],[9.17,-12.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1181.855,720.838],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.975],[-1.37,15.845],[-2.67,15.295],[-10.03,12.165],[-10.47,11.975],[1.38,-15.845],[2.25,-15.475],[10.12,-12.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1193.695,693.013],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.985],[-1.38,15.845],[-1.73,15.695],[-9.6,12.345],[-10.47,11.975],[1.38,-15.845],[1.81,-15.665],[9.17,-12.535]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1205.545,665.193],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.975],[-1.38,15.845],[-2.68,15.295],[-10.04,12.165],[-10.47,11.985],[1.37,-15.845],[2.24,-15.475],[10.12,-12.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1217.395,637.363],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.97],[-1.37,15.85],[-1.72,15.7],[-9.6,12.35],[-10.47,11.98],[1.38,-15.85],[1.82,-15.66],[9.18,-12.52]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1229.235,609.538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.97],[-1.38,15.85],[-2.67,15.3],[-10.03,12.16],[-10.47,11.97],[1.38,-15.85],[2.25,-15.48],[10.12,-12.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1241.085,581.718],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":46,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"side 2 tassle Outlines","parent":8,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-232.124,-273.08,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.848],[5.848,0],[0,5.848],[-5.848,0]],"o":[[0,5.848],[-5.848,0],[0,-5.848],[5.848,0]],"v":[[10.588,0],[0,10.588],[-10.588,0],[0,-10.588]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1247.739,865.395],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.946,-7.787]],"o":[[0.728,9.497],[0,0]],"v":[[-3.822,-13.648],[3.822,13.648]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1253.681,891.397],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.946,-7.787]],"o":[[-0.728,9.497],[0,0]],"v":[[3.822,-13.648],[-3.822,13.648]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1242.152,891.397],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-9.048,-6.127],[0,0],[-0.353,10.507]],"o":[[-0.307,10.923],[-20.371,15.529],[8.993,-5.446],[0,0]],"v":[[6.009,-20.823],[19.991,5.295],[-19.991,5.295],[-5.285,-19.764]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1247.671,895.042],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":12,"ty":0,"nm":"Earth","parent":9,"refId":"comp_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-231.654,-272.69,0],"ix":2,"l":2},"a":{"a":0,"k":[966,543.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1932,"h":1087,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":13,"ty":4,"nm":"side 2 base string Outlines","parent":4,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-232.124,152.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.15,0.05],[-2.42,-1.92]],"o":[[0.14,-0.06],[2.97,-1],[0,0]],"v":[[-4.825,-0.01],[-4.385,-0.17],[4.825,1.17]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1247.62,447.638],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.095,476.903],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1248.515,507.148],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.445,537.383],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1248.865,567.628],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.355,-61.96],[-0.195,-33.94],[-0.025,-3.7],[0.155,26.54],[0.325,56.78],[0.355,61.96]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1253.95,510.818],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.36,-62.7],[-0.19,-33.28],[-0.02,-3.05],[0.16,27.2],[0.33,57.43],[0.36,62.7]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1244.065,510.218],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.42,-1.92]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[2.97,-1],[0,0]],"v":[[5.1,-12.845],[5.26,15.175],[4.88,15.175],[-3.68,15.225],[-4.62,15.235],[-4.79,-14.185],[-5.26,-14.235],[3.95,-12.895]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1248.495,461.703],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1248.9,492.023],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.85,-15.15],[5.03,15.09],[4.65,15.09],[-3.91,15.14],[-4.85,15.15],[-5.03,-15.1],[-4.56,-15.1],[3.44,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.075,522.268],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.25,552.503],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[3.29,-0.07],[0,0],[0,0],[0,0]],"o":[[0,0],[-3.29,-0.04],[0,0],[0,0],[0,0],[0,0]],"v":[[4.925,-2.66],[4.955,2.52],[-4.925,2.66],[-4.955,-2.61],[-4.485,-2.61],[3.515,-2.65]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.35,570.258],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":14,"ty":4,"nm":"side 2 string ul Outlines","parent":7,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-233.124,24.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.285,0.025],[4.285,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.79,597.863],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.215,628.108],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.135,658.343],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.555,688.588],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.485,718.823],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.905,749.068],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.835,779.303],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.255,809.548],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.725,-126.255],[-0.595,-104.335],[-0.425,-74.095],[-0.255,-43.855],[-0.075,-13.615],[0.095,16.625],[0.265,46.865],[0.445,77.105],[0.615,107.345],[0.725,126.255]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1255.05,702.173],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-0.73,-126.625],[-0.6,-104.165],[-0.43,-73.935],[-0.25,-43.685],[-0.08,-13.455],[0.1,16.795],[0.27,47.025],[0.45,77.275],[0.62,107.505],[0.73,126.625]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1245.165,702.063],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.86,-15.145],[5.03,15.095],[3.62,15.105],[-4.38,15.145],[-4.86,15.145],[-5.03,-15.085],[-4.09,-15.095],[4.48,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.595,612.983],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.86,-15.15],[5.03,15.09],[4.65,15.09],[-3.91,15.14],[-4.85,15.15],[-5.03,-15.1],[-4.55,-15.1],[3.45,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.765,643.228],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.85,-15.145],[5.03,15.095],[3.61,15.105],[-4.39,15.145],[-4.86,15.145],[-5.03,-15.085],[-4.09,-15.095],[4.47,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.945,673.463],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.86,-15.15],[5.03,15.09],[4.65,15.09],[-3.91,15.14],[-4.85,15.15],[-5.03,-15.1],[-4.56,-15.1],[3.44,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.115,703.708],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.29,733.943],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.85,-15.15],[5.03,15.09],[4.65,15.09],[-3.91,15.14],[-4.85,15.15],[-5.03,-15.1],[-4.56,-15.1],[3.44,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.465,764.188],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.64,794.423],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.61,-0.04],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.69,-0.15]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[2.69,0.1],[0.61,0.03]],"v":[[4.88,-10.75],[5.01,11.17],[4.63,11.17],[-3.94,11.22],[-4.88,11.23],[-5.01,-11.23],[3.05,-10.86]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1249.445,586.668],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":15,"ty":3,"nm":"side 1 seat PEG","parent":5,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0.647]},"t":0,"s":[-0.098]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":3,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":40,"s":[5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":76,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":113,"s":[-5]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":149,"s":[0]},{"t":186,"s":[5]}],"ix":10},"p":{"a":0,"k":[50,177,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":16,"ty":3,"nm":"side 1 tassle PEG","parent":15,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.333],"y":[0.625]},"t":0,"s":[-0.741]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":6,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":43,"s":[10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":79,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":116,"s":[-10]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":152,"s":[0]},{"t":189,"s":[10]}],"ix":10},"p":{"a":0,"k":[49,347,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":17,"ty":3,"nm":"gold bars 1 PEG","parent":15,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0.571},"t":0,"s":[38.814,264,0],"to":[2.049,0,0],"ti":[-2.864,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":12,"s":[44,264,0],"to":[2.864,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":49,"s":[56,264,0],"to":[0,0,0],"ti":[5.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":85,"s":[44,264,0],"to":[-5.333,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":122,"s":[24,264,0],"to":[0,0,0],"ti":[-1.294,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":158,"s":[44,264,0],"to":[5.333,0,0],"ti":[-2,0,0]},{"t":195,"s":[56,264,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":18,"ty":3,"nm":"gold bars 2 PEG","parent":15,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0.598},"t":0,"s":[40.864,283,0],"to":[1.215,0,0],"ti":[-2.523,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":9,"s":[44,283,0],"to":[2.523,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":46,"s":[56,283,0],"to":[0,0,0],"ti":[5.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":82,"s":[44,283,0],"to":[-5.333,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":119,"s":[24,283,0],"to":[0,0,0],"ti":[-0.843,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":155,"s":[44,283,0],"to":[5.333,0,0],"ti":[-2,0,0]},{"t":192,"s":[56,283,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":19,"ty":3,"nm":"gold bars 3 PEG","parent":15,"sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.333,"y":0.587},"t":0,"s":[42.514,297,0],"to":[0.549,0,0],"ti":[-2.248,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6,"s":[44,297,0],"to":[2.248,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":43,"s":[56,297,0],"to":[0,0,0],"ti":[5.333,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":79,"s":[44,297,0],"to":[-5.333,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":116,"s":[24,297,0],"to":[0,0,0],"ti":[-0.437,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":152,"s":[44,297,0],"to":[5.333,0,0],"ti":[-2,0,0]},{"t":189,"s":[56,297,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":20,"ty":4,"nm":"side 1 seat Outlines","parent":15,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[375.876,323.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.848],[5.847,0],[0,5.848],[-5.848,0]],"o":[[0,5.848],[-5.848,0],[0,-5.848],[5.847,0]],"v":[[10.589,0],[0,10.588],[-10.589,0],[0,-10.588]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.533,269.156],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-9.454],[9.454,0],[0,9.454],[-9.453,0]],"o":[[0,9.454],[-9.453,0],[0,-9.454],[9.454,0]],"v":[[17.118,0],[0,17.118],[-17.117,0],[0,-17.118]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.533,269.156],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[3.882,0],[0,0],[0,3.883],[-3.882,0],[0,0],[0,-3.882]],"o":[[0,0],[-3.882,0],[0,-3.882],[0,0],[3.882,0],[0,3.883]],"v":[[116.5,7.059],[-116.5,7.059],[-123.559,0],[-116.5,-7.059],[116.5,-7.059],[123.559,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[639.622,523.185],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[83.647,0],[0,0],[0,0]],"o":[[0,0],[0,0],[-83.647,0],[0,0]],"v":[[115.883,-17.823],[0.117,17.824],[-0.117,17.824],[-115.883,-17.823]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[639.622,548.421],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.97,1.6],[3.97,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[643.912,267.79],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.71,1.495],[3.71,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[654.512,296.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.975,1.595],[3.975,-1.595]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[666.507,323.895],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.715,1.495],[3.715,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[677.106,352.225],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.97,1.6],[3.97,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[689.102,380],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.71,1.49],[3.71,-1.49]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[699.702,408.33],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.97,1.6],[3.97,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[711.692,436.1],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.71,1.495],[3.71,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[722.292,464.435],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.975,1.6],[3.975,-1.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[734.287,492.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.715,1.495],[3.715,-1.495]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[744.887,520.535],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-52.44,-130.22],[-51.18,-127.08],[-39.88,-99.03],[-28.58,-70.97],[-17.29,-42.93],[-5.99,-14.87],[5.31,13.18],[16.6,41.23],[27.9,69.28],[39.2,97.33],[50.49,125.39],[52.44,130.22]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[699.412,393.13],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-52.13,-129.455],[-51.02,-126.695],[-39.72,-98.645],[-28.43,-70.595],[-17.13,-42.545],[-5.83,-14.485],[5.46,13.565],[16.76,41.615],[28.06,69.675],[39.35,97.715],[50.65,125.765],[52.13,129.455]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[690.091,396.435],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.07,-15.87],[10.23,12.18],[8.92,12.71],[1.5,15.7],[1.07,15.87],[-10.23,-12.18],[-9.36,-12.53],[-1.42,-15.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[649.302,281.92],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.07,-15.87],[10.23,12.19],[9.88,12.33],[1.93,15.52],[1.06,15.87],[-10.23,-12.18],[-9.8,-12.35],[-2.38,-15.34]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[660.602,309.97],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.06,-15.865],[10.23,12.175],[8.93,12.705],[1.5,15.695],[1.07,15.865],[-10.23,-12.185],[-9.36,-12.535],[-1.41,-15.725]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[671.891,338.025],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.07,-15.875],[10.23,12.185],[9.88,12.325],[1.94,15.525],[1.07,15.875],[-10.23,-12.185],[-9.8,-12.355],[-2.37,-15.345]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[683.192,366.075],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.07,-15.87],[10.23,12.18],[8.92,12.71],[1.5,15.69],[1.06,15.87],[-10.23,-12.18],[-9.36,-12.53],[-1.42,-15.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[694.492,394.13],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.06,-15.87],[10.23,12.18],[9.88,12.32],[1.94,15.52],[1.07,15.87],[-10.23,-12.18],[-9.79,-12.36],[-2.37,-15.34]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[705.782,422.18],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.07,-15.875],[10.23,12.175],[8.92,12.705],[1.5,15.695],[1.07,15.875],[-10.23,-12.185],[-9.36,-12.535],[-1.42,-15.735]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[717.081,450.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.23,12.18],[9.88,12.32],[1.93,15.52],[1.06,15.87],[-10.23,-12.17],[-9.8,-12.35],[-2.38,-15.34],[-1.07,-15.87]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[728.382,478.28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-1.06,-15.87],[10.23,12.19],[8.93,12.71],[1.5,15.7],[1.07,15.87],[-10.23,-12.18],[-9.36,-12.53],[-1.41,-15.73]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[739.672,506.33],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.935,-1.68],[3.935,1.68]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[638.154,268.06],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.57],[3.68,1.57]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[625.619,295.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.94,-1.68],[3.94,1.68]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[614.459,323.71],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.565],[3.68,1.565]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[601.919,351.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.935,-1.675],[3.935,1.675]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[590.764,379.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.565],[3.68,1.565]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[578.229,406.885],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.94,-1.68],[3.94,1.68]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[567.069,435],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.57],[3.68,1.57]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[554.529,462.53],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.935,-1.68],[3.935,1.68]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[543.374,490.65],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-3.68,-1.565],[3.68,1.565]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[530.839,518.175],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[54.755,-128.6],[53.605,-125.89],[41.755,-98.07],[29.905,-70.24],[18.065,-42.43],[6.215,-14.6],[-5.625,13.22],[-17.475,41.05],[-29.325,68.87],[-41.175,96.7],[-53.015,124.51],[-54.755,128.6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[588.834,395.78],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[55.265,-129.795],[53.865,-126.505],[42.015,-98.685],[30.165,-70.855],[18.325,-43.025],[6.475,-15.205],[-5.375,12.615],[-17.215,40.435],[-29.065,68.265],[-40.915,96.085],[-52.755,123.915],[-55.265,129.795]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[579.484,392.515],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.465,-11.965],[-1.375,15.845],[-2.675,15.295],[-10.035,12.165],[-10.465,11.985],[1.375,-15.845],[2.245,-15.475],[10.115,-12.115]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[537.194,504.445],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.98],[-1.38,15.85],[-1.73,15.7],[-9.6,12.34],[-10.47,11.97],[1.38,-15.85],[1.81,-15.67],[9.17,-12.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[549.039,476.63],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":2,"cix":2,"bm":0,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.97],[-1.38,15.85],[-2.68,15.3],[-10.04,12.16],[-10.47,11.98],[1.38,-15.85],[2.24,-15.48],[10.12,-12.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[560.889,448.8],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.98],[-1.38,15.85],[-1.73,15.7],[-9.61,12.34],[-10.47,11.97],[1.37,-15.85],[1.81,-15.66],[9.17,-12.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[572.739,420.98],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.975],[-1.37,15.845],[-2.67,15.295],[-10.03,12.165],[-10.47,11.975],[1.38,-15.845],[2.25,-15.475],[10.12,-12.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[584.579,393.155],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.985],[-1.38,15.845],[-1.73,15.695],[-9.6,12.345],[-10.47,11.975],[1.38,-15.845],[1.81,-15.665],[9.17,-12.535]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[596.429,365.335],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.465,-11.965],[-1.375,15.845],[-2.675,15.295],[-10.035,12.165],[-10.465,11.985],[1.375,-15.845],[2.245,-15.475],[10.125,-12.115]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[608.274,337.505],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.975],[-1.38,15.855],[-1.72,15.705],[-9.6,12.345],[-10.47,11.975],[1.38,-15.855],[1.82,-15.665],[9.18,-12.525]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[620.119,309.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[10.47,-11.97],[-1.38,15.85],[-2.67,15.3],[-10.03,12.16],[-10.47,11.97],[1.38,-15.85],[2.25,-15.48],[10.12,-12.12]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[631.969,281.86],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":46,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":21,"ty":4,"nm":"side 1 tassle Outlines","parent":16,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[376.876,26.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.848],[5.848,0],[0,5.848],[-5.848,0]],"o":[[0,5.848],[-5.848,0],[0,-5.848],[5.848,0]],"v":[[10.588,0],[0,10.588],[-10.588,0],[0,-10.588]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[639.622,565.538],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.946,-7.787]],"o":[[0.728,9.497],[0,0]],"v":[[-3.822,-13.648],[3.822,13.648]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[645.564,591.54],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.946,-7.787]],"o":[[-0.728,9.497],[0,0]],"v":[[3.822,-13.648],[-3.822,13.648]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[634.035,591.54],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-9.048,-6.127],[0,0],[-0.353,10.507]],"o":[[-0.307,10.923],[-20.371,15.529],[8.993,-5.446],[0,0]],"v":[[6.009,-20.823],[19.991,5.295],[-19.991,5.295],[-5.285,-19.764]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[639.554,595.185],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":22,"ty":4,"nm":"gold bars 1 Outlines","parent":17,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[381.876,109.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[603.329,482.95],[609.889,482.95],[627.589,482.95],[638.619,482.95],[647.479,482.95],[686.979,482.95]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[4.055,9.265],[4.005,9.145],[-4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[683.564,473.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[4.055,9.265],[4.005,9.145],[-4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[634.564,473.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-4.055,9.265],[-4.005,9.145],[4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[606.564,473.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[610.979,463.89],[630.509,463.89],[679.449,463.89]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.945,-8.94],[18.005,9.47],[7.385,9.47],[-18.005,9.47],[-9.945,-8.94],[-9.585,-9.47],[9.945,-9.47]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.839215746113,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[620.564,473.36],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[20.47,-8.94],[28.53,9.47],[-19.24,9.47],[-20.47,9.47],[-28.53,-8.94],[-28.53,-9.47],[20.41,-9.47]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.894117706897,0.36862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[659.039,473.36],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":23,"ty":4,"nm":"gold bars 2 Outlines","parent":18,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[381.876,90.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[582.709,501.89],[618.009,501.89],[619.479,501.89],[620.299,501.89],[646.389,501.89]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.06,9.265],[-4.06,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[613.949,492.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.06,9.265],[4.06,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[585.949,492.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[646.389,501.89],[655.589,501.89],[703.949,501.89]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.055,9.265],[-4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[700.534,492.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.055,9.265],[-4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[651.534,492.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.055,9.265],[4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[623.534,492.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[590.359,482.83],[696.419,482.83]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[8.85,-9.47],[8.85,-9.06],[0.74,9.47],[-0.73,9.47],[-8.85,-9.06],[-8.85,-9.47]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894117706897,0.737254901961,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[618.739,492.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.945,-9.06],[18.055,9.47],[8.855,9.47],[-17.235,9.47],[-18.055,9.47],[-9.945,-9.06],[-9.945,-9.47],[1.085,-9.47],[9.945,-9.47]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.839215746113,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[637.534,492.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-40.36,-9.795],[-14.97,-9.795],[-4.35,-9.795],[-4.3,-9.675],[-15.33,-9.675],[-33.03,-9.675],[-33.03,-9.265],[-24.91,9.265],[-23.44,9.265],[-22.62,9.265],[3.47,9.265],[12.67,9.265],[61.03,9.265],[61.03,9.795],[34.47,9.795],[22.53,9.795],[3,9.795],[2.64,9.795],[-3.12,9.795],[-14.47,9.795],[-34,9.795],[-34.36,9.795],[-52.06,9.795],[-61.03,9.795],[-61.03,9.265],[-52.91,-9.265],[-52.56,-9.795]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.839215746113,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[642.919,492.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-24.1,-9.675],[-32.96,-9.675],[-33.01,-9.795],[-31.78,-9.795],[15.99,-9.795],[24.84,-9.795],[24.9,-9.265],[33.01,9.265],[33.01,9.795],[32.37,9.795],[32.37,9.265],[-15.99,9.265],[-24.1,-9.265]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.894117706897,0.36862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[671.579,492.625],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":24,"ty":4,"nm":"gold bars 3 Outlines","parent":19,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[381.876,76.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[638.269,521.48],[647.329,521.48],[673.559,521.48],[684.919,521.48],[721.919,521.48]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[4.055,9.265],[3.955,9.025],[-4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[718.504,512.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.055,9.265],[-4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[669.504,512.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.055,9.265],[4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[641.504,512.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[645.919,502.42],[665.449,502.42],[677.389,502.42],[703.949,502.42],[704.589,502.42],[714.389,502.42]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[563.679,521.48],[598.979,521.48],[600.449,521.48],[601.269,521.48],[636.559,521.48],[637.449,521.48],[638.269,521.48]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.06,9.265],[-4.06,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[594.919,512.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-4.06,9.265],[-3.93,8.965],[4.06,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[566.919,512.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[571.329,502.42],[581.889,502.42],[590.859,502.42],[608.559,502.42],[608.919,502.42],[628.449,502.42],[639.799,502.42]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[4.055,9.265],[-4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[632.504,512.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.055,9.265],[4.055,-9.265]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[604.504,512.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[639.799,502.42],[645.559,502.42],[645.919,502.42]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.875,-9],[17.995,9.53],[-17.305,9.53],[-17.995,9.23],[-10.005,-9],[-9.655,-9.53],[0.905,-9.53],[9.875,-9.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.839215746113,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[580.984,511.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[8.85,-9.53],[8.85,-9],[0.74,9.53],[-0.73,9.53],[-8.85,-9],[-8.85,-9.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894117706897,0.737254901961,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[599.709,511.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.945,-9],[18.055,9.53],[-17.235,9.53],[-18.055,9.53],[-9.945,-9],[-9.945,-9.53],[-9.585,-9.53],[9.945,-9.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.839215746113,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[618.504,511.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[8.555,-9.53],[8.555,-9],[0.445,9.53],[-0.445,9.53],[-8.555,-9],[-8.555,-9.53],[2.795,-9.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.894117706897,0.737254901961,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[637.004,511.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[9.945,-9],[18.055,9.53],[-8.175,9.53],[-17.235,9.53],[-18.055,9.53],[-9.945,-9],[-9.945,-9.53],[-9.585,-9.53],[9.945,-9.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.839215746113,0.027450982262,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[655.504,511.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[28.505,9.29],[27.965,9.53],[-9.035,9.53],[-20.395,9.53],[-28.505,-9],[-28.505,-9.53],[-16.565,-9.53],[9.995,-9.53],[10.635,-9.53],[20.435,-9.53],[20.495,-9]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.996078491211,0.894117706897,0.36862745098,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[693.954,511.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":25,"ty":4,"nm":"side 1 base string Outlines","parent":5,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[375.876,450.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.15,0.05],[-2.42,-1.92]],"o":[[0.14,-0.06],[2.97,-0.99],[0,0]],"v":[[-4.825,-0.015],[-4.385,-0.175],[4.825,1.165]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[638.504,147.785],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[639.979,177.045],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[639.399,207.29],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[640.329,237.525],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[639.749,267.77],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.108,-39.675]],"o":[[-0.21,40.48],[0,0]],"v":[[-0.79,-59.578],[-0.108,59.578]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[645.269,208.577],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.988,-39.64]],"o":[[-0.32,39.82],[0,0]],"v":[[-0.68,-60.23],[0.012,60.23]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[635.269,207.89],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.945,0.958],[4.934,-0.958],[3.524,-0.947],[-4.476,-0.907],[-4.946,-0.907],[-4.936,0.958]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.224,268.698],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.134,252.645],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[639.784,192.165],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.85,-15.15],[5.03,15.09],[4.65,15.09],[-3.91,15.14],[-4.85,15.15],[-5.03,-15.1],[-4.56,-15.1],[3.44,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[639.959,222.41],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-2.42,-1.92]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[2.97,-0.99],[0,0]],"v":[[5.1,-12.85],[5.26,15.17],[4.88,15.17],[-3.68,15.22],[-4.62,15.23],[-4.79,-14.19],[-5.26,-14.24],[3.95,-12.9]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[639.379,161.85],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":26,"ty":4,"nm":"side 1 string ul Outlines","parent":15,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[375.876,323.92,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[640.669,298.005],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[640.099,328.25],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[641.019,358.485],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[640.439,388.73],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[641.369,418.965],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[640.789,449.21],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4.28,0.025],[4.28,-0.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[641.719,479.445],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-4,0.02],[4,-0.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[641.139,509.69],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.61,-85.09]],"o":[[0.078,85.344],[0,0]],"v":[[-1.039,-127.717],[0.429,127.717]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[646.23,400.852],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.51,-85.35]],"o":[[0.96,85.293],[0,0]],"v":[[-0.715,-127.822],[0.755,127.822]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[636.024,401.008],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[641.174,434.085],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.15],[5.025,15.09],[4.645,15.09],[-3.915,15.14],[-4.855,15.15],[-5.025,-15.1],[-4.555,-15.1],[3.445,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.654,343.37],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-5.019,-13.192],[-4.871,13.192],[-3.931,13.182],[4.629,13.131],[5.019,13.131],[4.863,-13.192]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.319,284.848],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.15],[5.025,15.09],[4.645,15.09],[-3.915,15.14],[-4.855,15.15],[-5.025,-15.1],[-4.565,-15.1],[3.435,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[641.004,403.85],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.85,-15.145],[5.03,15.095],[3.61,15.105],[-4.39,15.145],[-4.85,15.145],[-5.03,-15.085],[-4.09,-15.095],[4.47,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.829,373.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.86,-15.145],[5.03,15.095],[3.62,15.105],[-4.38,15.145],[-4.85,15.145],[-5.03,-15.085],[-4.09,-15.095],[4.47,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[640.479,313.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.85,-15.15],[5.03,15.09],[4.65,15.09],[-3.91,15.14],[-4.85,15.15],[-5.03,-15.1],[-4.56,-15.1],[3.44,-15.14]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[641.349,464.33],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[4.855,-15.145],[5.025,15.095],[3.615,15.105],[-4.385,15.145],[-4.855,15.145],[-5.025,-15.085],[-4.085,-15.095],[4.475,-15.145]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[641.524,494.565],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":27,"ty":3,"nm":"base PEG","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[947.654,944.19,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":37,"s":[107,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":73,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":110,"s":[107,96,100]},{"t":146,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":28,"ty":4,"nm":"base Outlines","parent":27,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[67.876,-351.08,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.761,-5.338],[5.338,3.76],[-3.76,5.337],[-5.337,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[911.914,572.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.76,-5.337],[5.337,3.761],[-3.761,5.338],[-5.338,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[917.562,584.244],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":3,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.761,-5.338],[5.338,3.76],[-3.76,5.338],[-5.337,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[926.738,591.656],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":3,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.761,-5.337],[5.338,3.761],[-3.76,5.338],[-5.337,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[939.797,590.244],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":3,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.761,-5.338],[5.338,3.76],[-3.76,5.338],[-5.337,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[980.797,522.479],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":3,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.76,-5.338],[5.337,3.76],[-3.761,5.338],[-5.338,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[978.562,536.244],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":3,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.76,-5.338],[5.337,3.76],[-3.761,5.338],[-5.338,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[975.385,548.95],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":3,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.761,-5.338],[5.338,3.76],[-3.76,5.338],[-5.337,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[968.738,561.656],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":3,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.761,-5.337],[5.338,3.761],[-3.76,5.338],[-5.337,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[951.4,583.131],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":3,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.948,-2.077],[2.077,-2.948],[2.948,2.077],[-2.077,2.948]],"o":[[2.948,2.077],[-2.077,2.948],[-2.948,-2.077],[2.077,-2.948]],"v":[[3.761,-5.338],[5.338,3.76],[-3.76,5.337],[-5.337,-3.76]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[961.444,572.597],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":3,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.13,0.18],[2.86,0.33],[0.89,-2.4],[-2.65,-2.3],[-3.18,-3.18],[-0.38,-4.4]],"o":[[-0.12,-0.19],[-1.92,-2.74],[-2.54,-0.29],[-0.67,1.84],[3.76,3.25],[3.06,3.06],[0,0]],"v":[[5.985,-8.805],[5.605,-9.355],[-1.455,-14.715],[-7.805,-11.485],[-5.835,-4.215],[2.635,3.545],[8.485,15.005]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[930.624,260.935],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.02,0.54],[3.35,4.42],[2.12,0.55],[1.25,-1.79],[-1.99,-2.96],[-0.48,-0.81],[-0.47,-8.38]],"o":[[0,0],[-0.01,-0.53],[-0.22,-5.6],[-1.31,-1.74],[-2.11,-0.54],[-2.34,3.35],[0.55,0.82],[4.26,6.98],[0,0]],"v":[[9,20.39],[9,1.32],[8.95,-0.28],[4.41,-16.14],[-0.53,-19.85],[-6.66,-17.9],[-3.88,-4.49],[-2.32,-2.04],[4.41,20.04]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[938.549,253.62],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.13,0.18],[-2.86,0.33],[-0.88,-2.4],[2.65,-2.3],[3.18,-3.18],[0.76,-3.76],[0.05,-0.55]],"o":[[0.12,-0.19],[1.92,-2.74],[2.54,-0.29],[0.68,1.84],[-3.76,3.25],[-2.68,2.68],[-0.11,0.54],[0,0]],"v":[[-5.98,-8.805],[-5.6,-9.355],[1.46,-14.715],[7.8,-11.485],[5.84,-4.215],[-2.63,3.545],[-8.25,13.375],[-8.49,15.005]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[964.369,260.935],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.02,0.54],[-3.34,4.42],[-2.11,0.55],[-1.25,-1.79],[1.99,-2.96],[0.48,-0.81],[0.47,-8.38]],"o":[[0,0],[0.01,-0.53],[0.22,-5.6],[1.32,-1.74],[2.12,-0.54],[2.34,3.35],[-0.55,0.82],[-4.26,6.98],[0,0]],"v":[[-9,20.39],[-9,1.32],[-8.95,-0.28],[-4.42,-16.14],[0.52,-19.85],[6.66,-17.9],[3.88,-4.49],[2.32,-2.04],[-4.42,20.04]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[956.449,253.62],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.14,-0.04],[0.03,0.14],[-2.81,3.52],[-1.37,1.58],[0.95,5.6],[4.93,2.82],[0.04,0.02],[2.6,-0.27],[0,0],[0.05,0],[0.57,-0.05],[1.76,-1.01],[0.16,-0.11],[0.92,-5.41],[-3.72,-4.3],[-1.31,-1.64],[0.88,-4.42],[-0.06,0],[-0.07,0.06],[0.11,0.06]],"o":[[-0.16,0.09],[0.11,0.04],[-0.88,-4.42],[1.32,-1.64],[3.73,-4.3],[-0.95,-5.6],[-0.04,-0.02],[-2.26,-1.29],[0,0],[-0.05,0],[-0.57,-0.05],[-2.01,0.17],[-0.17,0.1],[-4.67,2.86],[-0.95,5.6],[1.38,1.58],[2.81,3.52],[-0.02,0.08],[0.07,0.02],[0.08,-0.06],[0,0]],"v":[[5.19,24.21],[5.31,24.48],[5.51,24.37],[8.6,11.65],[12.92,7.07],[17.38,-8.82],[7.94,-22.35],[7.83,-22.41],[0.36,-24.25],[-0.36,-24.25],[-0.5,-24.26],[-2.21,-24.26],[-7.94,-22.35],[-8.44,-22.04],[-17.38,-8.82],[-12.92,7.07],[-8.6,11.65],[-5.5,24.37],[-5.43,24.49],[-5.18,24.41],[-5.18,24.21]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.919,298.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.46],[5.46,0],[0,5.45],[-5.46,0]],"o":[[0,5.45],[-5.46,0],[0,-5.46],[5.46,0]],"v":[[9.88,0.005],[0,9.885],[-9.88,0.005],[0,-9.885]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.919,291.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-5.65,5.65],[5.65,-5.65]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[953.269,335.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.02,7.02],[7.02,-7.02]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[950.049,333.7],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-7.325,7.32],[7.325,-7.32]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[945.594,330.92],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-6.35,6.35],[6,-6],[6.35,-6.35]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[942.739,328.54],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.21,4.84],[-0.05,0.05],[5.21,-4.84]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[941.709,426.57],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[5.47,-5.03],[5.08,-5.03],[5.07,-5.02],[-0.28,0.08],[-5.47,5.03]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[954.329,426.22],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-5.27,-5.025],[-0.28,-0.275],[5.27,5.025]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[954.329,426.575],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[-4.71,-4.385],[-0.05,-0.045],[4.71,4.385]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[941.709,426.665],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.94,1.72],[-1.92,0.46],[-1.22,-2.36],[0,-2.21],[0.02,-0.5]],"o":[[0.23,-1.94],[0.95,-1.71],[3.25,-0.78],[0.98,1.91],[0,0.53],[0,0]],"v":[[-7.29,3.87],[-5.77,-1.76],[-1.24,-5.22],[6.07,-2],[7.29,4.45],[7.26,6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[962.209,645.83],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.93,1.72],[-1.89,0.46],[-1.2,-2.36],[0,-2.22],[0.02,-0.51]],"o":[[0.24,-1.94],[0.92,-1.71],[3.2,-0.78],[0.96,1.91],[0,0.52],[0,0]],"v":[[-7.175,3.87],[-5.665,-1.76],[-1.215,-5.22],[5.975,-2],[7.175,4.45],[7.145,6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.734,645.83],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.93,1.72],[-1.9,0.46],[-1.2,-2.36],[-0.09,-1.8],[0,0],[0,-0.22],[0.03,-0.69]],"o":[[0.23,-1.94],[0.93,-1.71],[3.21,-0.78],[0.78,1.54],[0,0],[0.01,0.23],[0.02,0.73],[0,0]],"v":[[-7.205,3.87],[-5.695,-1.76],[-1.225,-5.22],[5.985,-2],[7.165,3.14],[7.165,3.19],[7.185,3.87],[7.165,6]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[933.164,645.83],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.08],[-5.04,-15.62]],"o":[[0,0.08],[-0.76,16.39],[0,0]],"v":[[-2.855,-24.39],[-2.865,-24.15],[3.625,24.39]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[955.864,894.34],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.44,-8.37],[-5.43,-6.53]],"o":[[-0.04,8.5],[1.44,8.38],[0,0]],"v":[[-5.585,-24.3],[-4.215,1.12],[5.655,24.3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[973.584,894.93],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.08],[5.04,-15.62]],"o":[[0,0.08],[0.76,16.39],[0,0]],"v":[[2.855,-24.39],[2.865,-24.15],[-3.625,24.39]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[941.344,894.34],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.44,-8.37],[5.43,-6.53]],"o":[[0.03,8.5],[-1.44,8.38],[0,0]],"v":[[5.59,-24.3],[4.22,1.12],[-5.66,24.3]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[923.619,894.93],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.54,0],[0,-6.11],[6.11,0],[1.46,0.71]],"o":[[1.33,-0.57],[6.11,0],[0,6.11],[-1.72,0],[0,0]],"v":[[-7.465,-10.17],[-3.125,-11.06],[7.935,0],[-3.125,11.06],[-7.935,9.96]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[897.334,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.08,-0.1],[6.19,-0.83]],"o":[[-0.07,0.1],[-3.43,4.89],[0,0]],"v":[[7.6,-4.725],[7.38,-4.415],[-7.6,4.725]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[904.759,843.385],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.76,-5.19]],"o":[[6.81,0.36],[0,0]],"v":[[-8.275,-4.515],[8.275,4.515]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[903.664,809.085],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.53,0],[0,6.11],[-6.11,0],[-1.32,-0.56]],"o":[[-1.32,0.56],[-6.11,0],[0,-6.11],[1.53,0],[0,0]],"v":[[7.68,10.19],[3.38,11.06],[-7.68,0],[3.38,-11.06],[7.68,-10.19]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[998.829,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[3.58,5],[0,0],[7.1,0],[3.97,5.56],[0,0],[7.12,0],[3.97,5.53]],"o":[[-6.45,-0.63],[0,0],[-4,5.24],[-7.36,0],[0,0],[-4,5.27],[-7.33,0],[0,0]],"v":[[43.815,4.495],[28.155,-4.565],[27.375,-4.025],[9.965,4.595],[-7.865,-4.595],[-8.585,-4.075],[-26.035,4.595],[-43.815,-4.535]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[956.244,843.705],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-7.22,0],[-3.98,-5.46],[0,0],[-7.22,0],[-4,-5.23],[0,0],[-7.14,0]],"o":[[3.99,-5.39],[7.27,0],[0,0],[3.99,-5.39],[7.09,0],[0,0],[4,-5.29],[0,0]],"v":[[-44.335,4.38],[-26.725,-4.5],[-9.035,4.5],[-8.335,4.38],[9.275,-4.5],[27.395,4.44],[27.795,4.21],[44.335,-4.03]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[956.934,809.04],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.11],[6.11,0],[0,6.11],[-6.11,0]],"o":[[0,6.11],[-6.11,0],[0,-6.11],[6.11,0]],"v":[[11.06,0],[0,11.06],[-11.06,0],[0,-11.06]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[966.209,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.11],[6.11,0],[0,6.11],[-6.11,0]],"o":[[0,6.11],[-6.11,0],[0,-6.11],[6.11,0]],"v":[[11.06,0],[0,11.06],[-11.06,0],[0,-11.06]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[930.209,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":2,"cix":2,"bm":0,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[1030.209,935.36],[866.359,935.36]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[925.739,733.01],[969.039,733.01]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[983.329,870.42],[983.329,870.19],[983.329,869.89]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-12.99,-0.42],[-0.4,0]],"o":[[0,0],[0,34.64],[0.41,0.01],[0,0]],"v":[[-18.585,-24.47],[-18.585,-17.88],[17.365,24.45],[18.585,24.47]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1001.914,894.89],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-5.73,-7.46],[-1.26,-4.4],[-0.08,-3.32],[1.15,-3.47],[2.62,-3.24],[3.6,-0.28],[0.14,0]],"o":[[3,0],[2.34,3.04],[0.78,2.76],[0.1,4.1],[-1.47,4.51],[-5.12,6.33],[-0.15,0.01],[0,0]],"v":[[-11.625,-32.295],[4.755,-21.385],[10.365,-10.245],[11.715,-1.125],[10.025,10.265],[3.635,21.945],[-11.385,32.275],[-11.815,32.295]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[996.554,826.365],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.04,-0.04],[-2.42,-5.11],[-1.08,-0.94],[-4.79,-2.62],[0.4,-7.63],[6.45,-4.09],[-0.04,-0.34],[-0.02,-0.04],[0.11,0.29]],"o":[[-0.05,0.04],[-4.53,3.78],[0.59,1.25],[4.14,3.57],[6.71,3.67],[-0.39,7.63],[-0.29,0.19],[0,0.04],[0.15,0.22],[0,0]],"v":[[-8.95,-32.64],[-9.09,-32.52],[-12.83,-16.57],[-10.32,-13.25],[4.53,-6.5],[14.85,12.63],[3.45,31.51],[2.86,32.3],[2.9,32.42],[3.47,32.31]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[983.329,749.18],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[912.559,870.42],[912.559,870.19],[912.559,869.89]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":46,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[12.88,-0.24],[0.23,0]],"o":[[0,0],[0,35.11],[-0.24,0.01],[0,0]],"v":[[18.585,-24.47],[18.585,-17.88],[-17.885,24.46],[-18.585,24.47]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[893.974,894.89],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":2,"cix":2,"bm":0,"ix":47,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.13,-0.01],[5.44,-6.73],[1.35,-4.67],[0.08,-3.37],[-1.1,-3.42],[-2.79,-3.36],[-3.59,-0.54],[-0.28,0]],"o":[[-0.12,0],[-3.12,0.24],[-2.53,3.13],[-0.8,2.79],[-0.09,4.03],[1.52,4.76],[4.84,5.84],[0.32,0.05],[0,0]],"v":[[11.62,-32.295],[11.25,-32.275],[-4.26,-22.035],[-10.34,-10.355],[-11.72,-1.125],[-10.1,10.065],[-3.33,22.315],[10.91,32.225],[11.81,32.295]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[899.339,826.365],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":2,"cix":2,"bm":0,"ix":48,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[2.58,-5.18],[0.72,-0.75],[0.23,-0.2],[4.8,-2.62],[1.22,-5.69],[-0.1,-1.82],[-3.72,-4.02],[-1.84,-1.17],[0.04,-0.34],[0.12,-0.03],[-0.08,0.21]],"o":[[4.7,3.8],[-0.45,0.91],[-0.21,0.22],[-4.14,3.57],[-5.1,2.79],[-0.39,1.79],[0.28,5.45],[1.47,1.61],[0.29,0.19],[-0.01,0.14],[-0.2,0.06],[0,0]],"v":[[8.76,-32.62],[12.55,-16.37],[10.8,-13.86],[10.14,-13.23],[-4.72,-6.48],[-14.58,7.21],[-15.03,12.65],[-8.63,27.33],[-3.63,31.53],[-3.04,32.32],[-3.28,32.56],[-3.65,32.33]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[912.739,749.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":2,"cix":2,"bm":0,"ix":49,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.31,-1.05],[5.46,0],[0,0],[1.53,4.88],[0,1.24],[0,0],[-6.6,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,-6.56],[0,0]],"o":[[-1.44,5.01],[0,0],[-5.36,0],[-0.35,-1.13],[0,0],[0,-6.6],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6.54,0.07],[0,0],[0,1.14]],"v":[[83.06,3.655],[71.53,12.355],[-71.53,12.355],[-82.99,3.915],[-83.53,0.355],[-83.53,-0.355],[-71.53,-12.355],[-29.66,-12.355],[-9.9,-12.355],[11.87,-12.355],[31.62,-12.355],[71.53,-12.355],[71.66,-12.355],[83.53,-0.355],[83.53,0.355]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.619,931.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":2,"cix":2,"bm":0,"ix":50,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.49,-0.15],[0,-2.7],[1.07,-1.07],[1.62,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,3.24],[-1.07,1.07],[-1.07,0.25],[-0.47,0],[0,0]],"o":[[2.49,0.67],[0,1.62],[-1.07,1.07],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-3.23,0],[0,-1.62],[0.75,-0.76],[0.44,-0.11],[0,0],[0.54,0]],"v":[[37.545,-5.665],[41.885,-0.005],[40.155,4.155],[35.995,5.885],[35.705,5.885],[20.375,5.885],[5.375,5.885],[-3.415,5.885],[-18.415,5.885],[-35.065,5.885],[-36.005,5.885],[-41.885,-0.005],[-40.155,-4.155],[-37.375,-5.715],[-36.005,-5.885],[35.995,-5.885]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,864.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 51","np":2,"cix":2,"bm":0,"ix":51,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.1,-0.25],[0.45,0],[0,0],[0.34,0.07],[0,2.89],[-1.07,1.07],[-0.89,0.29],[-0.63,0],[0,0],[0,0],[0,-3.23],[1.07,-1.07]],"o":[[-0.42,0.1],[0,0],[-0.35,0],[-2.75,-0.48],[0,-1.62],[0.65,-0.65],[0.57,-0.19],[0,0],[0,0],[3.24,0],[0,1.62],[-0.77,0.77]],"v":[[37.295,5.735],[35.995,5.885],[-36.005,5.885],[-37.035,5.785],[-41.885,-0.005],[-40.155,-4.155],[-37.815,-5.595],[-36.005,-5.885],[-23.655,-5.885],[35.995,-5.885],[41.885,-0.005],[40.155,4.155]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,788.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 52","np":2,"cix":2,"bm":0,"ix":52,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.79,-0.38],[1.2,0],[0,0],[0.96,0.42],[0,3.16],[-1.41,1.4],[-2.13,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,-4.27],[1.41,-1.41]],"o":[[-1.02,0.49],[0,0],[-1.11,0],[-2.73,-1.21],[0,-2.14],[1.41,-1.41],[0,0],[0,0],[0,0],[0,0],[0,0],[4.27,0],[0,2.14],[-0.61,0.62]],"v":[[26.305,6.995],[22.945,7.765],[-22.945,7.765],[-26.065,7.105],[-30.705,-0.005],[-28.425,-5.485],[-22.945,-7.765],[-21.885,-7.765],[-7.295,-7.765],[7.295,-7.765],[21.885,-7.765],[22.945,-7.765],[30.705,-0.005],[28.425,5.485]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,709.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 53","np":2,"cix":2,"bm":0,"ix":53,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[954.919,630.31],[954.919,649.7],[954.919,650.28],[954.919,700.9]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 54","np":2,"cix":2,"bm":0,"ix":54,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[940.329,630.47],[940.329,648.97]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 55","np":2,"cix":2,"bm":0,"ix":55,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[940.329,649.02],[940.329,651.83],[940.329,700.75]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 56","np":2,"cix":2,"bm":0,"ix":56,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[969.509,630.12],[969.509,650.28],[969.509,701.09]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 57","np":2,"cix":2,"bm":0,"ix":57,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0]],"v":[[925.739,631.02],[925.739,649.7],[925.739,700.2]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 58","np":2,"cix":2,"bm":0,"ix":58,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.68,0.27],[-1.46,-1.03],[1.33,-2.82],[0.22,-0.31],[2.95,2.07],[-2.07,2.95]],"o":[[1.63,-0.27],[2.64,1.86],[-0.16,0.33],[-2.08,2.95],[-2.95,-2.08],[1.05,-1.5]],"v":[[-0.965,-6.79],[3.845,-5.69],[5.995,2.44],[5.425,3.41],[-3.675,4.99],[-5.255,-4.11]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[909.004,559.89],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 59","np":2,"cix":2,"bm":0,"ix":59,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,6.32],[0,0],[-6.28,0]],"o":[[-6.28,0],[0,0],[0,-6.32],[0,0]],"v":[[5.705,11.825],[-5.705,0.335],[-5.705,-0.335],[5.705,-11.825]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[987.094,537.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 60","np":2,"cix":2,"bm":0,"ix":60,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,6.6],[0,0],[-6.6,0]],"o":[[-6.6,0],[0,0],[0,-6.6],[0,0]],"v":[[6,12.355],[-6,0.355],[-6,-0.355],[6,-12.355]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[969.389,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 61","np":2,"cix":2,"bm":0,"ix":61,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,6.6],[0,0],[-6.6,0]],"o":[[-6.6,0],[0,0],[0,-6.6],[0,0]],"v":[[6,12.355],[-6,0.355],[-6,-0.355],[6,-12.355]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[950.389,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 62","np":2,"cix":2,"bm":0,"ix":62,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,6.6],[0,0],[-6.6,0]],"o":[[-6.6,0],[0,0],[0,-6.6],[0,0]],"v":[[6,12.355],[-6,0.355],[-6,-0.355],[6,-12.355]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[930.389,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 63","np":2,"cix":2,"bm":0,"ix":63,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,6.6],[0,0],[-6.6,0]],"o":[[-6.6,0],[0,0],[0,-6.6],[0,0]],"v":[[6,12.355],[-6,0.355],[-6,-0.355],[6,-12.355]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[910.389,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 64","np":2,"cix":2,"bm":0,"ix":64,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[5.64,-0.97],[0.7,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,6.6],[0,0],[-6.6,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.64,-0.11],[0,-5.93],[0,0]],"o":[[-0.66,0.12],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-6.6,0],[0,0],[0,-6.6],[0,0],[0,0],[0,0],[0,0],[0,0],[0.67,0],[5.67,0.94],[0,0],[0,5.9]],"v":[[45.275,12.175],[43.235,12.355],[41.725,12.355],[27.765,12.355],[8.765,12.355],[-11.235,12.355],[-31.235,12.355],[-41.725,12.355],[-43.235,12.355],[-55.235,0.355],[-55.235,-0.355],[-43.235,-12.355],[-31.235,-12.355],[-11.235,-12.355],[8.765,-12.355],[27.765,-12.355],[43.235,-12.355],[45.205,-12.185],[55.235,-0.355],[55.235,0.355]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 65","np":2,"cix":2,"bm":0,"ix":65,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.68,-0.74],[-1.92,-3.12],[0,0]],"o":[[0.74,0.73],[2.75,3],[10.93,17.89],[0,0]],"v":[[-10.015,-23.825],[-7.875,-21.615],[-0.915,-12.385],[8.345,23.825]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[915.914,574.715],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 66","np":2,"cix":2,"bm":0,"ix":66,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[-20.83,20.47],[0,0]],"v":[[10.415,-23.825],[-7.945,23.825]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[978.934,574.715],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 67","np":2,"cix":2,"bm":0,"ix":67,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-11.64],[0,-17.65],[0,0]],"o":[[7.06,0],[0,14.83],[0,14.47],[0,0]],"v":[[-8.115,-32.12],[8.115,-15.18],[-2.825,15.18],[4.235,32.12]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[960.624,476.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":2,"cix":2,"bm":0,"ix":68,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-11.64],[0,-17.65],[0,0]],"o":[[-7.06,0],[0,14.83],[0,14.47],[0,0]],"v":[[8.115,-32.12],[-8.115,-15.18],[2.825,15.18],[-4.235,32.12]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[934.624,476.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 69","np":2,"cix":2,"bm":0,"ix":69,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,4.27],[-1.41,1.4],[-2.13,0],[0,0],[0,-4.27],[1.41,-1.41],[2.14,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-4.27,0],[0,-2.14],[1.41,-1.41],[0,0],[4.27,0],[0,2.14],[-1.4,1.41],[0,0],[0,0],[0,0],[0,0]],"v":[[-21.885,7.765],[-22.945,7.765],[-30.705,-0.005],[-28.425,-5.485],[-22.945,-7.765],[22.945,-7.765],[30.705,-0.005],[28.425,5.485],[22.945,7.765],[21.885,7.765],[7.295,7.765],[-7.295,7.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,622.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 70","np":2,"cix":2,"bm":0,"ix":70,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.14,-0.01],[0,-4.13],[1.41,-1.41],[2.14,0],[0,0],[0,4.27],[-1.41,1.4],[-1.96,0.11],[-0.14,0],[0,0]],"o":[[4.08,0.22],[0,2.14],[-1.4,1.41],[0,0],[-4.27,0],[0,-2.14],[1.32,-1.32],[0.14,-0.01],[0,0],[0.14,0]],"v":[[23.365,-7.755],[30.705,-0.005],[28.425,5.485],[22.945,7.765],[-22.945,7.765],[-30.705,-0.005],[-28.425,-5.485],[-23.365,-7.755],[-22.945,-7.765],[22.945,-7.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,606.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 71","np":2,"cix":2,"bm":0,"ix":71,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,-4.27],[1.41,-1.41],[2.14,0],[0,0],[0,4.27],[-1.41,1.4],[-2.13,0],[0,0]],"o":[[0,0],[4.27,0],[0,2.14],[-1.4,1.41],[0,0],[-4.27,0],[0,-2.14],[1.41,-1.41],[0,0],[0,0]],"v":[[17.235,-7.765],[22.945,-7.765],[30.705,-0.005],[28.425,5.485],[22.945,7.765],[-22.945,7.765],[-30.705,-0.005],[-28.425,-5.485],[-22.945,-7.765],[-17.235,-7.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,516.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 72","np":2,"cix":2,"bm":0,"ix":72,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,3.2],[-1.05,1.05],[-1.6,0],[0,0],[0,-3.2],[1.06,-1.05],[1.6,0],[0,0]],"o":[[0,0],[-3.2,0],[0,-1.6],[1.05,-1.05],[0,0],[3.2,0],[0,1.6],[-1.06,1.05],[0,0],[0,0]],"v":[[-4.885,5.82],[-9.355,5.82],[-15.175,0],[-13.465,-4.11],[-9.355,-5.82],[9.355,-5.82],[15.175,0],[13.465,4.11],[9.355,5.82],[4.885,5.82]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,438.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 73","np":2,"cix":2,"bm":0,"ix":73,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.54,-0.27],[0.95,0],[0,0],[0,0],[0,0],[0.61,0.23],[0,2.51],[-1.05,1.05],[-0.95,0.28],[-0.56,0],[0,0],[0,0],[0,0],[-0.74,-0.35],[0,-2.34],[1.06,-1.05]],"o":[[-0.8,0.42],[0,0],[0,0],[0,0],[-0.69,0],[-2.24,-0.81],[0,-1.6],[0.68,-0.68],[0.52,-0.15],[0,0],[0,0],[0,0],[0.86,0],[2,0.91],[0,1.6],[-0.43,0.42]],"v":[[12.005,5.17],[9.355,5.82],[1.235,5.82],[-1.205,5.82],[-9.355,5.82],[-11.325,5.47],[-15.175,0],[-13.465,-4.11],[-10.975,-5.59],[-9.355,-5.82],[-0.705,-5.82],[1.435,-5.82],[9.355,-5.82],[11.775,-5.28],[15.175,0],[13.465,4.11]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,426.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 74","np":2,"cix":2,"bm":0,"ix":74,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.6,0],[0,0],[0,3.2],[-1.05,1.05],[-1.6,0],[0,0],[0,-3.2],[1.06,-1.05]],"o":[[0,0],[-3.2,0],[0,-1.6],[1.05,-1.05],[0,0],[3.2,0],[0,1.6],[-1.06,1.05]],"v":[[9.355,5.82],[-9.355,5.82],[-15.175,0],[-13.465,-4.11],[-9.355,-5.82],[9.355,-5.82],[15.175,0],[13.465,4.11]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,414.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 75","np":2,"cix":2,"bm":0,"ix":75,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.31,-1.2],[0,-0.86],[1.76,-1.76],[2.66,0],[0,0],[0,0],[0,0],[0,0],[0.91,0.29],[1.2,1.48],[0.36,1.27],[0,0.92],[-1.76,1.76],[-1.39,0.49],[-0.08,0.02],[-1.02,0],[0,0],[0,0],[-1.09,-0.43],[-0.03,-0.01],[-1.07,-1.43]],"o":[[0.22,0.79],[0,2.67],[-1.76,1.76],[0,0],[0,0],[0,0],[0,0],[-1,0],[-1.85,-0.57],[-0.81,-1],[-0.25,-0.85],[0,-2.66],[1.02,-1.02],[0.09,-0.03],[0.93,-0.3],[0,0],[0,0],[1.23,0],[0.04,0.01],[1.68,0.68],[0.72,0.97]],"v":[[11.315,-2.485],[11.645,-0.005],[8.795,6.855],[1.945,9.705],[1.585,9.705],[-0.005,9.705],[-1.585,9.705],[-1.945,9.705],[-4.815,9.265],[-9.485,6.095],[-11.265,2.655],[-11.645,-0.005],[-8.795,-6.855],[-5.135,-9.165],[-4.885,-9.245],[-1.945,-9.705],[1.115,-9.705],[1.945,-9.705],[5.445,-9.045],[5.545,-9.005],[9.735,-5.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,332.245],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 76","np":2,"cix":2,"bm":0,"ix":76,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[14.5,0.39],[0,-7.16],[0,-6.36],[0,-10.24],[-16.71,0],[0,0],[0,8.47],[0,6.7],[0,7.41]],"o":[[-14.51,0.39],[0,7.41],[0,6.7],[0,8.47],[0,0],[16.7,0],[0,-10.24],[0,-6.36],[0,-7.15]],"v":[[0.005,-32.635],[-17.475,-19.245],[-11.115,-4.415],[-19.585,14.995],[-0.295,32.635],[0.295,32.635],[19.585,14.995],[11.115,-4.415],[17.465,-19.245]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,374.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 77","np":2,"cix":2,"bm":0,"ix":77,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.55,0]],"o":[[-0.51,-0.01],[0,0]],"v":[[0.795,0.01],[-0.795,-0.01]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[946.834,341.96],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 78","np":2,"cix":2,"bm":0,"ix":78,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.51,-0.01]],"o":[[-0.54,0],[0,0]],"v":[[0.79,-0.01],[-0.79,0.01]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[948.419,341.96],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 79","np":2,"cix":2,"bm":0,"ix":79,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.54,0],[0,-6.11],[6.11,0],[1.46,0.71],[0,0],[-0.09,4.03],[-0.8,2.79],[0,0]],"o":[[6.11,0],[0,6.11],[-1.72,0],[0,0],[-1.1,-3.42],[0.08,-3.37],[0,0],[1.33,-0.57]],"v":[[-2.19,-11.06],[8.87,0],[-2.19,11.06],[-7,9.96],[-7.16,10.01],[-8.78,-1.18],[-7.4,-10.41],[-6.53,-10.17]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[896.399,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 80","np":2,"cix":2,"bm":0,"ix":80,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.92,-3.12],[0.22,-0.31],[2.95,2.07],[-2.07,2.95],[-1.68,0.27]],"o":[[-0.16,0.33],[-2.08,2.95],[-2.95,-2.08],[1.05,-1.5],[2.75,3]],"v":[[6.66,2.305],[6.09,3.275],[-3.01,4.855],[-4.59,-4.245],[-0.3,-6.925]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[908.339,560.025],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 81","np":2,"cix":2,"bm":0,"ix":81,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.6,0],[0,0],[0,-6.6],[0,0],[-6.6,0],[0,0],[0,0],[0,6.6],[0,0]],"o":[[0,0],[-6.6,0],[0,0],[0,6.6],[0,0],[0,0],[-6.6,0],[0,0],[0,-6.6]],"v":[[0,-12.355],[12,-12.355],[0,-0.355],[0,0.355],[12,12.355],[1.51,12.355],[0,12.355],[-12,0.355],[-12,-0.355]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[904.389,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 82","np":2,"cix":2,"bm":0,"ix":82,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.4,-1.73],[0.28,-1.62],[2.4,-0.42],[0,0],[0,0],[0.57,-0.19],[0,0],[-0.01,0.14],[0.29,0.19],[1.47,1.61],[0,0],[-0.75,1.25],[-1.45,-0.1],[-1.48,-0.73],[-1.4,-0.07]],"o":[[1.33,0.96],[-0.28,1.61],[0,0],[0,0],[-0.63,0],[0,0],[0.12,-0.03],[0.04,-0.34],[-1.84,-1.17],[0,0],[-0.77,-1.23],[0.75,-1.24],[1.65,0.13],[1.26,0.63],[2.96,0.16]],"v":[[9.81,-2.38],[11.57,1.95],[8.39,5.73],[8.39,6.08],[-3.96,6.08],[-5.77,6.37],[-6.12,5.38],[-5.88,5.14],[-6.47,4.35],[-11.47,0.15],[-11.06,-0.23],[-11.1,-4.37],[-7.42,-6.27],[-2.92,-4.3],[1.14,-3.24]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[915.579,776.34],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 83","np":2,"cix":2,"bm":0,"ix":83,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.44,-8.37],[5.43,-6.53],[0,0],[0,0],[0,0],[0,35.11],[0,0],[0,0],[0,0]],"o":[[0.03,8.5],[-1.44,8.38],[0,0],[0,0],[0,0],[12.88,-0.24],[0,0],[0,0],[0,0],[0,0]],"v":[[26.525,-24.205],[25.155,1.215],[15.275,24.395],[15.275,24.645],[-26.595,24.645],[-26.595,24.515],[9.875,-17.825],[9.875,-24.415],[9.875,-24.645],[26.525,-24.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[902.684,894.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 84","np":2,"cix":2,"bm":0,"ix":84,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.44,1.88],[0,0],[-5.1,2.79],[-4.14,3.57],[-0.21,0.22],[-0.81,-2.4],[2.12,-1.73],[2.57,-0.92],[1.75,-3.86],[3,-1.48],[1.03,2.61]],"o":[[0,0],[1.22,-5.69],[4.8,-2.62],[0.23,-0.2],[2.66,-1.87],[0.86,2.6],[-2.12,1.72],[-3.99,1.43],[-1.39,3.04],[-2.51,1.25],[-0.7,-1.77]],"v":[[-15.845,6.475],[-16.195,6.405],[-6.335,-7.285],[8.525,-14.035],[9.185,-14.665],[15.485,-11.465],[12.785,-4.245],[5.415,-0.765],[-4.545,6.565],[-8.895,15.285],[-15.645,12.065]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[914.354,749.965],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 85","np":2,"cix":2,"bm":0,"ix":85,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.6,0],[0,0],[0,-6.6],[0,0],[-6.6,0],[0,0],[0,6.6],[0,0]],"o":[[0,0],[-6.6,0],[0,0],[0,6.6],[0,0],[-6.6,0],[0,0],[0,-6.6]],"v":[[-4,-12.355],[16,-12.355],[4,-0.355],[4,0.355],[16,12.355],[-4,12.355],[-16,0.355],[-16,-0.355]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[920.389,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 86","np":2,"cix":2,"bm":0,"ix":86,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.11,0],[0,-6.11],[6.11,0],[0,6.11]],"o":[[6.11,0],[0,6.11],[-6.11,0],[0,-6.11]],"v":[[0,-11.06],[11.06,0],[0,11.06],[-11.06,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[930.209,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 87","np":2,"cix":2,"bm":0,"ix":87,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.78,1.54],[3.21,-0.78],[0.93,-1.71],[0.23,-1.94],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-0.09,-1.8],[-1.2,-2.36],[-1.9,0.46],[-0.93,1.72],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.295,-9.415],[7.295,9.085],[6.115,3.945],[-1.095,0.725],[-5.565,4.185],[-7.075,9.815],[-7.295,9.815],[-7.295,-8.865],[-7.295,-9.815],[7.295,-9.815]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[933.034,639.885],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 88","np":2,"cix":2,"bm":0,"ix":88,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.93,1.72],[-1.9,0.46],[-1.2,-2.36],[-0.09,-1.8],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0.23,-1.94],[0.93,-1.71],[3.21,-0.78],[0.78,1.54],[0,0],[0,0],[0,0]],"v":[[7.295,30.065],[7.295,30.855],[-7.295,30.855],[-7.295,29.515],[-7.295,-20.985],[-7.075,-20.985],[-5.565,-26.615],[-1.095,-30.075],[6.115,-26.855],[7.295,-21.715],[7.295,-21.665],[7.295,-18.855]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[933.034,670.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 89","np":2,"cix":2,"bm":0,"ix":89,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,2.51],[-1.05,1.05],[-0.95,0.28]],"o":[[0,0],[0,0],[0,0],[-2.24,-0.81],[0,-1.6],[0.68,-0.68],[0,0]],"v":[[-0.055,-4.14],[4.605,0.2],[-0.555,4.99],[-0.755,5.53],[-4.605,0.06],[-2.895,-4.05],[-0.405,-5.53]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[937.054,426.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 90","np":2,"cix":2,"bm":0,"ix":90,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[5.04,-15.62],[0,0],[0,0],[0,0],[-1.44,8.38],[0.03,8.5],[0,0]],"o":[[0.76,16.39],[0,0],[0,0],[0,0],[5.43,-6.53],[1.44,-8.37],[0,0],[0,0]],"v":[[12.745,-24.645],[6.255,23.895],[6.255,24.645],[-13.505,24.645],[-13.505,24.395],[-3.625,1.215],[-2.255,-24.205],[-2.255,-24.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[931.464,894.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 91","np":2,"cix":2,"bm":0,"ix":91,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.47,-8.38],[0,0],[1.76,-1.01],[0.16,-0.11],[0,0],[3.06,3.06],[3.76,3.25],[-0.67,1.84],[-2.54,-0.29],[-1.92,-2.74]],"o":[[0,0],[-2.01,0.17],[-0.17,0.1],[0,0],[-0.38,-4.4],[-3.18,-3.18],[-2.65,-2.3],[0.89,-2.4],[2.86,0.33],[4.26,6.98]],"v":[[9.035,12.42],[11.785,13.09],[6.055,15],[5.555,15.31],[5.185,14.7],[-0.665,3.24],[-9.135,-4.52],[-11.105,-11.79],[-4.755,-15.02],[2.305,-9.66]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[933.924,261.24],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 92","np":2,"cix":2,"bm":0,"ix":92,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.61,0.23],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.69,0],[0,0],[0,0],[0,0]],"v":[[5.06,1.59],[5.06,2.84],[-3.09,2.84],[-5.06,2.49],[-4.86,1.95],[0.3,-2.84]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[941.359,429.46],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 93","np":2,"cix":2,"bm":0,"ix":93,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[-0.56,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0.52,-0.15],[0,0]],"v":[[5.135,-2.98],[5.135,-1.91],[-0.125,2.98],[-4.785,-1.36],[-5.135,-2.75],[-3.515,-2.98]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[941.784,423.64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 94","np":2,"cix":2,"bm":0,"ix":94,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.26,6.98],[0.55,0.82],[-2.34,3.35],[-2.11,-0.54],[-1.31,-1.74],[-0.22,-5.6],[0.01,-0.53],[0,0],[0,0],[0.57,-0.05],[0,0]],"o":[[-0.48,-0.81],[-1.99,-2.96],[1.25,-1.79],[2.12,0.55],[3.35,4.42],[-0.02,0.54],[0,0],[0,0],[-0.57,-0.05],[0,0],[-0.47,-8.38]],"v":[[-2.295,-2.2],[-3.855,-4.65],[-6.635,-18.06],[-0.505,-20.01],[4.435,-16.3],[8.975,-0.44],[8.925,1.16],[8.925,20.23],[8.895,20.55],[7.185,20.55],[4.435,19.88]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[938.524,253.78],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 95","np":2,"cix":2,"bm":0,"ix":95,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0.92],[-1.76,1.76],[-1.39,0.49],[-0.07,0.06],[-1.02,0]],"o":[[0,0],[0,0],[-0.25,-0.85],[0,-2.66],[1.02,-1.02],[0.07,0.02],[0.93,-0.3],[0,0]],"v":[[6.38,-6.18],[-5.97,6.17],[-6,6.18],[-6.38,3.52],[-3.53,-3.33],[0.13,-5.64],[0.38,-5.72],[3.32,-6.18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[942.359,328.72],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 96","np":2,"cix":2,"bm":0,"ix":96,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.09,-0.43],[0,0],[0,0],[0,0],[0.36,1.27],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[-0.81,-1],[0,0],[0,0],[0,0],[1.23,0]],"v":[[8.355,-7.24],[8.205,-6.84],[-6.445,7.8],[-6.575,7.9],[-8.355,4.46],[-8.325,4.45],[4.025,-7.9],[4.855,-7.9]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[944.714,330.44],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 97","np":2,"cix":2,"bm":0,"ix":97,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[6.195,-0.18],[1.005,4.77],[1.005,5.82],[-1.435,5.82],[-1.435,4.57],[-6.195,0.14],[-0.935,-4.75],[-0.935,-5.82],[1.205,-5.82],[1.205,-4.93]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.854,426.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 98","np":2,"cix":2,"bm":0,"ix":98,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.96,1.91],[3.2,-0.78],[0.92,-1.71],[0.24,-1.94],[0,0],[0.01,0.23],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-2.22],[-1.2,-2.36],[-1.89,0.46],[-0.93,1.72],[0,0],[0,-0.22],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[7.295,9.525],[7.295,10.105],[7.285,10.105],[6.085,3.655],[-1.105,0.435],[-5.555,3.895],[-7.065,9.525],[-7.275,9.525],[-7.295,8.845],[-7.295,8.795],[-7.295,-9.705],[-7.295,-10.105],[7.295,-10.105],[7.295,-9.865]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,640.175],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 99","np":2,"cix":2,"bm":0,"ix":99,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.22],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.02,0.73],[0,0],[-0.93,1.72],[-1.89,0.46],[-1.2,-2.36]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.03,-0.69],[0,0],[0.24,-1.94],[0.92,-1.71],[3.2,-0.78],[0.96,1.91]],"v":[[7.285,-20.405],[7.295,-20.405],[7.295,30.215],[7.295,30.855],[-7.295,30.855],[-7.295,30.065],[-7.295,-18.855],[-7.275,-20.985],[-7.065,-20.985],[-5.555,-26.615],[-1.105,-30.075],[6.085,-26.855]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,670.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 100","np":2,"cix":2,"bm":0,"ix":100,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.46,0],[0,-5.46],[5.46,0],[0,5.45]],"o":[[5.46,0],[0,5.45],[-5.46,0],[0,-5.46]],"v":[[0,-9.885],[9.88,0.005],[0,9.885],[-9.88,0.005]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.919,291.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 101","np":2,"cix":2,"bm":0,"ix":101,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.6,0],[0,0],[0,-6.6],[0,0],[-6.6,0],[0,0],[0,6.6],[0,0]],"o":[[0,0],[-6.6,0],[0,0],[0,6.6],[0,0],[-6.6,0],[0,0],[0,-6.6]],"v":[[-4,-12.355],[16,-12.355],[4,-0.355],[4,0.355],[16,12.355],[-4,12.355],[-16,0.355],[-16,-0.355]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[940.389,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 102","np":2,"cix":2,"bm":0,"ix":102,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.07,-1.43],[0,0],[0,0],[0,0],[1.2,1.48],[0,0],[0,0],[0,0],[-0.03,-0.01]],"o":[[0,0],[0,0],[0,0],[-1.85,-0.57],[0,0],[0,0],[0,0],[0.04,0.01],[1.68,0.68]],"v":[[9.61,-5.875],[9.32,-5.675],[-4.72,8.365],[-4.94,9.155],[-9.61,5.985],[-9.48,5.885],[5.17,-8.755],[5.32,-9.155],[5.42,-9.115]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.749,332.355],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 103","np":2,"cix":2,"bm":0,"ix":103,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.31,-1.2],[0,0],[0,0],[0,0],[0,0],[0,0],[0.91,0.29],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[-1,0],[0,0],[0,0],[0,0],[0.72,0.97]],"v":[[8.065,-4.455],[8.045,-4.445],[-3.255,6.855],[-3.255,7.735],[-4.835,7.735],[-5.195,7.735],[-8.065,7.295],[-7.845,6.505],[6.195,-7.535],[6.485,-7.735]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[950.874,334.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 104","np":2,"cix":2,"bm":0,"ix":104,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-0.86],[1.76,-1.76],[2.66,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0.22,0.79],[0,2.67],[-1.76,1.76],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[5.495,-6.095],[5.825,-3.615],[2.975,3.245],[-3.875,6.095],[-4.235,6.095],[-5.825,6.095],[-5.825,5.215],[5.475,-6.085]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[953.444,335.855],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 105","np":2,"cix":2,"bm":0,"ix":105,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.74,-0.35],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[0.86,0]],"v":[[5.17,-2.28],[-0.18,2.82],[-5.17,-1.93],[-5.17,-2.82],[2.75,-2.82]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[954.229,423.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 106","np":2,"cix":2,"bm":0,"ix":106,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.04,-15.62],[0,0],[0,0],[0,0],[0.76,16.39],[0,0]],"o":[[0,0],[0,0],[0,0],[5.04,-15.62],[0,0],[-0.76,16.39]],"v":[[10.885,23.895],[10.885,24.645],[-10.885,24.645],[-10.885,23.895],[-4.395,-24.645],[4.395,-24.645]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[948.604,894.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 107","np":2,"cix":2,"bm":0,"ix":107,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.95,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-0.8,0.42],[0,0],[0,0],[0,0],[0,0]],"v":[[5.355,2.3],[5.385,2.35],[2.735,3],[-5.385,3],[-5.385,1.95],[-0.195,-3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[954.244,429.3],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 108","np":2,"cix":2,"bm":0,"ix":108,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-3.2],[1.06,-1.05],[1.6,0],[0,0],[0,0],[0,0],[0,3.2],[-1.05,1.05],[-1.6,0]],"o":[[3.2,0],[0,1.6],[-1.06,1.05],[0,0],[0,0],[0,0],[-3.2,0],[0,-1.6],[1.05,-1.05],[0,0]],"v":[[9.355,-5.82],[15.175,0],[13.465,4.11],[9.355,5.82],[4.885,5.82],[-4.885,5.82],[-9.355,5.82],[-15.175,0],[-13.465,-4.11],[-9.355,-5.82]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,438.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 109","np":2,"cix":2,"bm":0,"ix":109,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-2.34],[1.06,-1.05],[0.54,-0.27],[0,0],[0,0]],"o":[[2,0.91],[0,1.6],[-0.43,0.42],[0,0],[0,0],[0,0]],"v":[[0.975,-5.225],[4.375,0.055],[2.665,4.165],[1.205,5.225],[1.175,5.175],[-4.375,-0.125]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[958.424,426.425],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 110","np":2,"cix":2,"bm":0,"ix":110,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-3.2],[1.06,-1.05],[1.6,0],[0,0],[0,3.2],[-1.05,1.05],[-1.6,0]],"o":[[3.2,0],[0,1.6],[-1.06,1.05],[0,0],[-3.2,0],[0,-1.6],[1.05,-1.05],[0,0]],"v":[[9.355,-5.82],[15.175,0],[13.465,4.11],[9.355,5.82],[-9.355,5.82],[-15.175,0],[-13.465,-4.11],[-9.355,-5.82]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,414.48],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 111","np":2,"cix":2,"bm":0,"ix":111,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.02,0.54],[-3.34,4.42],[-2.11,0.55],[-1.25,-1.79],[1.99,-2.96],[0.48,-0.81],[0.47,-8.38],[0,0],[0.05,-0.55],[0,0],[2.6,-0.27],[0,0],[0.05,0],[0,0],[0,0]],"o":[[0.22,-5.6],[1.32,-1.74],[2.12,-0.54],[2.34,3.35],[-0.55,0.82],[-4.26,6.98],[0,0],[-0.11,0.54],[0,0],[-2.26,-1.29],[0,0],[-0.05,0],[0,0],[0,0],[0.01,-0.53]],"v":[[-8.935,-1.365],[-4.405,-17.225],[0.535,-20.935],[6.675,-18.985],[3.895,-5.575],[2.335,-3.125],[-4.405,18.955],[-0.315,19.605],[-0.555,21.235],[-0.685,21.475],[-8.155,19.635],[-8.875,19.635],[-9.015,19.625],[-8.985,19.305],[-8.985,0.235]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[956.434,254.705],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 112","np":2,"cix":2,"bm":0,"ix":112,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-10.24],[16.7,0],[0,0],[0,8.47],[0,6.7],[0,7.41],[-14.51,0.39],[0,-7.15],[0,-6.36]],"o":[[0,8.47],[0,0],[-16.71,0],[0,-10.24],[0,-6.36],[0,-7.16],[14.5,0.39],[0,7.41],[0,6.7]],"v":[[19.585,14.995],[0.295,32.635],[-0.295,32.635],[-19.585,14.995],[-11.115,-4.415],[-17.475,-19.245],[0.005,-32.635],[17.465,-19.245],[11.115,-4.415]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,374.605],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 113","np":2,"cix":2,"bm":0,"ix":113,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,14.47],[0,14.83],[-7.06,0],[0,0],[0,-11.64],[0,-17.65]],"o":[[0,0],[0,0],[0,-17.65],[0,-11.64],[0,0],[7.06,0],[0,14.83],[0,14.47]],"v":[[17.235,32.12],[-17.235,32.12],[-10.175,15.18],[-21.115,-15.18],[-4.885,-32.12],[4.885,-32.12],[21.115,-15.18],[10.175,15.18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,476.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 114","np":2,"cix":2,"bm":0,"ix":114,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,5.45],[5.46,0],[0,-5.46],[-5.46,0]],"o":[[0,-5.46],[-5.46,0],[0,5.45],[5.46,0]],"v":[[9.88,-6.995],[0,-16.885],[-9.88,-6.995],[0,2.885]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0.11,0.04],[0,0],[0.04,0.01],[1.23,0],[0,0],[0,0],[0.93,-0.3],[0.09,-0.03],[-0.02,0.08],[2.81,3.52],[1.38,1.58],[-0.95,5.6],[-4.67,2.86],[-0.17,0.1],[-2.01,0.17],[-0.57,-0.05],[-0.05,0],[0,0],[-2.26,-1.29],[-0.04,-0.02],[-0.95,-5.6],[3.73,-4.3],[1.32,-1.64],[-0.88,-4.42]],"o":[[0,0],[-0.03,-0.01],[-1.09,-0.43],[0,0],[0,0],[-1.02,0],[-0.08,0.02],[-0.06,0],[0.88,-4.42],[-1.31,-1.64],[-3.72,-4.3],[0.92,-5.41],[0.16,-0.11],[1.76,-1.01],[0.57,-0.05],[0.05,0],[0,0],[2.6,-0.27],[0.04,0.02],[4.93,2.82],[0.95,5.6],[-1.37,1.58],[-2.81,3.52],[0.03,0.14]],"v":[[5.31,24.415],[5.25,24.585],[5.15,24.545],[1.65,23.885],[0.82,23.885],[-2.24,23.885],[-5.18,24.345],[-5.43,24.425],[-5.5,24.305],[-8.6,11.585],[-12.92,7.005],[-17.38,-8.885],[-8.44,-22.105],[-7.94,-22.415],[-2.21,-24.325],[-0.5,-24.325],[-0.36,-24.315],[0.36,-24.315],[7.83,-22.475],[7.94,-22.415],[17.38,-8.885],[12.92,7.005],[8.6,11.585],[5.51,24.305]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.919,298.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 115","np":4,"cix":2,"bm":0,"ix":115,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.98,1.91],[3.25,-0.78],[0.95,-1.71],[0.23,-1.94],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,-2.21],[-1.22,-2.36],[-1.92,0.46],[-0.94,1.72],[0,0],[0,0],[0,0],[0,0]],"v":[[7.295,-10.055],[7.295,10.105],[7.285,10.105],[6.065,3.655],[-1.245,0.435],[-5.775,3.895],[-7.295,9.525],[-7.295,-9.865],[-7.295,-10.105],[7.295,-10.105]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[962.214,640.175],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 116","np":2,"cix":2,"bm":0,"ix":116,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-2.21],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-0.94,1.72],[-1.92,0.46],[-1.22,-2.36]],"o":[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.23,-1.94],[0.95,-1.71],[3.25,-0.78],[0.98,1.91]],"v":[[7.285,-20.405],[7.295,-20.405],[7.295,30.405],[7.295,30.855],[-7.295,30.855],[-7.295,30.215],[-7.295,-20.405],[-7.295,-20.985],[-5.775,-26.615],[-1.245,-30.075],[6.065,-26.855]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[962.214,670.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 117","np":2,"cix":2,"bm":0,"ix":117,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.88,-2.4],[2.65,-2.3],[3.18,-3.18],[0.76,-3.76],[0,0],[-4.26,6.98],[-2.86,0.33]],"o":[[0.68,1.84],[-3.76,3.25],[-2.68,2.68],[0,0],[0.47,-8.38],[1.92,-2.74],[2.54,-0.29]],"v":[[9.725,-10.67],[7.765,-3.4],[-0.705,4.36],[-6.325,14.19],[-10.415,13.54],[-3.675,-8.54],[3.385,-13.9]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[962.444,260.12],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 118","np":2,"cix":2,"bm":0,"ix":118,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.02,0.49],[0,0],[-2.42,-5.11],[0,0],[0,0],[0,0],[4.7,3.8],[0,0],[-1.11,0],[0,0]],"o":[[0,0],[-4.53,3.78],[0,0],[0,0],[0,0],[2.58,-5.18],[0,0],[0.96,0.42],[0,0],[1.2,0]],"v":[[26.06,-8.355],[26.37,-7.995],[22.63,7.955],[21.17,8.355],[-22.13,8.355],[-22.58,8.135],[-26.37,-8.115],[-26.31,-8.245],[-23.19,-7.585],[22.7,-7.585]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.869,724.655],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 119","np":2,"cix":2,"bm":0,"ix":119,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.11,0],[0,-6.11],[6.11,0],[0,6.11]],"o":[[6.11,0],[0,6.11],[-6.11,0],[0,-6.11]],"v":[[0,-11.06],[11.06,0],[0,11.06],[-11.06,0]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[966.209,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 120","np":2,"cix":2,"bm":0,"ix":120,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.6,0],[0,0],[0,-6.6],[0,0],[-6.6,0],[0,0],[0,6.6],[0,0]],"o":[[0,0],[-6.6,0],[0,0],[0,6.6],[0,0],[-6.6,0],[0,0],[0,-6.6]],"v":[[-3.5,-12.355],[15.5,-12.355],[3.5,-0.355],[3.5,0.355],[15.5,12.355],[-3.5,12.355],[-15.5,0.355],[-15.5,-0.355]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[959.889,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 121","np":2,"cix":2,"bm":0,"ix":121,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-4.27],[1.41,-1.41],[0.79,-0.38],[1.2,0],[0,0],[0.96,0.42],[0,3.16],[-1.41,1.4],[-2.13,0],[0,0],[0,0],[0,0],[0,0]],"o":[[4.27,0],[0,2.14],[-0.61,0.62],[-1.02,0.49],[0,0],[-1.11,0],[-2.73,-1.21],[0,-2.14],[1.41,-1.41],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[22.945,-7.765],[30.705,-0.005],[28.425,5.485],[26.305,6.995],[22.945,7.765],[-22.945,7.765],[-26.065,7.105],[-30.705,-0.005],[-28.425,-5.485],[-22.945,-7.765],[-21.885,-7.765],[-7.295,-7.765],[7.295,-7.765],[21.885,-7.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,709.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 122","np":2,"cix":2,"bm":0,"ix":122,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-4.27],[1.41,-1.41],[2.14,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,4.27],[-1.41,1.4],[-2.13,0]],"o":[[4.27,0],[0,2.14],[-1.4,1.41],[0,0],[0,0],[0,0],[0,0],[0,0],[-4.27,0],[0,-2.14],[1.41,-1.41],[0,0]],"v":[[22.945,-7.765],[30.705,-0.005],[28.425,5.485],[22.945,7.765],[21.885,7.765],[7.295,7.765],[-7.295,7.765],[-21.885,7.765],[-22.945,7.765],[-30.705,-0.005],[-28.425,-5.485],[-22.945,-7.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,622.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 123","np":2,"cix":2,"bm":0,"ix":123,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.14,-0.01],[0,-4.13],[1.41,-1.41],[2.14,0],[0,0],[0,4.27],[-1.41,1.4],[-1.96,0.11],[-0.14,0],[0,0]],"o":[[4.08,0.22],[0,2.14],[-1.4,1.41],[0,0],[-4.27,0],[0,-2.14],[1.32,-1.32],[0.14,-0.01],[0,0],[0.14,0]],"v":[[23.365,-7.755],[30.705,-0.005],[28.425,5.485],[22.945,7.765],[-22.945,7.765],[-30.705,-0.005],[-28.425,-5.485],[-23.365,-7.755],[-22.945,-7.765],[22.945,-7.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,606.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 124","np":2,"cix":2,"bm":0,"ix":124,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-4.27],[1.41,-1.41],[2.14,0],[0,0],[0,4.27],[-1.41,1.4],[-2.13,0],[0,0],[0,0]],"o":[[4.27,0],[0,2.14],[-1.4,1.41],[0,0],[-4.27,0],[0,-2.14],[1.41,-1.41],[0,0],[0,0],[0,0]],"v":[[22.945,-7.765],[30.705,-0.005],[28.425,5.485],[22.945,7.765],[-22.945,7.765],[-30.705,-0.005],[-28.425,-5.485],[-22.945,-7.765],[-17.235,-7.765],[17.235,-7.765]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,516.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 125","np":2,"cix":2,"bm":0,"ix":125,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.43,-6.53],[0,0],[0,0],[0,0],[-0.76,16.39],[0,0],[0,0],[-1.44,-8.37]],"o":[[0,0],[0,0],[0,0],[-5.04,-15.62],[0,0],[0,0],[-0.04,8.5],[1.44,8.38]],"v":[[13.5,24.395],[13.5,24.645],[-6.25,24.645],[-6.25,23.895],[-12.74,-24.645],[2.26,-24.645],[2.26,-24.205],[3.63,1.215]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[965.739,894.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 126","np":2,"cix":2,"bm":0,"ix":126,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,3.24],[-1.07,1.07],[-1.07,0.25],[-0.47,0],[0,0],[-0.49,-0.15],[0,-2.7],[1.07,-1.07],[1.62,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-3.23,0],[0,-1.62],[0.75,-0.76],[0.44,-0.11],[0,0],[0.54,0],[2.49,0.67],[0,1.62],[-1.07,1.07],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[-35.065,5.885],[-36.005,5.885],[-41.885,-0.005],[-40.155,-4.155],[-37.375,-5.715],[-36.005,-5.885],[35.995,-5.885],[37.545,-5.665],[41.885,-0.005],[40.155,4.155],[35.995,5.885],[35.705,5.885],[20.375,5.885],[5.375,5.885],[-3.415,5.885],[-18.415,5.885]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,864.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 127","np":2,"cix":2,"bm":0,"ix":127,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.34,0.07],[0,2.89],[-1.07,1.07],[-0.89,0.29],[-0.63,0],[0,0],[0,0],[0,-3.23],[1.07,-1.07],[1.1,-0.25],[0.45,0],[0,0]],"o":[[-2.75,-0.48],[0,-1.62],[0.65,-0.65],[0.57,-0.19],[0,0],[0,0],[3.24,0],[0,1.62],[-0.77,0.77],[-0.42,0.1],[0,0],[-0.35,0]],"v":[[-37.035,5.785],[-41.885,-0.005],[-40.155,-4.155],[-37.815,-5.595],[-36.005,-5.885],[-23.655,-5.885],[35.995,-5.885],[41.885,-0.005],[40.155,4.155],[37.295,5.735],[35.995,5.885],[-36.005,5.885]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,788.305],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 128","np":2,"cix":2,"bm":0,"ix":128,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0],[0.14,0],[0,0],[0.14,-0.01],[0,0],[10.93,17.89],[2.64,1.86],[1.63,-0.27],[0.74,0.73],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[-20.83,20.47],[0,0],[-0.14,-0.01],[0,0],[-0.14,0],[0,0],[0,0],[1.33,-2.82],[-1.46,-1.03],[-0.68,-0.74],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"v":[[41.725,-24.18],[41.725,-23.48],[23.365,24.17],[23.365,24.18],[22.945,24.17],[-22.945,24.17],[-23.365,24.18],[-23.365,24.17],[-32.625,-12.04],[-34.775,-20.17],[-39.585,-21.27],[-41.725,-23.48],[-41.725,-24.18],[-31.235,-24.18],[-11.235,-24.18],[8.765,-24.18],[27.765,-24.18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.624,574.37],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 129","np":2,"cix":2,"bm":0,"ix":129,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.28,0],[0,0],[0.7,0],[0,0],[0,0],[0,6.6],[0,0],[-6.6,0],[0,0],[-0.64,-0.11],[0,0],[0,-6.32],[0,0]],"o":[[0,0],[-0.66,0.12],[0,0],[0,0],[-6.6,0],[0,0],[0,-6.6],[0,0],[0.67,0],[0,0],[-6.28,0],[0,0],[0,6.32]],"v":[[14.655,11.645],[14.755,12.175],[12.715,12.355],[11.205,12.355],[-2.755,12.355],[-14.755,0.355],[-14.755,-0.355],[-2.755,-12.355],[12.715,-12.355],[14.685,-12.185],[14.655,-12.005],[3.245,-0.515],[3.245,0.155]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[978.144,537.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 130","np":2,"cix":2,"bm":0,"ix":130,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.79,-2.62],[0.4,-7.63],[6.45,-4.09],[-0.04,-0.34],[-0.02,-0.04],[0,0],[0,0],[0,0],[-0.28,1.61],[1.33,0.96],[2.96,0.16],[1.26,0.63],[1.65,0.13],[0.75,-1.24],[-0.77,-1.23],[0,0],[0.28,5.45],[-0.39,1.79],[0,0],[-0.7,-1.77],[-2.51,1.25],[-1.39,3.04],[-3.99,1.43],[-2.12,1.72],[0.86,2.6],[2.66,-1.87],[-0.45,0.91],[0,0],[0,0],[0,0],[-1.08,-0.94]],"o":[[6.71,3.67],[-0.39,7.63],[-0.29,0.19],[0,0.04],[0,0],[0,0],[0,0],[2.4,-0.42],[0.28,-1.62],[-2.4,-1.73],[-1.4,-0.07],[-1.48,-0.73],[-1.45,-0.1],[-0.75,1.25],[0,0],[-3.72,-4.02],[-0.1,-1.82],[0,0],[-0.44,1.88],[1.03,2.61],[3,-1.48],[1.75,-3.86],[2.57,-0.92],[2.12,-1.73],[-0.81,-2.4],[0.72,-0.75],[0,0],[0,0],[0,0],[0.59,1.25],[4.14,3.57]],"v":[[39.765,-14.835],[50.085,4.295],[38.685,23.175],[38.095,23.965],[38.135,24.085],[35.525,24.905],[-24.125,24.905],[-24.125,24.555],[-20.945,20.775],[-22.705,16.445],[-31.375,15.585],[-35.435,14.525],[-39.935,12.555],[-43.615,14.455],[-43.575,18.595],[-43.985,18.975],[-50.385,4.295],[-49.935,-1.145],[-49.585,-1.075],[-49.385,4.515],[-42.635,7.735],[-38.285,-0.985],[-28.325,-8.315],[-20.955,-11.795],[-18.255,-19.015],[-24.555,-22.215],[-22.805,-24.725],[-22.355,-24.505],[20.945,-24.505],[22.405,-24.905],[24.915,-21.585]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[948.094,757.515],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 131","np":2,"cix":2,"bm":0,"ix":131,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-6.45,-0.63],[0,0],[3.6,-0.28],[0.54,0],[0,0],[0.44,-0.11],[4.84,5.84],[0,0],[-3.43,4.89],[0,0],[-7.33,0],[-4,5.27],[0,0],[-7.36,0],[-4,5.24],[0,0]],"o":[[0,0],[-5.12,6.33],[-0.49,-0.15],[0,0],[-0.47,0],[-3.59,-0.54],[0,0],[6.19,-0.83],[0,0],[3.97,5.53],[7.12,0],[0,0],[3.97,5.56],[7.1,0],[0,0],[3.58,5]],"v":[[51.96,-0.605],[52.09,-0.495],[37.07,9.835],[35.52,9.615],[-36.48,9.615],[-37.85,9.785],[-52.09,-0.125],[-50.94,-0.695],[-35.96,-9.835],[-35.67,-9.635],[-17.89,-0.505],[-0.44,-9.175],[0.28,-9.695],[18.11,-0.505],[35.52,-9.125],[36.3,-9.665]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[948.099,848.805],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 132","np":2,"cix":2,"bm":0,"ix":132,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-5.73,-7.46],[0,0],[4,-5.29],[0,0],[7.09,0],[3.99,-5.39],[0,0],[7.27,0],[3.99,-5.39],[0,0],[6.81,0.36],[0,0],[-3.12,0.24],[-0.35,0],[0,0],[-0.42,0.1],[0,0]],"o":[[0,0],[-7.14,0],[0,0],[-4,-5.23],[-7.22,0],[0,0],[-3.98,-5.46],[-7.22,0],[0,0],[-3.76,-5.19],[0,0],[5.44,-6.73],[0.34,0.07],[0,0],[0.45,0],[0,0],[3,0]],"v":[[53.115,1.16],[53.075,1.19],[36.535,9.43],[36.135,9.66],[18.015,0.72],[0.405,9.6],[-0.295,9.72],[-17.985,0.72],[-35.595,9.6],[-36.255,9.78],[-52.805,0.75],[-53.115,0.51],[-37.605,-9.73],[-36.575,-9.63],[35.425,-9.63],[36.725,-9.78],[36.735,-9.75]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.913725550034,0.427451010311,0.949019667682,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[948.194,803.82],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 133","np":2,"cix":2,"bm":0,"ix":133,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-5.93],[0,0],[5.64,-0.97],[0,0],[0,6.32],[0,0],[-6.28,0],[0,0]],"o":[[0,0],[0,5.9],[0,0],[-6.28,0],[0,0],[0,-6.32],[0,0],[5.67,0.94]],"v":[[10.735,-0.35],[10.735,0.36],[0.775,12.18],[0.675,11.65],[-10.735,0.16],[-10.735,-0.51],[0.675,-12],[0.705,-12.18]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[992.124,537.83],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 134","np":2,"cix":2,"bm":0,"ix":134,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,6.11],[6.11,0],[0,-6.11],[-6.11,0]],"o":[[0,-6.11],[-6.11,0],[0,6.11],[6.11,0]],"v":[[-6.69,-0.085],[-17.75,-11.145],[-28.81,-0.085],[-17.75,10.975]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[0,6.11],[6.11,0],[0,-6.11],[-6.11,0]],"o":[[0,-6.11],[-6.11,0],[0,6.11],[6.11,0]],"v":[[29.31,-0.085],[18.25,-11.145],[7.19,-0.085],[18.25,10.975]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[0,0],[6.19,-0.83],[0,0],[1.52,4.76],[0,0],[-1.72,0],[0,6.11],[6.11,0],[1.33,-0.57],[0,0],[-2.53,3.13],[0,0],[-3.76,-5.19],[0,0],[-7.22,0],[-3.98,-5.46],[0,0],[-7.22,0],[-4,-5.23],[0,0],[-7.14,0],[0,0],[-1.26,-4.4],[0,0],[1.53,0],[0,-6.11],[-6.11,0],[-1.32,0.56],[0,0],[2.62,-3.24],[0,0],[3.58,5],[0,0],[7.1,0],[3.97,5.56],[0,0],[7.12,0],[3.97,5.53]],"o":[[-3.43,4.89],[0,0],[-2.79,-3.36],[0,0],[1.46,0.71],[6.11,0],[0,-6.11],[-1.54,0],[0,0],[1.35,-4.67],[0,0],[6.81,0.36],[0,0],[3.99,-5.39],[7.27,0],[0,0],[3.99,-5.39],[7.09,0],[0,0],[4,-5.29],[0,0],[2.34,3.04],[0,0],[-1.32,-0.56],[-6.11,0],[0,6.11],[1.53,0],[0,0],[-1.47,4.51],[0,0],[-6.45,-0.63],[0,0],[-4,5.24],[-7.36,0],[0,0],[-4,5.27],[-7.33,0],[0,0]],"v":[[-35.82,12.465],[-50.8,21.605],[-51.95,22.175],[-58.72,9.925],[-58.56,9.875],[-53.75,10.975],[-42.69,-0.085],[-53.75,-11.145],[-58.09,-10.255],[-58.96,-10.495],[-52.88,-22.175],[-52.57,-21.935],[-36.02,-12.905],[-35.36,-13.085],[-17.75,-21.965],[-0.06,-12.965],[0.64,-13.085],[18.25,-21.965],[36.37,-13.025],[36.77,-13.255],[53.31,-21.495],[53.35,-21.525],[58.96,-10.385],[58.55,-10.275],[54.25,-11.145],[43.19,-0.085],[54.25,10.975],[58.55,10.105],[58.62,10.125],[52.23,21.805],[52.1,21.695],[36.44,12.635],[35.66,13.175],[18.25,21.795],[0.42,12.605],[-0.3,13.125],[-17.75,21.795],[-35.53,12.665]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.959,826.505],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 135","np":5,"cix":2,"bm":0,"ix":135,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.08,-3.32],[1.15,-3.47],[0,0],[1.53,0],[0,6.11],[-6.11,0],[-1.32,-0.56],[0,0]],"o":[[0.1,4.1],[0,0],[-1.32,0.56],[-6.11,0],[0,-6.11],[1.53,0],[0,0],[0.78,2.76]],"v":[[8.51,-1.18],[6.82,10.21],[6.75,10.19],[2.45,11.06],[-8.61,0],[2.45,-11.06],[6.75,-10.19],[7.16,-10.3]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.443137284821,0.003921568627,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[999.759,826.42],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 136","np":2,"cix":2,"bm":0,"ix":136,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-12.99,-0.42],[0,0],[0,0],[0,0],[0,0],[1.44,8.38],[-0.04,8.5],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0],[-5.43,-6.53],[-1.44,-8.37],[0,0],[0,0],[0,0],[0,0],[0,34.64]],"v":[[25.675,24.505],[25.675,24.645],[25.545,24.645],[-14.365,24.645],[-14.365,24.395],[-24.235,1.215],[-25.605,-24.205],[-25.605,-24.645],[-10.275,-24.645],[-10.275,-24.415],[-10.275,-17.825]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.560784313725,0.188235309077,0.074509803922,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[993.604,894.835],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 137","np":2,"cix":2,"bm":0,"ix":137,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[5.46,0],[0,0],[1.53,4.88],[0,0]],"o":[[0,0],[-1.44,5.01],[0,0],[-5.36,0],[0,0],[0,0]],"v":[[82.555,-4.415],[83.025,-4.285],[71.495,4.415],[-71.565,4.415],[-83.025,-4.025],[-81.295,-4.415]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0.129411764706,0.250980392157,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.654,939.775],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 138","np":2,"cix":2,"bm":0,"ix":138,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-6.56],[0,0],[0.31,-1.05],[0,0],[0,0],[0,0],[0,1.24],[0,0],[-6.6,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,1.14],[0,0],[0,0],[0,0],[-0.35,-1.13],[0,0],[0,-6.6],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[6.54,0.07]],"v":[[83.53,3.865],[83.53,4.575],[83.06,7.875],[82.59,7.745],[-81.26,7.745],[-82.99,8.135],[-83.53,4.575],[-83.53,3.865],[-71.53,-8.135],[-29.66,-8.135],[-9.9,-8.135],[11.87,-8.135],[31.62,-8.135],[71.53,-8.135],[71.66,-8.135]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.949019667682,0.341176470588,0.188235309077,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[947.619,927.615],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 139","np":2,"cix":2,"bm":0,"ix":139,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0}]},{"id":"comp_2","nm":"Earth","fr":24,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"earth ol Outlines","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[965.53,543.11,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.017,-5.05],[-0.008,-0.037]],"o":[[0.512,5.126],[0,0.037],[0,0]],"v":[[-1.089,-7.68],[1.073,7.569],[1.089,7.68]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1130.189,759.852],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.808,2.078]],"o":[[-4.101,-0.053],[0,0]],"v":[[3.201,2.239],[-3.201,-2.238]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1305.512,830.125],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.809,-2.078]],"o":[[4.101,0.053],[0,0]],"v":[[-3.263,-2.418],[3.263,2.418]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1294.241,837.573],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.293,-0.017],[0,0],[-0.033,2.587],[0.833,0.864],[1.294,0.017],[0,0],[0.033,-2.578],[-0.842,-0.864]],"o":[[0,0],[2.587,0.033],[0.017,-1.284],[-0.843,-0.864],[0,0],[-2.587,-0.033],[-0.016,1.293],[0.842,0.855]],"v":[[-6.184,4.614],[6.063,4.771],[10.82,0.134],[9.487,-3.195],[6.183,-4.614],[-6.064,-4.771],[-10.821,-0.143],[-9.487,3.195]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1327.146,822.071],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.034,2.587],[-0.855,0.833],[-1.294,-0.017],[0,0],[-0.838,-1.194]],"o":[[0,0],[-2.578,-0.033],[0.016,-1.294],[0.864,-0.842],[0,0],[1.559,0.02],[0,0]],"v":[[6.26,4.829],[-13.005,4.582],[-17.632,-0.175],[-16.214,-3.469],[-12.884,-4.812],[13.885,-4.469],[17.666,-2.457]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1284.498,830.323],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.062,-4.853],[3.403,0.043]],"o":[[0,0],[7.66,0.098],[-0.048,3.725],[0,0]],"v":[[-6.824,-4.684],[-2.989,-4.635],[6.762,0.509],[0.553,4.641]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1316.352,837.159],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[1.088,1.005],[0.036,0.037]],"o":[[0,0],[0,0],[-1.807,-0.023],[-0.046,-0.028],[0,0]],"v":[[10.085,0.987],[9.434,0.979],[-5.446,0.788],[-9.966,-0.885],[-10.084,-0.987]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1307.471,840.876],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 7","np":2,"cix":2,"bm":0,"ix":7,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.808,-2.079]],"o":[[4.101,0.053],[0,0]],"v":[[-3.201,-2.234],[3.201,2.234]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1161.992,779.403],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 8","np":2,"cix":2,"bm":0,"ix":8,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.809,2.069]],"o":[[-4.101,-0.053],[0,0]],"v":[[3.263,2.414],[-3.263,-2.413]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1173.263,771.956],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 9","np":2,"cix":2,"bm":0,"ix":9,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[1.293,0.017],[0,0],[-0.033,2.578],[-0.855,0.842],[-1.293,-0.017],[0,0],[0.033,-2.587],[0.855,-0.842]],"o":[[0,0],[-2.578,-0.033],[0.017,-1.294],[0.864,-0.834],[0,0],[2.578,0.033],[-0.016,1.284],[-0.864,0.842]],"v":[[6.068,4.776],[-6.188,4.619],[-10.816,-0.138],[-9.397,-3.442],[-6.068,-4.776],[6.188,-4.619],[10.816,0.138],[9.397,3.432]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1197.827,796.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 10","np":2,"cix":2,"bm":0,"ix":10,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.033,-2.578],[0.864,-0.842],[1.285,0.016],[0,0],[0.838,1.194]],"o":[[0,0],[2.578,0.033],[-0.016,1.284],[-0.864,0.842],[0,0],[-1.559,-0.02],[0,0]],"v":[[-6.26,-4.828],[13.005,-4.581],[17.632,0.176],[16.214,3.47],[12.884,4.813],[-13.885,4.47],[-17.666,2.458]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1183.006,779.2],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 11","np":2,"cix":2,"bm":0,"ix":11,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-0.098,7.614],[-3.197,0.307],[-0.11,-0.001]],"o":[[0,0],[0,0],[-7.66,-0.098],[0.058,-4.541],[0.101,-0.008],[0,0]],"v":[[18.09,12.534],[17.503,12.526],[-8.404,12.194],[-17.992,-2.077],[-12.986,-12.518],[-12.674,-12.533]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1141.289,764.643],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 12","np":2,"cix":2,"bm":0,"ix":12,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-1.088,-1.015],[-0.036,-0.037]],"o":[[0,0],[1.807,0.023],[0.045,0.028],[0,0]],"v":[[-19.419,-1.112],[14.781,-0.672],[19.301,1.009],[19.419,1.112]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1150.7,768.533],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 13","np":2,"cix":2,"bm":0,"ix":13,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[1.861,-2.031]],"o":[[-4.101,-0.053],[0,0]],"v":[[3.262,-2.125],[-3.262,2.177]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1295.208,728.841],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 14","np":2,"cix":2,"bm":0,"ix":14,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.787,2.014],[-0.038,0.037]],"o":[[4.027,0.052],[0.028,-0.045],[0,0]],"v":[[-3.324,2.308],[3.221,-2.242],[3.324,-2.36]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1284.128,721.155],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 15","np":2,"cix":2,"bm":0,"ix":15,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.293,-0.017],[0,0],[-0.033,2.577],[0.843,0.864],[1.284,0.017],[0,0],[0.033,-2.587],[-0.843,-0.864]],"o":[[0,0],[2.578,0.033],[0.017,-1.294],[-0.842,-0.855],[0,0],[-2.587,-0.033],[-0.016,1.284],[0.842,0.864]],"v":[[-6.184,4.614],[6.063,4.771],[10.82,0.144],[9.477,-3.195],[6.183,-4.614],[-6.064,-4.771],[-10.821,-0.134],[-9.487,3.195]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1267.693,744.613],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 16","np":2,"cix":2,"bm":0,"ix":16,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.033,-2.587],[-0.843,-0.864],[-1.294,-0.017],[0,0],[-0.878,1.172]],"o":[[0,0],[-2.578,-0.033],[-0.017,1.284],[0.833,0.864],[0,0],[1.569,0.02],[0,0]],"v":[[-0.845,-4.708],[-5.597,-4.769],[-10.354,-0.132],[-9.011,3.197],[-5.717,4.625],[6.529,4.782],[10.371,2.868]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1281.438,728.168],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 17","np":2,"cix":2,"bm":0,"ix":17,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.033,2.578],[0.842,0.864],[1.293,0.016],[0,0],[0.875,-1.035]],"o":[[0,0],[2.587,0.033],[0.017,-1.294],[-0.843,-0.855],[0,0],[-1.449,-0.019],[0,0]],"v":[[-5.427,4.628],[12.003,4.852],[16.76,0.215],[15.427,-3.124],[12.124,-4.542],[-13.132,-4.866],[-16.777,-3.197]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1304.108,722.092],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 18","np":2,"cix":2,"bm":0,"ix":18,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[4.101,0.053],[0,0],[-0.098,7.614],[-3.197,0.308],[0,0],[-1.018,-5.051],[0,0],[0,0],[-1.088,-1.014],[-4.101,-0.053],[0,0],[0,0],[0.033,-2.578],[0.864,-0.843],[1.285,0.017],[0,0],[0.838,1.194],[0,0]],"o":[[0,0],[-7.661,-0.098],[0.058,-4.541],[0,0],[0.513,5.127],[0,0],[0,0],[1.807,0.024],[1.809,2.07],[0,0],[0,0],[2.578,0.034],[-0.016,1.284],[-0.864,0.842],[0,0],[-1.56,-0.02],[0,0],[-1.808,-2.079]],"v":[[-3.143,9.092],[-29.049,8.76],[-38.639,-5.511],[-33.632,-15.953],[-32.835,-15.906],[-30.672,-0.656],[-30.655,-0.656],[3.546,-0.218],[8.066,1.464],[14.592,6.292],[14.812,6.294],[34.077,6.541],[38.703,11.299],[37.286,14.593],[33.956,15.935],[7.188,15.592],[3.406,13.58],[3.259,13.56]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1161.935,768.077],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 19","np":2,"cix":2,"bm":0,"ix":19,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.033,-2.587],[0.855,-0.842],[1.293,0.016],[0,0],[-0.033,2.577],[-0.855,0.843],[-1.294,-0.017]],"o":[[2.578,0.033],[-0.017,1.284],[-0.864,0.842],[0,0],[-2.577,-0.033],[0.016,-1.294],[0.864,-0.833],[0,0]],"v":[[6.188,-4.618],[10.816,0.139],[9.397,3.433],[6.068,4.776],[-6.189,4.619],[-10.816,-0.138],[-9.397,-3.442],[-6.068,-4.775]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1197.828,796.828],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 20","np":2,"cix":2,"bm":0,"ix":20,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.842,-0.855],[0.016,-1.294],[2.577,0.033],[0,0],[0.842,0.864],[-0.017,1.284],[-2.587,-0.033],[0,0]],"o":[[0.842,0.864],[-0.033,2.577],[0,0],[-1.294,-0.016],[-0.843,-0.865],[0.033,-2.587],[0,0],[1.284,0.017]],"v":[[9.478,-3.195],[10.821,0.144],[6.064,4.771],[-6.183,4.614],[-9.486,3.196],[-10.82,-0.134],[-6.063,-4.771],[6.184,-4.614]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1267.692,744.613],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 21","np":2,"cix":2,"bm":0,"ix":21,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-1.787,2.014],[0,0],[-1.45,-0.018],[0,0],[-0.842,-0.855],[0.016,-1.293],[2.587,0.033],[0,0],[0,0],[1.861,-2.031],[0,0],[1.569,0.02],[0,0],[0.833,0.864],[-0.017,1.284],[-2.578,-0.033],[0,0],[0,0]],"o":[[0,0],[0.876,-1.034],[0,0],[1.293,0.017],[0.842,0.864],[-0.034,2.578],[0,0],[0,0],[-4.1,-0.053],[0,0],[-0.878,1.172],[0,0],[-1.293,-0.017],[-0.843,-0.864],[0.033,-2.587],[0,0],[0,0],[4.027,0.051]],"v":[[-8.627,-6.176],[-8.645,-6.195],[-4.999,-7.864],[20.256,-7.54],[23.559,-6.12],[24.893,-2.783],[20.135,1.854],[2.705,1.631],[2.494,1.628],[-4.029,5.93],[-4.167,5.948],[-8.009,7.861],[-20.256,7.704],[-23.549,6.276],[-24.892,2.948],[-20.135,-1.69],[-15.383,-1.629],[-15.172,-1.625]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1295.976,725.089],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 22","np":2,"cix":2,"bm":0,"ix":22,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.062,-4.853],[3.403,0.043],[0,0],[0,0],[1.088,1.005],[4.101,0.052],[0,0],[0,0],[-0.033,2.587],[-0.855,0.833],[-1.294,-0.017],[0,0],[-0.838,-1.194],[0,0],[-4.101,-0.053],[0,0],[0,0]],"o":[[-0.048,3.725],[0,0],[0,0],[-1.807,-0.023],[-1.809,-2.078],[0,0],[0,0],[-2.578,-0.033],[0.017,-1.294],[0.864,-0.842],[0,0],[1.56,0.02],[0,0],[1.808,2.078],[0,0],[0,0],[7.66,0.098]],"v":[[28.11,3.993],[21.901,8.125],[21.9,8.18],[7.02,7.99],[2.5,6.316],[-4.026,1.48],[-4.246,1.477],[-23.511,1.23],[-28.139,-3.526],[-26.72,-6.821],[-23.39,-8.164],[3.378,-7.821],[7.16,-5.808],[7.307,-5.787],[13.709,-1.311],[14.524,-1.2],[18.359,-1.151]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1295.004,833.674],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 23","np":2,"cix":2,"bm":0,"ix":23,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.842,-0.864],[0.017,-1.284],[2.587,0.033],[0,0],[0.843,0.855],[-0.017,1.293],[-2.587,-0.033],[0,0]],"o":[[0.833,0.864],[-0.033,2.587],[0,0],[-1.293,-0.017],[-0.842,-0.864],[0.033,-2.578],[0,0],[1.293,0.017]],"v":[[9.487,-3.195],[10.82,0.134],[6.063,4.771],[-6.184,4.614],[-9.487,3.195],[-10.82,-0.143],[-6.063,-4.771],[6.184,-4.614]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.980392216701,0.941176530427,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1327.145,822.071],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 24","np":2,"cix":2,"bm":0,"ix":24,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.49,-0.436],[-8.167,-3.444],[-10.441,-10.07],[-3.116,-3.875],[-3.292,-5.905],[-2.306,-6.902],[-0.635,-10.642],[0.038,-2.926],[7.694,-15.454],[43.958,-2.088],[2.44,0.031],[2.594,0.208],[14.133,7.623],[10.903,21.977],[-0.249,19.43],[-12.476,18.493],[-2.005,2.516]],"o":[[2.547,0.271],[9,1.529],[13.589,5.707],[3.58,3.441],[4.227,5.229],[3.498,6.266],[3.289,9.713],[0.174,2.884],[-0.236,18.412],[-18.62,37.416],[-2.405,0.116],[-2.642,-0.034],[-16.875,-1.317],[-21.569,-11.654],[-8.076,-16.289],[0.308,-23.971],[1.806,-2.674],[0,0]],"v":[[12.641,-118.194],[20.197,-117.143],[46.011,-109.628],[82.323,-85.683],[92.376,-74.709],[103.676,-57.975],[112.432,-38.182],[118.398,-7.543],[118.607,1.176],[106.252,52.418],[5.859,118.036],[-1.409,118.163],[-9.268,117.805],[-56.132,104.01],[-106.125,52.254],[-118.396,-1.863],[-98.207,-66.546],[-92.482,-74.327]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1247.2,743.451],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 25","np":2,"cix":2,"bm":0,"ix":25,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.743,-3.61]],"o":[[4.303,-5.707],[0,0]],"v":[[-5.782,2.623],[5.782,3.083]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1253.217,621.989],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 26","np":2,"cix":2,"bm":0,"ix":26,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.973,-3.494]],"o":[[3.939,-5.968],[0,0]],"v":[[-5.786,2.984],[5.786,2.72]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1241.233,622.117],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 27","np":2,"cix":2,"bm":0,"ix":27,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-2.836,-2.825]],"o":[[2.17,-6.817],[0,0]],"v":[[-5.531,3.409],[5.531,0.008]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1209.979,628.488],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 28","np":2,"cix":2,"bm":0,"ix":28,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.285,-2.061],[-0.136,-0.103]],"o":[[1.151,-6.747],[0.155,0.094],[0,0]],"v":[[-5.243,3.636],[4.806,-1.575],[5.243,-1.276]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1198.961,633.545],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 29","np":2,"cix":2,"bm":0,"ix":29,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.349,-2.18],[0,0]],"o":[[0.752,-7.092],[0,0.009],[0,0]],"v":[[-5.077,3.874],[5.069,-1.694],[5.078,-1.684]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1188.594,638.966],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 30","np":2,"cix":2,"bm":0,"ix":30,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0.016,0.156],[-3.385,-0.043],[-0.649,-0.219]],"o":[[-0.025,-0.165],[-0.636,-5.513],[0.707,0.009],[0,0]],"v":[[-3.847,4.174],[-3.914,3.696],[2.489,-4.131],[4.55,-3.793]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1166.519,656.456],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 31","np":2,"cix":2,"bm":0,"ix":31,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0.036],[-3.842,-0.902],[-0.064,-0.019]],"o":[[-0.009,-0.037],[-1.427,-6.79],[0.064,0.01],[0,0]],"v":[[-3.222,4.709],[-3.24,4.599],[4.484,-3.807],[4.667,-3.769]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1157.994,664.517],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 32","np":2,"cix":2,"bm":0,"ix":32,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.312,0.03],[0,0]],"o":[[0,0],[0.03,-2.321],[0,0],[0,0]],"v":[[5.531,12.937],[5.806,-8.575],[1.649,-12.84],[-5.837,-12.936]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1185.706,834.215],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 33","np":2,"cix":2,"bm":0,"ix":33,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.311,-0.03],[0,0]],"o":[[0,0],[-0.03,2.321],[0,0],[0,0]],"v":[[-2.543,-10.062],[-2.746,5.781],[1.401,10.046],[2.776,10.062]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1176.478,811.227],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 34","np":2,"cix":2,"bm":0,"ix":34,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.312,0.03],[0,0]],"o":[[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[15.818,2.396],[15.82,2.213],[11.663,-2.043],[-15.849,-2.396]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1158.098,798.098],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 35","np":2,"cix":2,"bm":0,"ix":35,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.321],[0,0]],"o":[[0,0],[-2.321,-0.03],[0,0],[0,0]],"v":[[2.267,-5.419],[2.084,-5.421],[-2.181,-1.265],[-2.267,5.451]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1226.88,774.692],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 36","np":2,"cix":2,"bm":0,"ix":36,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0]],"o":[[0,0],[-0.03,2.311],[0,0],[0,0],[0,0]],"v":[[-9.191,-15.282],[-9.526,10.836],[-5.378,15.091],[8.382,15.267],[9.557,15.283]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1233.826,795.911],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 37","np":2,"cix":2,"bm":0,"ix":37,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[2.321,0.029],[0,0]],"o":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[2.566,9.37],[2.577,8.48],[2.751,-5.088],[-1.405,-9.352],[-2.781,-9.37]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1244.988,820.612],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 38","np":2,"cix":2,"bm":0,"ix":38,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.029,2.311],[0,0]],"o":[[0,0],[2.312,0.03],[0,0],[0,0]],"v":[[-2.233,2.749],[-2.05,2.751],[2.215,-1.405],[2.233,-2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1245.305,831.874],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 39","np":2,"cix":2,"bm":0,"ix":39,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.32],[0,0]],"o":[[0,0],[-2.312,-0.03],[0,0],[0,0]],"v":[[2.361,-13.106],[2.178,-13.108],[-2.078,-8.952],[-2.361,13.139]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1240.326,847.724],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 40","np":2,"cix":2,"bm":0,"ix":40,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.03,-2.312],[0,0]],"o":[[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0]],"v":[[15.727,-7.014],[15.25,-7.02],[-11.326,-7.361],[-15.591,-3.213],[-15.727,7.391]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1268.745,853.022],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 41","np":2,"cix":2,"bm":0,"ix":41,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[2.312,0.03],[0,0],[0,0]],"v":[[-2.233,2.749],[-2.05,2.751],[2.215,-1.405],[2.233,-2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1286.044,843.241],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 42","np":2,"cix":2,"bm":0,"ix":42,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"o":[[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0]],"v":[[6.474,-15.07],[-1.874,-15.177],[-6.139,-11.02],[-6.473,15.042],[-6.475,15.207]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1294.805,825.418],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 43","np":2,"cix":2,"bm":0,"ix":43,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[2.321,0.03],[0,0],[0,0]],"v":[[-2.233,2.749],[-2.05,2.751],[2.215,-1.405],[2.233,-2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1304.31,807.61],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 44","np":2,"cix":2,"bm":0,"ix":44,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.312,0.03],[0,0]],"o":[[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[2.426,14.852],[2.751,-10.569],[-1.406,-14.834],[-2.781,-14.852]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1304.117,789.334],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 45","np":2,"cix":2,"bm":0,"ix":45,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.312,-0.03],[0,0]],"o":[[0,0],[-0.03,2.312],[0,0],[0,0]],"v":[[-6.423,-2.28],[-6.426,-2.097],[-2.279,2.168],[6.455,2.28]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1294.073,772.211],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 46","np":2,"cix":2,"bm":0,"ix":46,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.312,0.03],[0,0]],"o":[[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[2.65,6.127],[2.751,-1.845],[-1.406,-6.11],[-2.781,-6.127]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1285.003,763.52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 47","np":2,"cix":2,"bm":0,"ix":47,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.321,-0.03],[0,0]],"o":[[0,0],[-0.03,2.312],[0,0],[0,0]],"v":[[-25.798,-2.524],[-25.8,-2.341],[-21.644,1.915],[25.83,2.524]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1255.732,754.823],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 48","np":2,"cix":2,"bm":0,"ix":48,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.311,-0.029],[0,0]],"o":[[0,0],[-0.03,2.312],[0,0],[0,0]],"v":[[-13.276,-2.368],[-13.278,-2.185],[-9.122,2.08],[13.308,2.368]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1339.861,793.36],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 49","np":2,"cix":2,"bm":0,"ix":49,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.276,-0.051],[0.026,-2.027],[0,0]],"o":[[0,0],[-0.285,-0.004],[-1.913,0.37],[0,0],[0,0]],"v":[[2.482,-22.495],[2.298,-22.497],[1.453,-22.426],[-1.958,-18.341],[-2.481,22.501]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1329.023,768.261],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 50","np":2,"cix":2,"bm":0,"ix":50,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[2.322,0.03],[0,0],[0,0]],"v":[[-2.233,2.749],[-2.05,2.751],[2.215,-1.405],[2.233,-2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1334.416,743.109],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 51","np":2,"cix":2,"bm":0,"ix":51,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"o":[[0,0],[-2.321,-0.03],[0,0],[0,0],[0,0]],"v":[[2.283,-6.667],[2.1,-6.669],[-2.165,-2.522],[-2.277,6.221],[-2.283,6.698]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1338.962,734.106],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 52","np":2,"cix":2,"bm":0,"ix":52,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.312,0.03],[0,0]],"o":[[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[8.634,2.309],[8.636,2.126],[4.489,-2.139],[-8.666,-2.308]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1350.628,729.702],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 53","np":2,"cix":2,"bm":0,"ix":53,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.009,-0.046],[-2.266,-0.029],[0,0]],"o":[[0,0],[-0.001,0.046],[0.036,2.249],[0,0],[0,0]],"v":[[-2.763,-2.229],[-2.766,-2.046],[-2.759,-1.907],[1.391,2.211],[2.767,2.229]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1362.059,733.735],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 54","np":2,"cix":2,"bm":0,"ix":54,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.383,-1.949],[0.003,-0.256],[0,0]],"o":[[0,0],[-2.054,-0.027],[-0.049,0.247],[0,0],[0,0]],"v":[[5.774,-2.655],[-1.492,-2.748],[-5.673,0.648],[-5.756,1.399],[-5.774,2.775]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1352.762,708.296],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 55","np":2,"cix":2,"bm":0,"ix":55,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.374,1.949],[-0.003,0.257],[0,0]],"o":[[0,0],[2.064,0.027],[0.049,-0.247],[0,0],[0,0]],"v":[[-2.229,2.751],[-2.055,2.753],[2.127,-0.652],[2.21,-1.404],[2.228,-2.78]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1344.86,711.724],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 56","np":2,"cix":2,"bm":0,"ix":56,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.321,-0.03],[0,0]],"o":[[0,0],[-0.03,2.311],[0,0],[0,0]],"v":[[-6.952,-6.88],[-7.072,2.496],[-2.915,6.751],[7.102,6.88]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1335.235,707.637],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 57","np":2,"cix":2,"bm":0,"ix":57,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"o":[[0,0],[0,0],[-2.312,-0.029],[0,0],[0,0],[0,0]],"v":[[3.889,-2.703],[3.815,-2.703],[0.393,-2.747],[-3.871,1.401],[-3.889,2.74],[-3.889,2.776]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1332.117,698.017],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 58","np":2,"cix":2,"bm":0,"ix":58,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.312],[0,0]],"o":[[0,0],[2.312,0.03],[0,0],[0,0]],"v":[[-2.233,2.744],[-2.05,2.746],[2.215,-1.401],[2.233,-2.777]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1337.98,692.64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 59","np":2,"cix":2,"bm":0,"ix":59,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"o":[[0,0],[-2.321,-0.03],[0,0],[0,0],[0,0]],"v":[[5.017,-2.678],[-0.735,-2.752],[-5,1.405],[-5.016,2.68],[-5.017,2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1345.138,688.558],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 60","np":2,"cix":2,"bm":0,"ix":60,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.276,0.051],[-0.026,2.018],[0,0]],"o":[[0,0],[0.294,0.004],[1.922,-0.37],[0,0],[0,0]],"v":[[-2.225,2.147],[-2.042,2.149],[-1.196,2.078],[2.223,-2.007],[2.225,-2.154]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1326.953,660.285],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 61","np":2,"cix":2,"bm":0,"ix":61,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.029,-2.311],[0,0]],"o":[[0,0],[-2.312,-0.03],[0,0],[0,0]],"v":[[2.233,-2.749],[2.05,-2.751],[-2.215,1.405],[-2.233,2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1321.818,665.09],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 62","np":2,"cix":2,"bm":0,"ix":62,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.009,-0.055],[-2.265,-0.029],[0,0],[0,0]],"o":[[0,0],[-0.001,0.055],[0.054,2.239],[0,0],[0,0],[0,0]],"v":[[-2.763,-2.233],[-2.766,-2.05],[-2.759,-1.884],[1.391,2.215],[1.491,2.216],[2.767,2.233]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1322.298,669.755],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 63","np":2,"cix":2,"bm":0,"ix":63,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.321,0.03],[0,0]],"o":[[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[2.749,2.233],[2.751,2.05],[-1.405,-2.215],[-2.781,-2.233]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1326.571,674.232],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 64","np":2,"cix":2,"bm":0,"ix":64,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[2.321,0.03],[0,0],[0,0]],"v":[[-2.277,6.194],[-2.094,6.196],[2.171,2.04],[2.277,-6.226]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1337.178,675.068],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 65","np":2,"cix":2,"bm":0,"ix":65,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.311,-0.029],[0,0]],"o":[[0,0],[-0.03,2.312],[0,0],[0,0]],"v":[[-2.749,-2.233],[-2.751,-2.05],[1.405,2.215],[2.781,2.233]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1332.092,679.029],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 66","np":2,"cix":2,"bm":0,"ix":66,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.029,2.311],[0,0]],"o":[[0,0],[2.322,0.03],[0,0],[0,0]],"v":[[-2.241,3.419],[-2.058,3.421],[2.207,-0.735],[2.241,-3.451]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1290.866,637.53],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 67","np":2,"cix":2,"bm":0,"ix":67,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.276,-0.051],[0.026,-2.028],[0,0],[0,0]],"o":[[0,0],[-0.285,-0.004],[-1.913,0.37],[0,0],[0,0],[0,0]],"v":[[2.229,-2.763],[2.045,-2.764],[1.199,-2.694],[-2.211,1.393],[-2.219,2.034],[-2.229,2.768]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1285.608,643.619],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 68","np":2,"cix":2,"bm":0,"ix":68,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[2.312,0.03],[0,0],[0,0]],"v":[[-4.05,2.702],[-0.234,2.751],[4.031,-1.406],[4.049,-2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1279.358,648.435],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 69","np":2,"cix":2,"bm":0,"ix":69,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.312,-0.029],[0,0],[0,0]],"o":[[0,0],[-0.03,2.32],[0,0],[0,0],[0,0]],"v":[[-2.612,-7.568],[-2.751,3.286],[1.406,7.549],[2.415,7.562],[2.781,7.568]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1272.896,643.465],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 70","np":2,"cix":2,"bm":0,"ix":70,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.108,0.247],[0.146,0.002],[0,0]],"o":[[0,0],[0.028,-2.165],[-0.146,-0.011],[0,0],[0,0]],"v":[[2.751,2.229],[2.753,2.046],[-0.974,-2.186],[-1.403,-2.21],[-2.78,-2.228]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1267.624,633.027],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 71","np":2,"cix":2,"bm":0,"ix":71,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.029,-2.312],[0,0],[0,0]],"o":[[0,0],[0,0],[-2.321,-0.029],[0,0],[0,0],[0,0]],"v":[[8.173,-2.597],[7.65,-2.604],[-3.89,-2.752],[-8.155,1.405],[-8.161,1.873],[-8.173,2.781]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1257.193,633.449],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 72","np":2,"cix":2,"bm":0,"ix":72,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.108,-0.247],[-0.147,-0.002],[0,0]],"o":[[0,0],[-0.028,2.165],[0.146,0.011],[0,0],[0,0]],"v":[[-2.75,-2.229],[-2.752,-2.046],[0.974,2.186],[1.405,2.21],[2.781,2.228]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1251.831,637.367],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 73","np":2,"cix":2,"bm":0,"ix":73,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.312,0.03],[0,0]],"o":[[0,0],[0.029,-2.321],[0,0],[0,0]],"v":[[2.637,6.614],[2.752,-2.331],[-1.405,-6.595],[-2.781,-6.614]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1257.906,646.16],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 74","np":2,"cix":2,"bm":0,"ix":74,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.32,0.029],[0,0]],"o":[[0,0],[-0.029,2.312],[0,0],[0,0]],"v":[[4.174,-2.432],[4.165,-1.753],[-0.099,2.404],[-4.173,2.351]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1256.406,655.28],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 75","np":2,"cix":2,"bm":0,"ix":75,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.312,-0.029],[0,0],[0,0]],"o":[[0,0],[-0.029,2.312],[0,0],[0,0],[0,0]],"v":[[-2.743,-2.476],[-2.752,-1.797],[1.405,2.458],[1.809,2.464],[2.781,2.476]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1250.424,655.149],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 76","np":2,"cix":2,"bm":0,"ix":76,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.275,-0.058],[0.026,-2.027],[0,0],[0,0]],"o":[[0,0],[0.284,0.003],[1.912,0.419],[0,0],[0,0],[0,0]],"v":[[-2.431,-3.513],[-1.752,-3.504],[-0.909,-3.411],[2.405,0.76],[2.375,3.091],[2.369,3.513]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1245.407,649.584],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 77","np":2,"cix":2,"bm":0,"ix":77,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.321,-0.029],[0,0]],"o":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[-3.793,8.533],[-3.791,8.377],[-3.628,-4.347],[0.637,-8.504],[3.793,-8.463]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1238.229,654.586],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 78","np":2,"cix":2,"bm":0,"ix":78,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.029,2.312],[0,0]],"o":[[0,0],[-2.312,-0.029],[0,0],[0,0]],"v":[[2.433,5.613],[1.754,5.604],[-2.403,1.349],[-2.313,-5.614]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1236.816,668.578],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 79","np":2,"cix":2,"bm":0,"ix":79,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.311,0.029],[0,0]],"o":[[0,0],[-0.029,2.312],[0,0],[0,0]],"v":[[5.618,-2.432],[5.609,-1.754],[1.345,2.404],[-5.618,2.313]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1245.416,671.985],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 80","np":2,"cix":2,"bm":0,"ix":80,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0]],"o":[[0,0],[0,0],[0.029,-2.321],[0,0],[0,0],[0,0]],"v":[[-5.613,2.428],[-5.61,2.171],[-5.604,1.758],[-1.34,-2.398],[4.807,-2.32],[5.614,-2.309]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1256.561,667.38],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 81","np":2,"cix":2,"bm":0,"ix":81,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[2.312,0.029],[0,0]],"o":[[0,0],[0.029,-2.321],[0,0],[0,0]],"v":[[4.438,4.375],[4.495,-0.047],[0.338,-4.311],[-4.524,-4.374]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1266.699,669.445],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 82","np":2,"cix":2,"bm":0,"ix":82,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[2.312,0.029],[0,0],[0,0]],"v":[[-4.428,8.644],[-0.006,8.701],[4.258,4.544],[4.428,-8.73]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1266.643,683.412],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 83","np":2,"cix":2,"bm":0,"ix":83,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.321,-0.03],[0,0]],"o":[[0,0],[0,0],[0.029,-2.321],[0,0],[0,0]],"v":[[-6.79,18.377],[-6.781,17.57],[-6.372,-14.19],[-2.109,-18.346],[6.791,-18.232]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1255.203,710.341],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 84","np":2,"cix":2,"bm":0,"ix":84,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.312],[0,0]],"o":[[0,0],[2.312,0.03],[0,0],[0,0]],"v":[[-2.672,4.032],[-1.645,4.045],[2.62,-0.112],[2.671,-4.075]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1245.741,732.792],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 85","np":2,"cix":2,"bm":0,"ix":85,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.312],[0,0]],"o":[[0,0],[-2.312,-0.03],[0,0],[0,0]],"v":[[2.607,4.524],[1.58,4.511],[-2.577,0.246],[-2.516,-4.524]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1240.196,732.297],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 86","np":2,"cix":2,"bm":0,"ix":86,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"o":[[0,0],[2.321,0.03],[0,0],[0,0],[0,0]],"v":[[-6.245,-5.305],[2.057,-5.198],[6.214,-0.933],[6.169,2.553],[6.134,5.305]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1231.456,725.219],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 87","np":2,"cix":2,"bm":0,"ix":87,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.321],[0,0]],"o":[[0,0],[2.339,0.03],[0,0],[0,0]],"v":[[-4.437,-8.799],[0.205,-8.74],[4.407,-4.474],[4.237,8.8]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1225.738,743.161],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 88","np":2,"cix":2,"bm":0,"ix":88,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-0.029,2.312],[0,0],[0,0]],"o":[[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0],[0,0]],"v":[[7.001,3.37],[4.524,3.338],[-2.815,3.244],[-6.972,-1.021],[-6.95,-2.727],[-6.941,-3.37]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1216.775,731.106],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 89","np":2,"cix":2,"bm":0,"ix":89,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-0.029,2.321],[0,0]],"o":[[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0]],"v":[[7.006,6.686],[1.786,6.619],[-2.819,6.56],[-6.976,2.295],[-6.861,-6.686]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1227.179,762.569],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 90","np":2,"cix":2,"bm":0,"ix":90,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0.029,-2.321],[0,0],[0,0]],"o":[[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0,0]],"v":[[-7.001,-6.282],[-4.625,-6.252],[2.815,-6.156],[6.972,-1.891],[6.908,3.044],[6.867,6.282]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1213.355,752.838],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 91","np":2,"cix":2,"bm":0,"ix":91,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.029,2.312],[0,0]],"o":[[0,0],[-2.312,-0.029],[0,0],[0,0]],"v":[[5.818,2.625],[-1.632,2.529],[-5.789,-1.735],[-5.777,-2.625]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1200.536,743.931],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 92","np":2,"cix":2,"bm":0,"ix":92,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0]],"o":[[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[0,0]],"v":[[-6.492,-4.075],[-6.497,-3.644],[-6.54,-0.305],[-2.393,3.96],[6.194,4.07],[6.57,4.075]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1169.369,715.235],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 93","np":2,"cix":2,"bm":0,"ix":93,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0]],"o":[[0,0],[0.03,-2.311],[0,0],[0,0],[0,0]],"v":[[-8.794,3.983],[-8.746,0.203],[-4.481,-3.953],[6.583,-3.811],[8.794,-3.783]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1218.628,723.753],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 94","np":2,"cix":2,"bm":0,"ix":94,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-0.03,2.312],[0,0]],"o":[[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0]],"v":[[4.63,10.632],[1.392,10.59],[-0.443,10.567],[-4.6,6.311],[-4.383,-10.632]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1153.658,687.725],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 95","np":2,"cix":2,"bm":0,"ix":95,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"o":[[0,0],[2.321,0.03],[0,0],[0,0],[0,0]],"v":[[-4.249,-6.155],[0.063,-6.1],[4.219,-1.835],[4.161,2.752],[4.117,6.155]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1179.811,725.516],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 96","np":2,"cix":2,"bm":0,"ix":96,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[-2.311,-0.03],[0,0],[0,0]],"v":[[5.332,4.733],[-1.146,4.651],[-5.302,0.385],[-5.237,-4.733]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1189.164,736.404],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 97","np":2,"cix":2,"bm":0,"ix":97,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0.03,-2.312],[0,0]],"o":[[0,0],[2.312,0.03],[0,0],[0,0]],"v":[[-2.364,-6.401],[-1.823,-6.394],[2.334,-2.13],[2.225,6.401]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1160.652,704.759],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 98","np":2,"cix":2,"bm":0,"ix":98,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-3.618,2.339]],"o":[[3.443,-3.03],[0,0]],"v":[[-5.731,4.409],[5.731,-4.409]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1177.401,647.868],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 99","np":2,"cix":2,"bm":0,"ix":99,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-6.018,0.638]],"o":[[5.527,-1.709],[0,0]],"v":[[-9.386,1.815],[9.386,-1.815]],"c":false},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.01568627451,0.133333333333,0.247058838489,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":1,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[1225.397,627.064],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 100","np":2,"cix":2,"bm":0,"ix":100,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-2.312,-0.03],[0,0],[0,0],[0.03,-2.321],[0,0],[0,0],[10.903,21.977],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[2.311,0.03],[0,0],[0,0],[-21.568,-11.654],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0,0],[-0.029,2.321]],"v":[[11.571,-0.311],[13.562,-0.303],[21.047,-0.208],[25.203,4.057],[24.928,25.569],[24.759,25.88],[-25.234,-25.876],[-24.059,-25.88],[3.453,-25.527],[7.609,-21.271],[7.608,-21.089],[7.626,-20.418],[7.422,-4.576]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.011764706817,0.831372608858,0.486274539723,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1166.309,821.582],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 101","np":2,"cix":2,"bm":0,"ix":101,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0,0],[-0.029,2.321],[0,0],[0,0],[0,0],[2.107,0.247],[0,0],[-8.167,-3.445],[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0.026,-2.028]],"o":[[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.027,-2.165],[0,0],[9,1.529],[0,0],[0,0],[-0.029,2.311],[0,0],[0,0],[-1.913,0.37],[0,0]],"v":[[3.458,6.891],[3.476,6.891],[3.459,8.267],[-0.806,12.424],[-4.622,12.375],[-4.621,12.265],[-5.63,12.252],[-9.787,7.987],[-9.648,-2.865],[-9.557,-3.506],[-9.554,-3.69],[-13.28,-7.921],[-12.534,-12.454],[13.28,-4.938],[13.176,-4.683],[13.141,-1.967],[8.877,2.189],[8.693,2.187],[6.877,2.164],[3.466,6.249]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.011764706817,0.831372608858,0.486274539723,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1279.931,638.762],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 102","np":2,"cix":2,"bm":0,"ix":102,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[0,0],[2.32,0.03],[0,0],[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[0,0],[2.311,0.03],[0,0],[0,0],[0,0],[-0.029,2.312],[0,0],[0,0],[-2.005,2.516],[0,0],[-3.842,-0.902],[0,0],[-3.385,-0.043],[0,0],[-3.617,2.339],[0,0],[-3.348,-2.181],[0,0],[-3.286,-2.061],[0,0],[-2.836,-2.826],[0,0],[-6.018,0.639],[0,0],[-1.974,-3.493],[0,0],[-1.742,-3.61],[0,0],[-2.49,-0.436],[0,0],[0.147,0.002],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[-2.107,-0.247],[0,0],[0,0],[0.03,-2.321],[0,0],[0,0],[0,0],[2.321,0.029],[0,0],[0,0],[0,0],[-0.029,2.312],[0,0],[0,0],[0,0],[1.912,0.419],[0,0],[0,0],[0.03,-2.311],[0,0],[0,0],[0,0],[-2.311,-0.03],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[-2.321,-0.029],[0,0],[0,0],[0,0],[0.029,-2.321],[0,0],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0,0],[0.03,-2.321],[0,0],[0,0],[0,0],[2.312,0.029],[0,0],[0,0],[0,0],[-0.029,2.312],[0,0],[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0,0],[0.029,-2.312],[0,0],[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0],[0,0],[0.03,-2.321],[0,0],[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[0,0],[-2.312,-0.029],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0,0],[0.03,-2.311],[0,0],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[2.44,0.031],[2.594,0.208],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[-0.03,2.311],[0,0],[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0,0],[-0.029,2.311],[0,0],[0,0],[0,0],[-2.321,-0.03]],"o":[[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.03,-2.321],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[0,0],[-2.312,-0.029],[0,0],[0,0],[1.805,-2.675],[0,0],[-1.427,-6.79],[0,0],[-0.635,-5.513],[0,0],[3.443,-3.03],[0,0],[0.752,-7.092],[0,0],[1.151,-6.748],[0,0],[2.17,-6.817],[0,0],[5.527,-1.709],[0,0],[3.94,-5.968],[0,0],[4.303,-5.706],[0,0],[2.547,0.271],[0,0],[-0.147,-0.011],[0,0],[0,0],[0,0],[-2.321,-0.029],[0,0],[0,0],[-0.028,2.165],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0,0],[-0.029,2.312],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.026,-2.028],[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[2.312,0.029],[0,0],[0,0],[0,0],[0.03,-2.321],[0,0],[0,0],[0,0],[2.312,0.029],[0,0],[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[0,0],[-2.321,-0.029],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[0,0],[-2.321,-0.029],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[2.339,0.03],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[-0.03,2.321],[0,0],[0,0],[-2.311,-0.029],[0,0],[0,0],[-2.405,0.116],[-2.642,-0.034],[0,0],[0,0],[0.03,-2.321],[0,0],[0,0],[0,0],[2.312,0.03],[0,0],[0,0],[0,0],[0.029,-2.312],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.03,-2.321],[0,0]],"v":[[1.019,28.912],[-3.586,28.853],[-7.743,24.588],[-7.628,15.607],[-7.683,15.606],[-7.62,10.671],[-11.776,6.406],[-19.216,6.311],[-21.592,6.28],[-29.041,6.185],[-33.198,1.92],[-33.186,1.03],[-33.45,0.862],[-39.927,0.779],[-44.084,-3.486],[-44.018,-8.605],[-43.975,-12.008],[-43.916,-16.595],[-48.072,-20.86],[-52.384,-20.915],[-52.383,-20.97],[-60.97,-21.08],[-65.117,-25.345],[-65.075,-28.684],[-65.069,-29.115],[-64.96,-37.647],[-69.116,-41.912],[-69.658,-41.919],[-72.896,-41.96],[-74.731,-41.984],[-78.888,-46.239],[-78.67,-63.183],[-78.952,-63.37],[-73.228,-71.151],[-73.191,-71.159],[-65.468,-79.566],[-65.342,-80.124],[-58.938,-87.951],[-56.277,-87.999],[-44.814,-96.816],[-44.43,-97.435],[-34.284,-103.003],[-34.228,-103.094],[-24.178,-108.305],[-23.498,-108.379],[-12.435,-111.779],[-11.935,-111.396],[6.838,-115.028],[7.5,-115.175],[19.074,-115.44],[19.489,-115.664],[31.053,-115.203],[31.895,-115.018],[39.451,-113.967],[38.705,-109.435],[38.274,-109.459],[36.898,-109.476],[36.897,-109.431],[25.357,-109.579],[21.092,-105.422],[21.086,-104.954],[21.132,-104.953],[24.858,-100.722],[27.179,-100.729],[28.555,-100.711],[32.712,-96.446],[32.597,-87.502],[32.633,-87.428],[32.624,-86.749],[28.36,-82.592],[24.287,-82.645],[24.287,-82.663],[23.883,-82.668],[19.726,-86.924],[19.735,-87.603],[19.836,-87.601],[19.866,-89.931],[16.552,-94.103],[14.075,-94.153],[10.92,-94.193],[6.655,-90.037],[6.492,-77.313],[6.556,-77.312],[6.467,-70.349],[10.623,-66.093],[11.302,-66.085],[11.851,-65.977],[18.814,-65.887],[23.079,-70.044],[23.088,-70.723],[23.005,-70.724],[23.01,-71.137],[27.275,-75.294],[33.422,-75.215],[34.229,-75.205],[39.091,-75.142],[43.248,-70.877],[43.191,-66.456],[43.125,-65.594],[42.955,-52.32],[38.69,-48.163],[34.268,-48.22],[34.047,-48.167],[25.149,-48.282],[20.884,-44.125],[20.477,-12.365],[20.467,-11.558],[20.416,-7.595],[16.151,-3.438],[15.123,-3.452],[14.857,-3.455],[13.83,-3.468],[9.673,-7.733],[9.734,-12.503],[9.679,-12.504],[9.724,-15.99],[5.567,-20.255],[-2.735,-20.361],[-2.735,-20.334],[-13.799,-20.476],[-18.063,-16.319],[-18.112,-12.539],[-18.12,-11.897],[-18.142,-10.191],[-13.985,-5.926],[-6.646,-5.832],[-6.645,-5.914],[-2.003,-5.855],[2.199,-1.59],[2.029,11.685],[1.988,12.024],[1.986,12.207],[6.142,16.463],[53.616,17.071],[54.276,17.117],[55.652,17.134],[59.809,21.399],[59.707,29.371],[59.703,29.655],[59.701,29.839],[63.849,34.103],[72.582,34.215],[73.389,34.207],[74.765,34.225],[78.922,38.49],[78.596,63.91],[78.597,64.552],[78.58,65.928],[74.315,70.085],[74.131,70.083],[73.333,70.073],[64.985,69.966],[60.72,74.122],[60.386,100.185],[60.331,100.184],[60.314,101.56],[56.049,105.717],[56.049,105.726],[29.472,105.385],[25.208,109.533],[25.072,120.138],[25.113,121.212],[17.845,121.339],[9.986,120.981],[10.019,120.587],[10.302,98.497],[14.558,94.34],[14.741,94.342],[15.126,94.347],[15.31,94.349],[19.575,90.193],[19.592,88.817],[19.62,88.817],[19.794,75.249],[15.637,70.984],[14.261,70.967],[14.262,70.902],[0.501,70.726],[-3.647,66.471],[-3.312,40.353],[-3.333,39.866],[-3.247,33.151],[1.018,28.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.011764706817,0.831372608858,0.486274539723,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1227.946,740.276],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 103","np":2,"cix":2,"bm":0,"ix":103,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-0.026,2.018],[0,0],[0,0],[-3.116,-3.876],[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[2.321,0.03],[0,0],[0,0],[0,0],[0.054,2.239],[0,0],[0,0],[-2.312,-0.03],[0,0]],"o":[[1.922,-0.37],[0,0],[0,0],[3.58,3.44],[0,0],[0,0],[-0.03,2.32],[0,0],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[0,0],[-2.266,-0.029],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0]],"v":[[-3.801,-7.169],[-0.381,-11.253],[-0.379,-11.401],[-0.035,-11.763],[10.018,-0.789],[9.897,-0.69],[9.791,7.576],[5.526,11.732],[5.343,11.731],[5.315,11.731],[3.939,11.712],[-0.217,7.448],[-0.215,7.264],[-0.238,6.934],[-0.236,6.75],[-4.393,2.486],[-5.769,2.467],[-5.768,2.44],[-5.869,2.439],[-10.019,-1.66],[-9.973,-1.659],[-9.956,-3.035],[-5.691,-7.193],[-5.507,-7.19]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.011764706817,0.831372608858,0.486274539723,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1329.558,669.532],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 104","np":2,"cix":2,"bm":0,"ix":104,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-0.03,2.312],[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0],[-2.307,-6.901],[0,0],[0,0],[0.383,-1.95],[0.003,-0.257],[0,0],[2.064,0.026],[0,0],[0,0],[0,0],[-0.03,2.312],[0,0],[0,0],[0,0],[-2.312,-0.029],[0,0],[0,0]],"o":[[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[3.498,6.266],[0,0],[0,0],[-2.054,-0.027],[-0.049,0.247],[0,0],[-0.373,1.95],[0,0],[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0],[0,0],[0.03,-2.312],[0,0],[0,0],[2.312,0.029]],"v":[[-3.688,-8.757],[-3.761,-8.758],[-3.745,-10.033],[0.52,-14.19],[6.272,-14.116],[6.992,-14.52],[15.749,5.273],[14.652,5.645],[7.386,5.552],[3.205,8.948],[3.122,9.699],[3.104,11.075],[-1.077,14.481],[-1.252,14.478],[-1.546,14.52],[-11.564,14.392],[-15.72,10.136],[-15.6,0.761],[-15.655,0.76],[-15.638,-0.579],[-11.373,-4.727],[-7.952,-4.683],[-7.953,-4.609]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.011764706817,0.831372608858,0.486274539723,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1343.883,699.996],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 105","np":2,"cix":2,"bm":0,"ix":105,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[-2.321,-0.03],[0,0],[0,0],[0.03,-2.312],[0,0],[-2.266,-0.029],[0,0],[0,0],[0.038,-2.926],[7.694,-15.454],[0,0],[0,0],[-0.029,2.312],[0,0],[0,0],[0,0],[-1.913,0.37],[0,0],[0,0],[-0.03,2.321],[0,0]],"o":[[0,0],[0.03,-2.311],[0,0],[0,0],[2.311,0.03],[0,0],[0.035,2.249],[0,0],[0,0],[0.174,2.884],[-0.236,18.412],[0,0],[0,0],[-2.312,-0.03],[0,0],[0,0],[0,0],[0.026,-2.027],[0,0],[0,0],[2.321,0.03],[0,0],[0,0]],"v":[[-9.508,-21.304],[-9.396,-30.047],[-5.131,-34.194],[-4.233,-34.238],[8.923,-34.069],[13.071,-29.804],[13.108,-29.804],[17.256,-25.686],[18.633,-25.668],[19.405,-25.723],[19.614,-17.004],[7.259,34.238],[6.975,34.096],[-15.454,33.809],[-19.611,29.544],[-19.609,29.36],[-19.651,29.131],[-19.127,-11.711],[-15.718,-15.796],[-14.011,-15.774],[-13.828,-15.772],[-9.562,-19.928],[-9.546,-21.304]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.011764706817,0.831372608858,0.486274539723,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1346.193,761.631],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 106","np":2,"cix":2,"bm":0,"ix":106,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"earth water fill PEG","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[1244.654,735.19,0],"to":[-46.167,0,0],"ti":[46.167,0,0]},{"t":146,"s":[967.654,735.19,0]}],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":146,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"earth water mask Outlines","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[965.53,543.11,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-13.741,-5.975],[0,0],[30.062,0.385],[21.349,23.707],[0,0],[-3.949,-1.885],[-12.513,-0.106],[-25.803,-0.606]],"o":[[0,0],[-21.125,18.18],[-34.42,-0.442],[0,0],[3.986,1.859],[11.289,5.393],[25.807,0.23],[14.804,0.346]],"v":[[81.906,-7.919],[82.674,-7.019],[3.896,21.616],[-82.674,-17.599],[-82.062,-18.151],[-70.188,-12.448],[-34.457,-1.979],[39.91,-21.395]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1241.895,839.999],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-19.218,-26.065],[0,0],[20.252,0.48],[25.266,0.223],[11.051,5.39],[3.739,1.782],[0,0],[-31.878,-0.409],[-2.292,-0.158],[0,0]],"o":[[0,0],[-19.476,-5.25],[-25.271,-0.599],[-12.256,-0.102],[-3.72,-1.818],[0,0],[21.554,-20.202],[2.331,0.03],[0,0],[34.021,3.574]],"v":[[88.347,24.04],[88.134,24.193],[30.755,4.694],[-42.072,24.129],[-77.059,13.67],[-88.229,8.196],[-88.346,8.066],[-5.818,-23.943],[1.124,-23.652],[5.453,-23.541]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1254.388,648.799],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-23.863,-2.315],[0,0],[11.634,-10.008],[0,0],[14.805,0.346],[25.807,0.23],[11.29,5.393],[3.986,1.859],[0,0],[4.58,19.923],[0,0],[-1.721,-0.334],[-11.299,-5.393],[-12.513,-0.115],[-25.803,-0.606]],"o":[[0,0],[-7.04,13.801],[0,0],[-13.741,-5.975],[-25.802,-0.606],[-12.514,-0.106],[-3.948,-1.885],[0,0],[-13.244,-14.713],[0,0],[1.769,0.169],[12.292,2.388],[11.289,5.393],[25.807,0.22],[23.967,0.564]],"v":[[109.249,-7.557],[110.562,-6.898],[82.215,29.146],[81.448,28.245],[39.45,14.77],[-34.916,34.185],[-70.647,23.716],[-82.521,18.013],[-83.133,18.565],[-110.562,-34.104],[-109.154,-34.416],[-103.906,-33.661],[-69.088,-19.901],[-33.357,-9.422],[41.001,-28.848]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1242.354,803.834],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[11.159,2.675],[0.037,0.01],[-3.176,4.418],[-5.638,5.277],[0,0],[-3.721,-1.819],[-12.257,-0.103],[-25.27,-0.599],[-19.476,-5.251],[0,0],[-3.819,-14.885],[0,0],[3.335,0.327],[23.83,0.563],[25.66,0.219],[11.226,5.393]],"o":[[-0.037,-0.01],[2.558,-4.848],[4.521,-6.292],[0,0],[3.739,1.782],[11.051,5.39],[25.266,0.223],[20.253,0.48],[0,0],[8.883,12.033],[0,0],[-3.335,0.333],[-23.725,-2.314],[-25.646,-0.604],[-12.44,-0.113],[-10.386,-4.996]],"v":[[-109.862,4.746],[-109.973,4.718],[-101.353,-9.201],[-86.073,-26.594],[-85.955,-26.464],[-74.786,-20.99],[-39.797,-10.531],[33.027,-29.966],[90.407,-10.466],[90.62,-10.62],[109.973,30.053],[109.347,30.221],[99.308,30.239],[31.464,8.953],[-42.461,28.384],[-77.983,17.909]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1252.114,683.459],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-4.691,0.876],[0,0],[6.287,-12.306],[0,0],[23.967,0.564],[25.807,0.221],[11.29,5.393],[12.292,2.387],[1.769,0.169],[0,0],[-0.125,9.678],[-0.415,3.748],[0,0],[-3.039,-0.599],[-11.152,-5.401],[-12.367,-0.104],[-25.49,-0.602],[-23.569,-2.312]],"o":[[0,0],[-1.643,14.347],[0,0],[-23.862,-2.316],[-25.802,-0.606],[-12.514,-0.114],[-11.299,-5.393],[-1.72,-0.334],[0,0],[-2.077,-9.037],[0.049,-3.844],[0,0],[3.129,0.031],[12.136,2.376],[11.153,5.391],[25.495,0.226],[23.674,0.551],[4.756,0.465]],"v":[[117.5,-6.894],[118.178,-6.83],[106.056,33.367],[104.743,32.708],[36.496,11.418],[-37.861,30.842],[-73.593,20.365],[-108.411,6.605],[-113.659,5.85],[-115.066,6.162],[-118.054,-21.98],[-117.358,-33.367],[-116.616,-33.284],[-107.315,-32.32],[-72.929,-18.566],[-37.628,-8.103],[35.839,-27.53],[103.252,-6.251]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1246.858,763.569],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0.138,-10.752],[0.455,-3.977],[0,0],[4.756,0.465],[23.674,0.551],[25.495,0.226],[11.152,5.391],[12.136,2.376],[3.128,0.031],[0,0],[-6.697,12.787],[-10.387,-4.996],[-12.44,-0.114],[-25.646,-0.605],[-23.725,-2.313],[-3.335,0.334],[0,0]],"o":[[-0.052,4.091],[0,0],[-4.691,0.876],[-23.569,-2.312],[-25.49,-0.603],[-12.367,-0.103],[-11.152,-5.401],[-3.038,-0.598],[0,0],[1.624,-15.026],[11.159,2.675],[11.225,5.392],[25.661,0.219],[23.83,0.562],[3.336,0.328],[0,0],[2.561,9.933]],"v":[[118.084,21.633],[117.314,33.745],[116.636,33.681],[102.388,34.324],[34.975,13.044],[-38.492,32.471],[-73.793,22.008],[-108.18,8.254],[-117.48,7.291],[-118.222,7.208],[-105.471,-34.789],[-73.591,-21.626],[-38.071,-11.151],[35.855,-30.581],[103.699,-9.297],[113.737,-9.315],[114.363,-9.482]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1247.723,722.994],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"earth water fill Outlines","parent":2,"tt":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[-229.124,-142.08,0],"ix":2,"l":2},"a":{"a":0,"k":[965.53,543.11,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.03,12.99],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03],[22.05,13.04],[0,0],[0,0],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03],[22.03,12.99],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03]],"o":[[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.11,12.76],[0,0],[0,0],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75]],"v":[[-138.45,32.135],[-138.47,32.165],[-207.74,32.085],[-207.88,32.165],[-276.84,32.165],[-346.11,32.085],[-346.26,32.165],[-415.53,32.085],[-415.53,-45.205],[415.53,-45.205],[415.53,32.165],[346.26,32.085],[346.12,32.165],[277.16,32.165],[207.89,32.085],[207.74,32.165],[138.55,32.135],[138.53,32.165],[69.26,32.085],[69.12,32.165],[0.16,32.165],[-69.11,32.085],[-69.26,32.165]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.003921568627,0.521568627451,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1314.559,630.685],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.03,12.99],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03],[22.05,13.04],[0,0],[-24.11,12.76],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03],[22.03,12.99],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03]],"o":[[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.11,12.76],[0,0],[22.05,13.05],[0.05,-0.03],[22.05,-12.99],[22.05,13.05],[0.05,-0.03],[22.06,-12.99],[0,0],[22.03,13],[0.05,-0.03],[22.05,-12.99],[22.05,13.05],[0.05,-0.03],[22.06,-12.99],[0,0],[22.03,13],[0.05,-0.03],[22.05,-12.99],[22.05,13.05],[0.05,-0.03],[22.06,-12.99],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75]],"v":[[-138.45,20.675],[-138.47,20.705],[-207.74,20.625],[-207.88,20.705],[-276.84,20.705],[-346.11,20.625],[-346.26,20.705],[-415.53,20.625],[-415.53,-20.755],[-346.26,-20.675],[-346.11,-20.755],[-276.84,-20.675],[-207.88,-20.675],[-207.74,-20.755],[-138.47,-20.675],[-138.45,-20.705],[-69.26,-20.675],[-69.11,-20.755],[0.16,-20.675],[69.12,-20.675],[69.26,-20.755],[138.53,-20.675],[138.55,-20.705],[207.74,-20.675],[207.89,-20.755],[277.16,-20.675],[346.12,-20.675],[346.26,-20.755],[415.53,-20.675],[415.53,20.705],[346.26,20.625],[346.12,20.705],[277.16,20.705],[207.89,20.625],[207.74,20.705],[138.55,20.675],[138.53,20.705],[69.26,20.625],[69.12,20.705],[0.16,20.705],[-69.11,20.625],[-69.26,20.705]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.003921568627,0.521568627451,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1314.559,724.895],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.03,13],[0,0],[22.06,-12.99],[0.05,-0.03],[22.05,13.05],[22.05,-12.99],[0.05,-0.03],[22.05,13.05],[0,0],[-24.11,12.76],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[22.06,-12.99],[0.05,-0.03],[22.05,13.05],[22.05,-12.99],[0.05,-0.03],[22.03,13],[0,0],[22.06,-12.99],[0.05,-0.03],[22.05,13.05],[22.05,-12.99],[0.05,-0.03]],"o":[[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.11,12.76],[0,0],[22.05,13.04],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[22.03,12.99],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[22.03,12.99],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75]],"v":[[-138.45,20.67],[-138.47,20.7],[-207.74,20.62],[-207.88,20.7],[-276.84,20.7],[-346.11,20.62],[-346.26,20.7],[-415.53,20.62],[-415.53,-20.75],[-346.26,-20.67],[-346.11,-20.75],[-276.84,-20.67],[-207.88,-20.67],[-207.74,-20.75],[-138.47,-20.67],[-138.45,-20.7],[-69.26,-20.67],[-69.11,-20.75],[0.16,-20.67],[69.12,-20.67],[69.26,-20.75],[138.53,-20.67],[138.55,-20.7],[207.74,-20.67],[207.89,-20.75],[277.16,-20.67],[346.12,-20.67],[346.26,-20.75],[415.53,-20.67],[415.53,20.7],[346.26,20.62],[346.12,20.7],[277.16,20.7],[207.89,20.62],[207.74,20.7],[138.55,20.67],[138.53,20.7],[69.26,20.62],[69.12,20.7],[0.16,20.7],[-69.11,20.62],[-69.26,20.7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.003921568627,0.521568627451,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1314.559,807.64],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 3","np":2,"cix":2,"bm":0,"ix":3,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.03,12.99],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03],[22.05,13.04],[0,0],[-24.11,12.76],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03],[22.03,12.99],[0,0],[22.06,-13],[0.05,-0.03],[22.05,13.04],[22.05,-13],[0.05,-0.03]],"o":[[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.11,12.76],[0,0],[22.05,13.04],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[22.03,12.99],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[22.03,12.99],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75]],"v":[[-138.45,20.675],[-138.47,20.705],[-207.74,20.625],[-207.88,20.705],[-276.84,20.705],[-346.11,20.625],[-346.26,20.705],[-415.53,20.625],[-415.53,-20.745],[-346.26,-20.665],[-346.11,-20.745],[-276.84,-20.665],[-207.88,-20.665],[-207.74,-20.745],[-138.47,-20.665],[-138.45,-20.695],[-69.26,-20.665],[-69.11,-20.745],[0.16,-20.665],[69.12,-20.665],[69.26,-20.745],[138.53,-20.665],[138.55,-20.695],[207.74,-20.665],[207.89,-20.745],[277.16,-20.665],[346.12,-20.665],[346.26,-20.745],[415.53,-20.665],[415.53,20.705],[346.26,20.625],[346.12,20.705],[277.16,20.705],[207.89,20.625],[207.74,20.705],[138.55,20.675],[138.53,20.705],[69.26,20.625],[69.12,20.705],[0.16,20.705],[-69.11,20.625],[-69.26,20.705]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352941176471,0.690196078431,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1314.559,766.265],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 4","np":2,"cix":2,"bm":0,"ix":4,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[22.03,13],[0,0],[22.06,-12.99],[0.05,-0.03],[22.05,13.05],[22.05,-12.99],[0.05,-0.03],[22.05,13.05],[0,0],[-24.11,12.76],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[22.06,-12.99],[0.05,-0.03],[22.05,13.05],[22.05,-12.99],[0.05,-0.03],[22.03,13],[0,0],[22.06,-12.99],[0.05,-0.03],[22.05,13.05],[22.05,-12.99],[0.05,-0.03]],"o":[[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.11,12.76],[0,0],[22.05,13.04],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[22.03,12.99],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[22.03,12.99],[0.05,-0.03],[22.05,-13],[22.05,13.04],[0.05,-0.03],[22.06,-13],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75],[0,0],[-24.11,-12.81],[-0.05,0.03],[-24.11,12.76],[-24.11,-12.81],[-0.05,0.02],[-24.08,12.75]],"v":[[-138.45,20.67],[-138.47,20.7],[-207.74,20.62],[-207.88,20.7],[-276.84,20.7],[-346.11,20.62],[-346.26,20.7],[-415.53,20.62],[-415.53,-20.75],[-346.26,-20.67],[-346.11,-20.75],[-276.84,-20.67],[-207.88,-20.67],[-207.74,-20.75],[-138.47,-20.67],[-138.45,-20.7],[-69.26,-20.67],[-69.11,-20.75],[0.16,-20.67],[69.12,-20.67],[69.26,-20.75],[138.53,-20.67],[138.55,-20.7],[207.74,-20.67],[207.89,-20.75],[277.16,-20.67],[346.12,-20.67],[346.26,-20.75],[415.53,-20.67],[415.53,20.7],[346.26,20.62],[346.12,20.7],[277.16,20.7],[207.89,20.62],[207.74,20.7],[138.55,20.67],[138.53,20.7],[69.26,20.62],[69.12,20.7],[0.16,20.7],[-69.11,20.62],[-69.26,20.7]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352941176471,0.690196078431,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1314.559,683.52],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 5","np":2,"cix":2,"bm":0,"ix":5,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-24.11,-12.81],[0,0],[0,0],[0,0],[-24.11,12.76],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03],[-24.11,-12.81],[0,0],[-24.08,12.75],[-0.05,0.02],[-24.11,-12.81],[-24.11,12.76],[-0.05,0.03]],"o":[[0,0],[0,0],[0,0],[22.05,13.05],[0.05,-0.03],[22.05,-12.99],[22.05,13.05],[0.05,-0.03],[22.06,-12.99],[0,0],[22.03,13],[0.05,-0.03],[22.05,-12.99],[22.05,13.05],[0.05,-0.03],[22.06,-12.99],[0,0],[22.03,13],[0.05,-0.03],[22.05,-12.99],[22.05,13.05],[0.05,-0.03],[22.06,-12.99]],"v":[[415.53,-25.915],[415.53,38.985],[-415.53,38.985],[-415.53,-25.995],[-346.26,-25.915],[-346.11,-25.995],[-276.84,-25.915],[-207.88,-25.915],[-207.74,-25.995],[-138.47,-25.915],[-138.45,-25.945],[-69.26,-25.915],[-69.11,-25.995],[0.16,-25.915],[69.12,-25.915],[69.26,-25.995],[138.53,-25.915],[138.55,-25.945],[207.74,-25.915],[207.89,-25.995],[277.16,-25.915],[346.12,-25.915],[346.26,-25.995]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.352941176471,0.690196078431,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[1314.559,854.255],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 6","np":2,"cix":2,"bm":0,"ix":6,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":146,"st":0,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"Comp 1","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[187.5,126,0],"ix":2,"l":2},"a":{"a":0,"k":[200,200,0],"ix":1,"l":2},"s":{"a":0,"k":[66,66,100],"ix":6,"l":2}},"ao":0,"w":400,"h":400,"ip":0,"op":146,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/assets/images/heart.svg b/assets/images/heart.svg new file mode 100644 index 000000000000..95e73f329cfa --- /dev/null +++ b/assets/images/heart.svg @@ -0,0 +1,7 @@ + + + + + diff --git a/assets/images/simple-illustrations/simple-illustration__email-address.svg b/assets/images/simple-illustrations/simple-illustration__email-address.svg new file mode 100644 index 000000000000..a8f0db9a4f8b --- /dev/null +++ b/assets/images/simple-illustrations/simple-illustration__email-address.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + diff --git a/config/electronBuilder.config.js b/config/electronBuilder.config.js index da87c93ee367..a5478dbd8f78 100644 --- a/config/electronBuilder.config.js +++ b/config/electronBuilder.config.js @@ -21,6 +21,24 @@ const macIcon = { adhoc: './desktop/icon-adhoc.png', }; +const appIds = { + production: 'com.expensifyreactnative.chat', + staging: 'com.expensifyreactnative.dev.chat', + adhoc: 'com.expensifyreactnative.adhoc.chat', +}; + +const productNames = { + production: 'New Expensify', + staging: 'New Expensify Dev', + adhoc: 'New Expensify AdHoc', +}; + +const artifactNames = { + production: 'NewExpensify.dmg', + staging: 'NewExpensifyDev.dmg', + adhoc: 'NewExpensifyAdHoc.dmg', +}; + const isCorrectElectronEnv = ['production', 'staging', 'adhoc'].includes(process.env.ELECTRON_ENV); if (!isCorrectElectronEnv) { @@ -32,8 +50,8 @@ if (!isCorrectElectronEnv) { * It can be used to create local builds of the same, by omitting the `--publish` flag */ module.exports = { - appId: 'com.expensifyreactnative.chat', - productName: 'New Expensify', + appId: appIds[process.env.ELECTRON_ENV], + productName: productNames[process.env.ELECTRON_ENV], extraMetadata: { version, }, @@ -46,8 +64,8 @@ module.exports = { type: 'distribution', }, dmg: { - title: 'New Expensify', - artifactName: 'NewExpensify.dmg', + title: productNames[process.env.ELECTRON_ENV], + artifactName: artifactNames[process.env.ELECTRON_ENV], internetEnabled: true, }, publish: [ @@ -65,7 +83,7 @@ module.exports = { output: 'desktop-build', }, protocols: { - name: 'New Expensify', + name: productNames[process.env.ELECTRON_ENV], schemes: ['new-expensify'], }, }; diff --git a/config/webpack/webpack.common.js b/config/webpack/webpack.common.js index f3c02b286623..7dc851c95c9e 100644 --- a/config/webpack/webpack.common.js +++ b/config/webpack/webpack.common.js @@ -194,7 +194,7 @@ const webpackConfig = ({envFile = '.env', platform = 'web'}) => ({ // This is also why we have to use .website.js for our own web-specific files... // Because desktop also relies on "web-specific" module implementations // This also skips packing web only dependencies to desktop and vice versa - extensions: ['.web.js', platform === 'web' ? '.website.js' : '.desktop.js', '.js', '.jsx', '.web.ts', platform === 'web' ? '.website.ts' : '.desktop.ts', '.ts', '.tsx'], + extensions: ['.web.js', platform === 'web' ? '.website.js' : '.desktop.js', '.js', '.jsx', '.web.ts', platform === 'web' ? '.website.ts' : '.desktop.ts', '.ts', '.web.tsx', '.tsx'], fallback: { 'process/browser': require.resolve('process/browser'), }, diff --git a/config/webpack/webpack.dev.js b/config/webpack/webpack.dev.js index af302a0e663e..19999491395e 100644 --- a/config/webpack/webpack.dev.js +++ b/config/webpack/webpack.dev.js @@ -24,6 +24,7 @@ module.exports = (env = {}) => '/api': 'http://[::1]:9000', '/staging': 'http://[::1]:9000', '/chat-attachments': 'http://[::1]:9000', + '/receipts': 'http://[::1]:9000', }, }; diff --git a/contributingGuides/CONTRIBUTING.md b/contributingGuides/CONTRIBUTING.md index 42db4f642943..ae2b98ece85b 100644 --- a/contributingGuides/CONTRIBUTING.md +++ b/contributingGuides/CONTRIBUTING.md @@ -81,9 +81,9 @@ A job could be fixing a bug or working on a new feature. There are two ways you This is the most common scenario for contributors. The Expensify team posts new jobs to the Upwork job list [here](https://www.upwork.com/ab/jobs/search/?q=Expensify%20React%20Native&sort=recency&user_location_match=2) (you must be signed in to Upwork to view jobs). Each job in Upwork has a corresponding GitHub issue, which will include instructions to follow. You can also view all open jobs in the Expensify/App GH repository by searching for GH issues with the [`Help Wanted` label](https://github.com/Expensify/App/issues?q=is%3Aopen+is%3Aissue+label%3A%22Help+Wanted%22). Lastly, you can follow the [@ExpensifyOSS](https://twitter.com/ExpensifyOSS) Twitter account to see a live feed of jobs that are posted. #### Raising jobs and bugs -It’s possible that you found a new bug that we haven’t posted as a job to the [GitHub repository](https://github.com/Expensify/App/issues?q=is%3Aissue). This is an opportunity to raise it and claim the bug bounty. If it's a valid bug that we choose to resolve by deploying it to production — either internally or via an external contributor — then we will compensate you $250 for identifying the bug (we do not compensate for reporting new feature requests). If the bug is fixed by a PR that is not associated with your bug report, then you will not be eligible for the corresponding compensation unless you can find the PR that fixed it and prove your bug report came first. -- Note: If you get assigned the job you proposed **and** you complete the job, this $250 for identifying the improvement is *in addition to* the reward you will be paid for completing the job. -- Note about proposed bugs: Expensify has the right not to pay the $250 reward if the suggested bug has already been reported. Following, if more than one contributor proposes the same bug, the contributor who posted it first in the [#expensify-bugs](https://expensify.slack.com/archives/C049HHMV9SM) Slack channel is the one who is eligible for the bonus. +It’s possible that you found a new bug that we haven’t posted as a job to the [GitHub repository](https://github.com/Expensify/App/issues?q=is%3Aissue). This is an opportunity to raise it and claim the bug bounty. If it's a valid bug that we choose to resolve by deploying it to production — either internally or via an external contributor — then we will compensate you $50 for identifying the bug (we do not compensate for reporting new feature requests). If the bug is fixed by a PR that is not associated with your bug report, then you will not be eligible for the corresponding compensation unless you can find the PR that fixed it and prove your bug report came first. +- Note: If you get assigned the job you proposed **and** you complete the job, this $50 for identifying the improvement is *in addition to* the reward you will be paid for completing the job. +- Note about proposed bugs: Expensify has the right not to pay the $50 reward if the suggested bug has already been reported. Following, if more than one contributor proposes the same bug, the contributor who posted it first in the [#expensify-bugs](https://expensify.slack.com/archives/C049HHMV9SM) Slack channel is the one who is eligible for the bonus. - Note: whilst you may optionally propose a solution for that job on Slack, solutions are ultimately reviewed in GitHub. The onus is on you to propose the solution on GitHub, and/or ensure the issue creator will include a link to your proposal. Please follow these steps to propose a job or raise a bug: diff --git a/contributingGuides/FORMS.md b/contributingGuides/FORMS.md index 01f145dafbc6..661c700130c7 100644 --- a/contributingGuides/FORMS.md +++ b/contributingGuides/FORMS.md @@ -274,6 +274,7 @@ Form.js will automatically provide the following props to any input with the inp - onBlur: An onBlur handler that calls validate. - onTouched: An onTouched handler that marks the input as touched. - onInputChange: An onChange handler that saves draft values and calls validate for that input (inputA). Passing an inputID as a second param allows inputA to manipulate the input value of the provided inputID (inputB). +- onFocus: An onFocus handler that marks the input as focused. ## Dynamic Form Inputs diff --git a/contributingGuides/PROPTYPES_CONVERSION_TABLE.md b/contributingGuides/PROPTYPES_CONVERSION_TABLE.md index e7584f82a351..7e1c1dda4262 100644 --- a/contributingGuides/PROPTYPES_CONVERSION_TABLE.md +++ b/contributingGuides/PROPTYPES_CONVERSION_TABLE.md @@ -1,5 +1,7 @@ # Expensify PropTypes Conversion Table +This is a reference to help you convert PropTypes to TypeScript types. + ## Table of Contents - [Important Considerations](#important-considerations) diff --git a/desktop/main.js b/desktop/main.js index b19bef060ba9..5e184d529afd 100644 --- a/desktop/main.js +++ b/desktop/main.js @@ -12,7 +12,7 @@ const CONST = require('../src/CONST').default; const Localize = require('../src/libs/Localize'); const port = process.env.PORT || 8082; -const {DESKTOP_SHORTCUT_ACCELERATOR} = CONST; +const {DESKTOP_SHORTCUT_ACCELERATOR, LOCALES} = CONST; app.setName('New Expensify'); @@ -36,25 +36,40 @@ function pasteAsPlainText(browserWindow) { browserWindow.webContents.insertText(text); } -// Initialize the right click menu -// See https://github.com/sindresorhus/electron-context-menu -// Add the Paste and Match Style command to the context menu -contextMenu({ - append: (defaultActions, parameters, browserWindow) => [ - new MenuItem({ - // Only enable the menu item for Editable context which supports paste - visible: parameters.isEditable && parameters.editFlags.canPaste, - role: 'pasteAndMatchStyle', - accelerator: DESKTOP_SHORTCUT_ACCELERATOR.PASTE_AND_MATCH_STYLE, - }), - new MenuItem({ - label: Localize.translate(CONST.LOCALES.DEFAULT, 'desktopApplicationMenu.pasteAsPlainText'), - visible: parameters.isEditable && parameters.editFlags.canPaste && clipboard.readText().length > 0, - accelerator: DESKTOP_SHORTCUT_ACCELERATOR.PASTE_AS_PLAIN_TEXT, - click: () => pasteAsPlainText(browserWindow), - }), - ], -}); +/** + * Initialize the right-click menu + * See https://github.com/sindresorhus/electron-context-menu + * + * @param {String} preferredLocale - The current user language to be used for translating menu labels. + * @returns {Function} A dispose function to clean up the created context menu. + */ + +function createContextMenu(preferredLocale = LOCALES.DEFAULT) { + return contextMenu({ + labels: { + cut: Localize.translate(preferredLocale, 'desktopApplicationMenu.cut'), + paste: Localize.translate(preferredLocale, 'desktopApplicationMenu.paste'), + copy: Localize.translate(preferredLocale, 'desktopApplicationMenu.copy'), + }, + append: (defaultActions, parameters, browserWindow) => [ + new MenuItem({ + // Only enable the menu item for Editable context which supports paste + visible: parameters.isEditable && parameters.editFlags.canPaste, + role: 'pasteAndMatchStyle', + accelerator: DESKTOP_SHORTCUT_ACCELERATOR.PASTE_AND_MATCH_STYLE, + label: Localize.translate(preferredLocale, 'desktopApplicationMenu.pasteAndMatchStyle'), + }), + new MenuItem({ + label: Localize.translate(preferredLocale, 'desktopApplicationMenu.pasteAsPlainText'), + visible: parameters.isEditable && parameters.editFlags.canPaste && clipboard.readText().length > 0, + accelerator: DESKTOP_SHORTCUT_ACCELERATOR.PASTE_AS_PLAIN_TEXT, + click: () => pasteAsPlainText(browserWindow), + }), + ], + }); +} + +let disposeContextMenu = createContextMenu(); // Send all autoUpdater logs to a log file: ~/Library/Logs/new.expensify.desktop/main.log // See https://www.npmjs.com/package/electron-log @@ -522,6 +537,8 @@ const mainWindow = () => { ipcMain.on(ELECTRON_EVENTS.LOCALE_UPDATED, (event, updatedLocale) => { Menu.setApplicationMenu(Menu.buildFromTemplate(localizeMenuItems(initialMenuTemplate, updatedLocale))); + disposeContextMenu(); + disposeContextMenu = createContextMenu(updatedLocale); }); ipcMain.on(ELECTRON_EVENTS.REQUEST_VISIBILITY, (event) => { diff --git a/docs/Card-Rev-Share-for-Approved-Partners.md b/docs/Expensify-Card-revenue share for ExpensifyApproved!-partners.md similarity index 58% rename from docs/Card-Rev-Share-for-Approved-Partners.md rename to docs/Expensify-Card-revenue share for ExpensifyApproved!-partners.md index 9b5647a004d3..f9d18da76ef6 100644 --- a/docs/Card-Rev-Share-for-Approved-Partners.md +++ b/docs/Expensify-Card-revenue share for ExpensifyApproved!-partners.md @@ -9,9 +9,14 @@ Start making more with us! We're thrilled to announce a new incentive for our US
This program is currently only available to US-based ExpensifyApproved! partner accountants. # How-to -To benefit from this program, all you need to do is ensure that you are listed as a domain admin on your client's Expensify account. If you're not currently a domain admin, your client can follow the instructions outlined in [our help article](https://community.expensify.com/discussion/5749/how-to-add-and-remove-domain-admins#:~:text=Domain%20Admins%20have%20total%20control,a%20member%20of%20the%20domain.) to assign you this role. +To benefit from this program, complete the following steps +1. Ensure that you are listed as the Primary Contact under your client's domain in Expensify. If you're not currently the Primary Contact for your client, you or your client can follow the instructions outlined in [our help article](https://community.expensify.com/discussion/5749/how-to-add-and-remove-domain-admins#:~:text=Domain%20Admins%20have%20total%20control,a%20member%20of%20the%20domain.) to assign you this role. +2. Add a Business Bank Account to the Primary Contact account. Follow the instructions in [our help article](https://community.expensify.com/discussion/4641/how-to-add-a-deposit-only-bank-account-both-personal-and-business) to get a Business Bank Account added. + # FAQ - What if my firm is not permitted to accept revenue share from our clients?

We understand that different firms may have different policies. If your firm is unable to accept this revenue share, you can pass the revenue share back to your client to give them an additional 0.5% of cash back using your own internal payment tools.

+How will I know which clients to pay back?
+
Every month you will receive an automated message via new.expensify.com and email providing a breakdown of revenue shared generated per client.

- What if my firm does not wish to participate in the program?

Please reach out to your assigned partner manager at new.expensify.com to inform them you would not like to accept the revenue share nor do you want to pass the revenue share to your clients. diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html index 39d62bb0ea9c..209d14de0f48 100644 --- a/docs/_layouts/default.html +++ b/docs/_layouts/default.html @@ -27,11 +27,11 @@
-
- - -
+
+ + +
diff --git a/docs/_sass/_main.scss b/docs/_sass/_main.scss index 720bc95c0732..bc9d19bfca11 100644 --- a/docs/_sass/_main.scss +++ b/docs/_sass/_main.scss @@ -267,8 +267,8 @@ button { } #header-button { - position: absolute; display: block; + padding-right: 24px; @include breakpoint($breakpoint-tablet) { display: none; } @@ -281,7 +281,7 @@ button { margin-left: auto; margin-right: auto; - @include breakpoint($breakpoint-tablet) { + @include breakpoint($breakpoint-desktop) { width: 210px; align-content: normal; display: flex; diff --git a/docs/articles/other/Card-Rev-Share-for-Approved-Partners.md b/docs/articles/other/Card-Revenue-Share-for-ExpensifyApproved!-Partners.md similarity index 100% rename from docs/articles/other/Card-Rev-Share-for-Approved-Partners.md rename to docs/articles/other/Card-Revenue-Share-for-ExpensifyApproved!-Partners.md diff --git a/docs/articles/other/Expensify-Chat-For-Admins.md b/docs/articles/other/Expensify-Chat-For-Admins.md new file mode 100644 index 000000000000..247b2b0e03d0 --- /dev/null +++ b/docs/articles/other/Expensify-Chat-For-Admins.md @@ -0,0 +1,26 @@ +--- +title: Expensify Chat for Admins +description: Best Practices for Admins settings up Expensify Chat +--- + +## Overview +Expensify Chat is an incredible way to build a community and foster long-term relationships between event producers and attendees, or attendees with each other. Admins are a huge factor in the success of the connections built in Expensify Chat during the events, as they are generally the drivers of the conference schedule, and help ensure safety and respect is upheld by all attendees both on and offline. + +## Getting Started +We’ve rounded up some resources to get you set up on Expensify Chat and ready to start connecting with your session attendees: +- [How to get set up and start using Expensify Chat](https://help.expensify.com/articles/other/Everything-About-Chat#how-to-use-chat-in-expensify) +- [How to format text in Expensify Chat](https://help.expensify.com/articles/other/Everything-About-Chat#how-to-format-text) +- [How to flag content and/or users for moderation](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) + +## Admin Best Practices +In order to get the most out of Expensify Chat, we created a list of best practices for admins to review in order to use the tool to its fullest capabilities. + +**During the conference:** +- At a minimum, send 3 announcements throughout the day to create awareness of any sessions, activations, contests, or parties you want to promote. +- Communicate with the Expensify Team in the #admins room if you see anything you have questions about or are unsure of to make sure we’re resolving issues together ASAP. +- As an admin, It’s up to you to help keep your conference community safe and respectful. [Flag any content for moderation](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) that does not fit your culture and values to keep chatrooms a positive experience for everyone involved. + +**After the conference:** +- The rooms will all stay open after the conference ends, so encourage speakers to keep engaging as long as the conversation is going in their session room. +- Continue sharing photos and videos from the event or anything fun in #social as part of a wrap up for everyone. +- Use the #announce room to give attendees a sneak preview of your next event. diff --git a/docs/articles/other/Expensify-Chat-For-Conference-Attendees.md b/docs/articles/other/Expensify-Chat-For-Conference-Attendees.md new file mode 100644 index 000000000000..3d30237dca5a --- /dev/null +++ b/docs/articles/other/Expensify-Chat-For-Conference-Attendees.md @@ -0,0 +1,35 @@ +--- +title: Expensify Chat for Conference Attendees +description: Best Practices for Conference Attendees +--- + +## Overview +Expensify Chat is the best way to meet and network with other event attendees. No more hunting down your contacts by walking the floor or trying to find someone in crowds at a party. Instead, you can use Expensify Chat to network and collaborate with others throughout the conference. + +To help get you set up for a great event, we’ve created a guide to help you get the most out of using Expensify Chat at the event you’re attending. + +## Getting Started +We’ve rounded up some resources to get you set up on Expensify Chat and ready to start connecting with your fellow attendees: + +- [How to get set up and start using Expensify Chat](https://help.expensify.com/articles/other/Everything-About-Chat#how-to-use-chat-in-expensify) +- [How to format text in Expensify Chat](https://help.expensify.com/articles/other/Everything-About-Chat#how-to-format-text) +- [How to flag content and/or users for moderation](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) + +## Chat Best Practices +To get the most out of your experience at your conference and engage people in a meaningful conversation that will fulfill your goals instead of turning people off, here are some tips on what to do and not to do as an event attendee using Expensify Chat: + +**Do:** +- Chat about non-business topics like where the best coffee is around the event, what great lunch options are available, or where the parties are happening that night! +- Share pictures of your travel before the event to hype everyone up, during the event if you met that person you’ve been meaning to see for years, or a fun pic from a party. +- Try to create fun groups with your fellow attendees around common interests like touring a local sight, going for a morning run, or trying a famous restaurant. + +**Don't:** +- Pitch your services in public rooms like #social or speaking session rooms. +- Start a first message with a stranger with a sales pitch. +- Discuss controversial topics such as politics, religion, or anything you wouldn’t say on a first date. +- In general just remember that you are still here for business, your profile is public, and you’re representing yourself & company, so do not say anything you wouldn’t feel comfortable sharing in a business setting. + +**Pro-Tips:** +Get active in Chat early and often by having real conversations around thought leadership or non-business discussions to stand out from the crowd! Also if you’re in a session and are afraid to ask a question, just ask in the chat room to make sure you can discuss it with the speaker after the session ends. + +By following these tips you’ll ensure that your messages will not be [flagged for moderation](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) and you will not mess it up for the rest of us. diff --git a/docs/articles/other/Expensify-Chat-For-Conference-Speakers.md b/docs/articles/other/Expensify-Chat-For-Conference-Speakers.md new file mode 100644 index 000000000000..5bd52425d92b --- /dev/null +++ b/docs/articles/other/Expensify-Chat-For-Conference-Speakers.md @@ -0,0 +1,39 @@ +--- +title: Expensify Chat for Conference Speakers +description: Best Practices for Conference Speakers +--- + +## Overview +Are you a speaker at an event? Great! We're delighted to provide you with an extraordinary opportunity to connect with your session attendees using Expensify Chat — before, during, and after the event. Expensify Chat offers a powerful platform for introducing yourself and your topic, fostering engaging discussions about your presentation, and maintaining the conversation with attendees even after your session is over. + +## Getting Started +We’ve rounded up some resources to get you set up on Expensify Chat and ready to start connecting with your session attendees: + +- [How to get set up and start using Expensify Chat](https://help.expensify.com/articles/other/Everything-About-Chat#how-to-use-chat-in-expensify) +- [How to format text in Expensify Chat](https://help.expensify.com/articles/other/Everything-About-Chat#how-to-format-text) +- [How to flag content and/or users for moderation](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) + +## Setting Up a Chatroom for Your Session: Checklist +To make the most of Expensify Chat for your session, here's a handy checklist: +- Confirm that your session has an Expensify Chat room, and have the URL link ready to share with attendees in advance. + - You can find the link by clicking on the avatar for your chatroom > “Share Code” > “Copy URL to dashboard” +- Join the chat room as soon as it's ready to begin engaging with your audience right from the start. +- Consider having a session moderator with you on the day to assist with questions and discussions while you're presenting. +- Include the QR code for your session's chat room in your presentation slides. Displaying it prominently on every slide ensures that attendees can easily join the chat throughout your presentation. + +## Tips to Enhance Engagement Around Your Session +By following these steps and utilizing Expensify Chat, you can elevate your session to promote valuable interactions with your audience, and leave a lasting impact beyond the conference. We can't wait to see your sessions thrive with the power of Expensify Chat! + +**Before the event:** +- Share your session's QR code or URL on your social media platforms, your website or other platforms to encourage attendees to join the conversation early on. +- Encourage attendees to ask questions in the chat room before the event, enabling you to tailor your session and address their specific interests. + +**During the event:** +- Keep your QR code readily available during the conference by saving it as a photo on your phone or setting it as your locked screen image. This way, you can easily share it with others you meet. +- Guide your audience back to the QR code and encourage them to ask questions, fostering interactive discussions. + +**After the event:** +- Continue engaging with attendees by responding to their questions and comments, helping you expand your audience and sustain interest. +- Share your presentation slides after the event as well as any photos from your session, allowing attendees to review and share your content with their networks if they want to. + +If you have any questions on how Expensify Chat works, head to our guide [here](https://help.expensify.com/articles/other/Everything-About-Chat). diff --git a/docs/articles/playbooks/Expensify-Chat-Playbook-for-Conferences.md b/docs/articles/playbooks/Expensify-Chat-Playbook-for-Conferences.md index 2c82c2d04273..8f806bb03146 100644 --- a/docs/articles/playbooks/Expensify-Chat-Playbook-for-Conferences.md +++ b/docs/articles/playbooks/Expensify-Chat-Playbook-for-Conferences.md @@ -1,113 +1,93 @@ --- -title: Expensify Chat Playbook for Conferences +title: Expensify Chat Playbook for Conferences description: Best practices for how to deploy Expensify Chat for your conference --- ## Overview - To help make setting up Expensify Chat for your event and your attendees super simple, we’ve created a guide for all of the technical setup details. - ## Who you are - -As a conference organizer, you’re expected to amaze and inspire attendees. You want attendees to get to the right place on time, engage with the speakers, and create relationships with each other that last long after the conference is done. Enter Expensify Chat, a free feature that allows attendees to interact with organizers and other attendees in realtime. With Expensify Chat, you can: +As a conference organizer, you’re expected to amaze and inspire attendees. You want attendees to get to the right place on time, engage with the speakers, and create relationships with each other that last long after the conference is done. Enter Expensify Chat, a free feature that allows attendees to interact with organizers and other attendees in realtime. With Expensify Chat, you can: - Communicate logistics and key information -- Foster conference-wide attendee networking -- Organize discussions by topic and audience -- Continue conversations long after the event itself +- Foster conference wide attendee networking +- Organize conversations by topic and audience +- Continue conversations long after the event itself - Digitize attendee social interaction +- Create an inclusive environment for virtual attendees -Sounds good? Great! In order to ensure your team, speakers, and attendees have the best experience possible, we’ve created a guide on how to use Expensify Chat at your event. +Sounds good? Great! In order to ensure your team, your speakers, and your attendees have the best experience possible, we’ve created a guide on how to use Expensify Chat at your event. -_Let’s get started!_ +*Let’s get started!* ## Support +Connect with your dedicated account manager in any new.expensify.com #admins room. Your account manager is excited to brainstorm the best ways to make the most out of your event and work through any questions you have about the setup steps below. -Connect with your dedicated Expensify account manager in any new.expensify.com #admins room. Your account manager is excited to brainstorm the best ways to make the most out of your event and work through any questions you have about the setup steps below. - - -## How to set up your conference on Expensify Chat +We also have a number of [moderation tools](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) available to admins to help make sure your event is seamless, safe, and fun! +## Step by step instructions for setting up your conference on Expensify Chat Based on our experience running conferences atop Expensify Chat, we recommend the following simple steps: -### Step 1: Create your event workspace in Expensify - +### Step 1: Create your event workspace in Expensify To create your event workspace in Expensify: -1. In new.expensify.com: “+” > “New workspace” -2. Name the workspace (e.g. “ExpensiCon”) +1. In [new.expensify.com](https://new.expensify.com): “+” > “New workspace” +1. Name the workspace (e.g. “ExpensiCon”) ### Step 2: Set up all the Expensify Chat rooms you want to feature at your event - -*Protip*: Your Expensify account manager can complete this step with you. Chat them in #admins on new.expensify.com to coordinate! +**Protip**: Your Expensify account manager can complete this step with you. Chat them in #admins on new.expensify.com to coordinate! To create a new chat room: 1. Go to [new.expensify.com](https://new.expensify.com) -2. Go to “+” > New room -3. Name the room (e.g. “#social”) -4. Select the workspace created in step 1 -5. Select “Public” visibility -6. “Create room” > Copy/Paste room URL for use later -7. Repeat for each room +1. Go to “+” > New room +1. Name the room (e.g. “#social”) +1. Select the workspace created in step 1 +1. Select “Public” visibility +1. Repeat for each room For an easy-to-follow event, we recommend creating these chat rooms: -- *#announce* - This room will be used as your main announcement channel, and should only be used by organizers to announce schedule updates or anything important that your attendees need to know. Everyone in your policy will be invited to this channel, but chatting in here isn’t encouraged -- so to keep the noise to a minimum! -- *#social* - This room will include all attendees, speakers, and members of your organizing team. You can use this room to discuss social events, happy hours, dinners, or encourage attendees to mingle, share photos and connect. -- *Create an individual room for each session* - Attendees will be able to engage with the speaker/session leader and can ask questions about their content either before/during/after the session. -- *Create a room with your Expensify account manager/s* - We can use this room to coordinate using Expensify Chat before, during, and after the event. +- **#social** - This room will include all attendees, speakers, and members of your organizing team. You can use this room to discuss social events, happy hours, dinners, or encourage attendees to mingle, share photos and connect. +- **#announcements** - This room will be used as your main announcement channel, and should only be used by organizers to announce schedule updates or anything important that your attendees need to know. Everyone in your policy will be invited to this channel, but chatting in here isn’t encouraged so to keep the noise to a minimum. +- **Create an individual room for each session** - Attendees will be able to engage with the speaker/session leader and can ask questions about their content either before/during/after the session. +- **Create a room with your Expensify account manager/s** - We can use this room to coordinate using Expensify Chat before, during, and after the event. -### Step 3: Add chat room QR codes to the applicable session slide deck +**Protip** Check out our [moderation tools](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) to help flag comments deemed to be spam, inconsiderate, intimidating, bullying, harassment, assault. On any comment just click the flag icon to moderate conversation. +### Step 3: Add chat room QR codes to the applicable session slide deck Gather QR codes: 1. Go to [new.expensify.com](https://new.expensify.com) -2. Click into a room and click the room name or avatar in the top header -3. Go into Share Code -4. Download or screenshot the QR code image - -Add the QR code to every slide so that if folks forget to scan the QR code at the beginning of the presentation, they can still join the discussion. - -### Step 4: Train speakers on how to use chat during their sessions - -*Protip*: Copy and paste a link to this section and share it directly with your speakers -*Protip*: Your account manager can communicate this training to your speakers. Chat with them in #admins on new.expensify.com to coordinate! - -Are you a speaker at an event? Great! Expensify Chat is the perfect way to connect with your session attendees before, during, and after the event. Use Expensify Chat to introduce yourself and your topic, and open the floor for attendees to ask questions and participate in discussion about your presentation, as well as connect with other attendees that were in the room. Here’s a quick list to help you best prepare for your session by using Expensify Chat: - -1. Ensure your session has an Expensify Chat room and that you know the URL link to your session so you can share with attendees ahead of time -2. Join the chat room ahead of the event so you can start engaging with your session’s attendees from the get-go -3. Make sure you have a session moderator with you on presentation day to help moderate questions and facilitate discussion while you’re busy speaking -4. Ensure your session slides include the QR code for your session chat room. We’d recommend making sure the QR code is visible on every page of your deck in case an attendee didn’t join at the beginning. -5. Engage with attendees after your session to continue the discussion around your topic! - -*Messaging Suggestions* - -- Default: Welcome to [CONFERENCE NAME]! This is the [SESSION TITLE] chat room. Please use this room to chat with each other, submit questions about today's presentation, and to chat directly with [SPEAKER NAME] after the session wraps up. -- Custom: As part of pre-conference speaker outreach we should allow speakers to change this message and use the default if they don’t respond.” - -### Step 5: Plan out your messaging and cadence before the event begins - -Expensify Chat is a great place to provide updates leading up to your event -- share news, get folks excited about speakers, and let attendees know about crucial event information like recommended attire, travel info, and more. +1. Click into a room and click the room name or avatar in the top header +1. Go into Share Code +1. Screenshot the QR code to add to your deck -### Step 6: Update your rooms throughout the event +Add the QR code to every slide so that if folks forget to scan the QR code at the beginning of the presentation, they can still join the discussion. -We find chat to be a powerful way to not only engage your attendees, but direct them in realtime to get exactly where they need to go: +### Step 4: Plan out your messaging and cadence before the event begins +Expensify Chat is a great place to provide updates leading up to your event -- share news, get folks excited about speakers, and let attendees know of crucial event information like recommended attire, travel info, and more. For example, you might consider: -- #announce: Use this room to make announcements such as what’s coming up next, where and when social events are taking place, or announcing the sponsor floor is open to the entire conference. Only workspace admins can post in this room. -- #social: Have your employees in this room sharing fun photos, stoking conversations, and responding to any questions or feedback. -- Speaker rooms: Encourage your employees to jump in to comment on content and nudge attendees to engage with each other during sessions. +**Prep your announcements:** +- Create a document containing drafts of the key messages you intend to send throughout the day. +- If your event's agenda is broken up into hourly blocks, create a separate section for each hour of the event, to make it easy to find the correct section at the right time. +- Start each day with a review of the daily agenda, such as a bullet list summarizing what's happening hour by hour. -*Protip*: Expensify Chat has [moderation tools](https://help.expensify.com/articles/other/Everything-About-Chat#flagging-content-as-offensive) to help flag comments deemed to be spam, inconsiderate, intimidating, bullying, harassment, assault. On any comment, just click the flag icon to moderate conversation. +**Post your updates:** +- Designate a team member to post each update in #announce at the designated time. +- Each hour, send a message listing exactly what is happening next – if there are multiple sessions happening simultaneously, list out each, along with a description of the session, a reminder of where it's located, and (most importantly) a link to the chat room for that session +- Write the messages in [markdown format](https://help.expensify.com/articles/other/Everything-About-Chat#how-to-format-text), such that they can be copy/pasted directly into Expensify Chat for sending. + - If there is some formatting issue upon posting, no problem: just edit the comment after sending, and it'll be fixed for everyone. +- We’d also recommend posting your updates on new lines so that if someone has a question about a certain item they can ask in a thread pertaining to that topic, rather than in one consolidated block. -### Step 7: Follow up with attendees after the event +**Protip**: Your account manager can help you create this document, and would be happy to send each message at the appointed time for you. -Continue the connections by using Expensify Chat to keep your conference community connected. Encourage attendees to share photos, their favorite memories, funny stories, and more. +### Step 5: Share Expensify Chat How-To Resources with Speakers, Attendees, Admins +We’ve created a few helpful best practice docs for your speakers, admins, and attendees to help navigate using Expensify Chat at your event. Feel free to share the links below with them! -- We’d recommend creating a draft of all of your reminders that you plan to send in the #announce (or #social) room throughout the event. -- A post in the morning outlining the full agenda, and then before each event as it happens throughout the day, is recommended. Be sure to include details like timings, locations, and any special detail like attire to help attendees feel prepared. -- Use markdown when posting updates so that your messages are easy to read. -- We also recommend posting your updates on new lines so that if someone has a question about a certain item they can ask in a thread pertaining to that topic, rather than in one consolidated block. +- [Expensify Chat for Conference Attendees](https://help.expensify.com/articles/other/Expensify-Chat-For-Conference-Attendees) +- [Expensify Chat for Conference Speakers](https://help.expensify.com/articles/other/Expensify-Chat-For-Conference-Speakers) +- [Expensify Chat for Admins](https://help.expensify.com/articles/other/Expensify-Chat-For-Admins) -## You’re all set! +### Step 6: Follow up with attendees after the event +Continue the connections by using Expensify Chat to keep your conference community connected. Encourage attendees to share photos, their favorite memories, funny stories, and more. -Once you've completed the above steps, you're ready to host your conference on Expensify Chat! Any questions? Just reach out to your Expensify account manager in your new.expensify.com #admins room. +## Conclusion +Once you have completed the above steps you are ready to host your conference on Expensify Chat! Let your account manager know any questions you have over in your [new.expensify.com](https://new.expensify.com) #admins room and start driving activity in your Expensify Chat rooms. Once you’ve reviewed this doc you should have the foundations in place, so a great next step is to start training your speakers on how to use Expensify Chat for their sessions. Coordinate with your account manager to make sure everything goes smoothly! diff --git a/docs/articles/playbooks/Expensify-Playbook-for-Small-to-Medium-Sized-Businesses.md b/docs/articles/playbooks/Expensify-Playbook-for-Small-to-Medium-Sized-Businesses.md index 849932a33c2d..a4004dbe1b88 100644 --- a/docs/articles/playbooks/Expensify-Playbook-for-Small-to-Medium-Sized-Businesses.md +++ b/docs/articles/playbooks/Expensify-Playbook-for-Small-to-Medium-Sized-Businesses.md @@ -209,7 +209,7 @@ Here’s how to enable it: - *Employees* - We recommend a low limit for most employees, roughly double the size of the maximum daily spend – such as $1000. - *Execs* - We recommend a higher limit for executives, roughly 10x the limit of a non-executive employee (eg, $10,000). -Once the Expensify Cards have been assigned, each employee will be prompted to enter their mailing address so they can receive their physical card. In the meantime, a digital card will be ready to use immediately. +Once the Expensify Cards have been assigned, each employee will be prompted to enter their mailing address so they can receive their physical card. In the meantime, a virtual card will be ready to use immediately. If you have an accounting system we directly integrate with, check out how we take automation a step further with [Continuous Reconciliation](https://community.expensify.com/discussion/7335/faq-what-is-the-expensify-card-auto-reconciliation-process). We’ll create an Expensify Card clearing and liability account for you. Each time settlement occurs, we’ll take the total amount of your purchases and create a journal entry that credits the settlement account and debits the liability account - saving you hours of manual reconciliation work at the end of your statement period. diff --git a/docs/articles/request-money/Request-and-Split-Bills.md b/docs/articles/request-money/Request-and-Split-Bills.md index a2c63cf6f8f7..bb27cd75c742 100644 --- a/docs/articles/request-money/Request-and-Split-Bills.md +++ b/docs/articles/request-money/Request-and-Split-Bills.md @@ -16,7 +16,10 @@ These two features ensure you can live in the moment and settle up afterward. # How to Request Money - Select the Green **+** button and choose **Request Money** -- Enter the amount **$** they owe and click **Next** +- Select the relevant option: + - **Manual:** Enter the merchant and amount manually. + - **Scan:** Take a photo of the receipt to have the merchant and amount auto-filled. + - **Distance:** Enter the details of your trip, plus any stops along the way, and the mileage and amount will be automatically calculated. - Search for the user or enter their email! - Enter a reason for the request (optional) - Click **Request!** diff --git a/docs/assets/images/insights-chart.png b/docs/assets/images/insights-chart.png index 7b10c8c92d8d..4b21b8d70a09 100644 Binary files a/docs/assets/images/insights-chart.png and b/docs/assets/images/insights-chart.png differ diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 92c61cb81b2c..ecec05f1cec1 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -224,11 +224,11 @@ platform :ios do contact_phone: ENV["APPLE_CONTACT_PHONE"], demo_account_name: ENV["APPLE_DEMO_EMAIL"], demo_account_password: ENV["APPLE_DEMO_PASSWORD"], - notes: "1. Log into the Expensify app using the provided email - 2. Now, you have to log in to this gmail account on https://mail.google.com/ so you can retrieve a One-Time-Password - 3. To log in to the gmail account, use the password above (That's NOT a password for the Expensify app but for the Gmail account) - 4. At the Gmail inbox, you should have received a one-time 6 digit magic code - 5. Use that to sign in" + notes: "1. In the Expensify app, enter the email 'appletest.expensify@proton.me'. This will trigger a sign-in link to be sent to 'appletest.expensify@proton.me' + 2. Navigate to https://account.proton.me/login, log into Proton Mail using 'appletest.expensify@proton.me' as email and the password associated with 'appletest.expensify@proton.me', provided above + 3. Once logged into Proton Mail, navigate to your inbox and locate the email triggered in step 1. The email subject should be 'Your magic sign-in link for Expensify' + 4. Open the email and copy the 6-digit sign-in code provided within + 5. Return to the Expensify app and enter the copied 6-digit code in the designated login field" } ) rescue Exception => e diff --git a/ios/Certificates.p12.gpg b/ios/Certificates.p12.gpg index c4a68891f6e4..f63d6861f888 100644 Binary files a/ios/Certificates.p12.gpg and b/ios/Certificates.p12.gpg differ diff --git a/ios/NewExpensify.xcodeproj/project.pbxproj b/ios/NewExpensify.xcodeproj/project.pbxproj index d87226269a8b..64ed3fda8b02 100644 --- a/ios/NewExpensify.xcodeproj/project.pbxproj +++ b/ios/NewExpensify.xcodeproj/project.pbxproj @@ -52,6 +52,7 @@ 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 02BE6CF80ED1BD2445267F92 /* Pods-NewExpensify.release development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.release development.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.release development.xcconfig"; sourceTree = ""; }; 0B09CE5BDAF34DD3573AB4E2 /* Pods-NewExpensify.debug adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug adhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug adhoc.xcconfig"; sourceTree = ""; }; + 0B627F2A465153FFA6E3A4E0 /* Pods-NewExpensify.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugdevelopment.xcconfig"; sourceTree = ""; }; 0CDA8E33287DD650004ECBEC /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = NewExpensify/AppDelegate.mm; sourceTree = ""; }; 0CDA8E36287DD6A0004ECBEC /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = NewExpensify/Images.xcassets; sourceTree = ""; }; 0E27AA27706D894246E7946D /* Pods-NewExpensify.debug production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug production.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug production.xcconfig"; sourceTree = ""; }; @@ -64,38 +65,49 @@ 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = NewExpensify/main.m; sourceTree = ""; }; 18D050DF262400AF000D658B /* BridgingFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BridgingFile.swift; sourceTree = ""; }; 1DDE5449979A136852B939B5 /* Pods-NewExpensify.release adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.release adhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.release adhoc.xcconfig"; sourceTree = ""; }; + 25A4587E168FD67CF890B448 /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig"; sourceTree = ""; }; + 30FFBD291B71222A393D9CC9 /* Pods-NewExpensify.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releasedevelopment.xcconfig"; sourceTree = ""; }; 34A8FDD1F9AA58B8F15C8380 /* Pods-NewExpensify.release production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.release production.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.release production.xcconfig"; sourceTree = ""; }; 374FB8D528A133A7000D84EF /* OriginImageRequestHandler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = OriginImageRequestHandler.h; path = NewExpensify/OriginImageRequestHandler.h; sourceTree = ""; }; 374FB8D628A133FE000D84EF /* OriginImageRequestHandler.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = OriginImageRequestHandler.mm; path = NewExpensify/OriginImageRequestHandler.mm; sourceTree = ""; }; 3D393D7ABC1092F1DE91397F /* Pods-NewExpensify-NewExpensifyTests.debug staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debug staging.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debug staging.xcconfig"; sourceTree = ""; }; 432FF5842B766535509FC547 /* Pods-NewExpensify-NewExpensifyTests.debug adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debug adhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debug adhoc.xcconfig"; sourceTree = ""; }; 44BF435285B94E5B95F90994 /* ExpensifyNewKansas-Medium.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNewKansas-Medium.otf"; path = "../assets/fonts/native/ExpensifyNewKansas-Medium.otf"; sourceTree = ""; }; + 47D5DF3C6779D41BE70CD031 /* Pods-NewExpensify.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseproduction.xcconfig"; sourceTree = ""; }; + 4E8BF7B08BA3181991BFCF4B /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig"; sourceTree = ""; }; 52796131E6554494B2DDB056 /* ExpensifyNeue-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Bold.otf"; path = "../assets/fonts/native/ExpensifyNeue-Bold.otf"; sourceTree = ""; }; + 57DBBEDB9692E096D4BA0141 /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig"; sourceTree = ""; }; 6B5211DB0EEB46E12DF4AD2D /* Pods-NewExpensify-NewExpensifyTests.release adhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release adhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release adhoc.xcconfig"; sourceTree = ""; }; 6BE16DA6EFF88513DB1CD47B /* Pods-NewExpensify-NewExpensifyTests.release staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release staging.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release staging.xcconfig"; sourceTree = ""; }; + 6F6A514B4DF07A60EC8355BA /* Pods-NewExpensify.debugadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugadhoc.xcconfig"; sourceTree = ""; }; 6FB387B20AE4E6E98858B6AA /* libPods-NewExpensify-NewExpensifyTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify-NewExpensifyTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7041848326A8E40900E09F4D /* RCTStartupTimer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RCTStartupTimer.h; path = NewExpensify/RCTStartupTimer.h; sourceTree = ""; }; 7041848426A8E47D00E09F4D /* RCTStartupTimer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RCTStartupTimer.m; path = NewExpensify/RCTStartupTimer.m; sourceTree = ""; }; 70CF6E81262E297300711ADC /* BootSplash.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = BootSplash.storyboard; path = NewExpensify/BootSplash.storyboard; sourceTree = ""; }; 75CABB0D0ABB0082FE0EB600 /* Pods-NewExpensify.release staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.release staging.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.release staging.xcconfig"; sourceTree = ""; }; + 8709DF3C8D91F0FC1581CDD7 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig"; sourceTree = ""; }; 8B28D84EF339436DBD42A203 /* ExpensifyNeue-BoldItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-BoldItalic.otf"; path = "../assets/fonts/native/ExpensifyNeue-BoldItalic.otf"; sourceTree = ""; }; 8D3B36BF88E773E3C1A383FA /* Pods-NewExpensify.debug staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug staging.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug staging.xcconfig"; sourceTree = ""; }; 96552D489D9F09B6A5ABD81B /* Pods-NewExpensify-NewExpensifyTests.release production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release production.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release production.xcconfig"; sourceTree = ""; }; AEFE6CD54912D427D19133C7 /* libPods-NewExpensify.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NewExpensify.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BD6E1BA27D6ABE0AC9D70586 /* Pods-NewExpensify-NewExpensifyTests.release development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.release development.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.release development.xcconfig"; sourceTree = ""; }; + BD8828A882E2D6B51362AAC3 /* Pods-NewExpensify.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.releaseadhoc.xcconfig"; sourceTree = ""; }; BF6A4C5167244B9FB8E4D4E3 /* ExpensifyNeue-Italic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Italic.otf"; path = "../assets/fonts/native/ExpensifyNeue-Italic.otf"; sourceTree = ""; }; + CE2F84BEE9A6DCC228AF7E42 /* Pods-NewExpensify.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debugproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debugproduction.xcconfig"; sourceTree = ""; }; CECC4CBB97A55705A33BEA9E /* Pods-NewExpensify.debug development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify.debug development.xcconfig"; path = "Target Support Files/Pods-NewExpensify/Pods-NewExpensify.debug development.xcconfig"; sourceTree = ""; }; D2AFB39EC1D44BF9B91D3227 /* ExpensifyNewKansas-MediumItalic.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNewKansas-MediumItalic.otf"; path = "../assets/fonts/native/ExpensifyNewKansas-MediumItalic.otf"; sourceTree = ""; }; DB76E0D5C670190A0997C71E /* Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig"; sourceTree = ""; }; DCF33E34FFEC48128CDD41D4 /* ExpensifyMono-Bold.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyMono-Bold.otf"; path = "../assets/fonts/native/ExpensifyMono-Bold.otf"; sourceTree = ""; }; DD7904292792E76D004484B4 /* RCTBootSplash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RCTBootSplash.h; path = NewExpensify/RCTBootSplash.h; sourceTree = ""; }; DD79042A2792E76D004484B4 /* RCTBootSplash.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RCTBootSplash.m; path = NewExpensify/RCTBootSplash.m; sourceTree = ""; }; + E2C8555C607612465A7473F8 /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig"; sourceTree = ""; }; E2F1036F70CBFE39E9352674 /* Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig"; sourceTree = ""; }; E704648954784DDFBAADF568 /* ExpensifyMono-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyMono-Regular.otf"; path = "../assets/fonts/native/ExpensifyMono-Regular.otf"; sourceTree = ""; }; E9DF872C2525201700607FDC /* AirshipConfig.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = AirshipConfig.plist; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; }; F0C450E92705020500FD2970 /* colors.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = colors.json; path = ../colors.json; sourceTree = ""; }; + F15A36A3262EEC3B0CAB8EDF /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig"; path = "Target Support Files/Pods-NewExpensify-NewExpensifyTests/Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig"; sourceTree = ""; }; F4F8A052A22040339996324B /* ExpensifyNeue-Regular.otf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "ExpensifyNeue-Regular.otf"; path = "../assets/fonts/native/ExpensifyNeue-Regular.otf"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -239,6 +251,18 @@ 6B5211DB0EEB46E12DF4AD2D /* Pods-NewExpensify-NewExpensifyTests.release adhoc.xcconfig */, 6BE16DA6EFF88513DB1CD47B /* Pods-NewExpensify-NewExpensifyTests.release staging.xcconfig */, 96552D489D9F09B6A5ABD81B /* Pods-NewExpensify-NewExpensifyTests.release production.xcconfig */, + 0B627F2A465153FFA6E3A4E0 /* Pods-NewExpensify.debugdevelopment.xcconfig */, + 6F6A514B4DF07A60EC8355BA /* Pods-NewExpensify.debugadhoc.xcconfig */, + CE2F84BEE9A6DCC228AF7E42 /* Pods-NewExpensify.debugproduction.xcconfig */, + 30FFBD291B71222A393D9CC9 /* Pods-NewExpensify.releasedevelopment.xcconfig */, + BD8828A882E2D6B51362AAC3 /* Pods-NewExpensify.releaseadhoc.xcconfig */, + 47D5DF3C6779D41BE70CD031 /* Pods-NewExpensify.releaseproduction.xcconfig */, + 8709DF3C8D91F0FC1581CDD7 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */, + 25A4587E168FD67CF890B448 /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */, + F15A36A3262EEC3B0CAB8EDF /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */, + 4E8BF7B08BA3181991BFCF4B /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */, + E2C8555C607612465A7473F8 /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */, + 57DBBEDB9692E096D4BA0141 /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */, ); path = Pods; sourceTree = ""; @@ -641,9 +665,9 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 00E356F61AD99517003FC87E /* Debug Development */ = { + 00E356F61AD99517003FC87E /* DebugDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E2F1036F70CBFE39E9352674 /* Pods-NewExpensify-NewExpensifyTests.debug development.xcconfig */; + baseConfigurationReference = 8709DF3C8D91F0FC1581CDD7 /* Pods-NewExpensify-NewExpensifyTests.debugdevelopment.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -664,11 +688,11 @@ PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; }; - name = "Debug Development"; + name = DebugDevelopment; }; - 00E356F71AD99517003FC87E /* Release Development */ = { + 00E356F71AD99517003FC87E /* ReleaseDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD6E1BA27D6ABE0AC9D70586 /* Pods-NewExpensify-NewExpensifyTests.release development.xcconfig */; + baseConfigurationReference = 4E8BF7B08BA3181991BFCF4B /* Pods-NewExpensify-NewExpensifyTests.releasedevelopment.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -687,11 +711,11 @@ PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; }; - name = "Release Development"; + name = ReleaseDevelopment; }; - 13B07F941A680F5B00A75B9A /* Debug Development */ = { + 13B07F941A680F5B00A75B9A /* DebugDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CECC4CBB97A55705A33BEA9E /* Pods-NewExpensify.debug development.xcconfig */; + baseConfigurationReference = 0B627F2A465153FFA6E3A4E0 /* Pods-NewExpensify.debugdevelopment.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDev; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -719,11 +743,11 @@ TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Debug Development"; + name = DebugDevelopment; }; - 13B07F951A680F5B00A75B9A /* Release Development */ = { + 13B07F951A680F5B00A75B9A /* ReleaseDevelopment */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 02BE6CF80ED1BD2445267F92 /* Pods-NewExpensify.release development.xcconfig */; + baseConfigurationReference = 30FFBD291B71222A393D9CC9 /* Pods-NewExpensify.releasedevelopment.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconDev; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -749,9 +773,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release Development"; + name = ReleaseDevelopment; }; - 83CBBA201A601CBA00E9B192 /* Debug Development */ = { + 83CBBA201A601CBA00E9B192 /* DebugDevelopment */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -814,9 +838,9 @@ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; }; - name = "Debug Development"; + name = DebugDevelopment; }; - 83CBBA211A601CBA00E9B192 /* Release Development */ = { + 83CBBA211A601CBA00E9B192 /* ReleaseDevelopment */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -873,9 +897,9 @@ SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; - name = "Release Development"; + name = ReleaseDevelopment; }; - CF9AF93E29EE9276001FA527 /* Debug Production */ = { + CF9AF93E29EE9276001FA527 /* DebugProduction */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -938,11 +962,11 @@ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; }; - name = "Debug Production"; + name = DebugProduction; }; - CF9AF93F29EE9276001FA527 /* Debug Production */ = { + CF9AF93F29EE9276001FA527 /* DebugProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0E27AA27706D894246E7946D /* Pods-NewExpensify.debug production.xcconfig */; + baseConfigurationReference = CE2F84BEE9A6DCC228AF7E42 /* Pods-NewExpensify.debugproduction.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -970,11 +994,11 @@ TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Debug Production"; + name = DebugProduction; }; - CF9AF94029EE9276001FA527 /* Debug Production */ = { + CF9AF94029EE9276001FA527 /* DebugProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DB76E0D5C670190A0997C71E /* Pods-NewExpensify-NewExpensifyTests.debug production.xcconfig */; + baseConfigurationReference = F15A36A3262EEC3B0CAB8EDF /* Pods-NewExpensify-NewExpensifyTests.debugproduction.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -995,9 +1019,9 @@ PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; }; - name = "Debug Production"; + name = DebugProduction; }; - CF9AF94429EE927A001FA527 /* Debug AdHoc */ = { + CF9AF94429EE927A001FA527 /* DebugAdHoc */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1060,11 +1084,11 @@ REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; }; - name = "Debug AdHoc"; + name = DebugAdHoc; }; - CF9AF94529EE927A001FA527 /* Debug AdHoc */ = { + CF9AF94529EE927A001FA527 /* DebugAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0B09CE5BDAF34DD3573AB4E2 /* Pods-NewExpensify.debug adhoc.xcconfig */; + baseConfigurationReference = 6F6A514B4DF07A60EC8355BA /* Pods-NewExpensify.debugadhoc.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconAdHoc; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -1092,11 +1116,11 @@ TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Debug AdHoc"; + name = DebugAdHoc; }; - CF9AF94629EE927A001FA527 /* Debug AdHoc */ = { + CF9AF94629EE927A001FA527 /* DebugAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 432FF5842B766535509FC547 /* Pods-NewExpensify-NewExpensifyTests.debug adhoc.xcconfig */; + baseConfigurationReference = 25A4587E168FD67CF890B448 /* Pods-NewExpensify-NewExpensifyTests.debugadhoc.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1117,9 +1141,9 @@ PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; }; - name = "Debug AdHoc"; + name = DebugAdHoc; }; - CF9AF94729EE928E001FA527 /* Release Production */ = { + CF9AF94729EE928E001FA527 /* ReleaseProduction */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1176,11 +1200,11 @@ SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; - name = "Release Production"; + name = ReleaseProduction; }; - CF9AF94829EE928E001FA527 /* Release Production */ = { + CF9AF94829EE928E001FA527 /* ReleaseProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 34A8FDD1F9AA58B8F15C8380 /* Pods-NewExpensify.release production.xcconfig */; + baseConfigurationReference = 47D5DF3C6779D41BE70CD031 /* Pods-NewExpensify.releaseproduction.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -1206,11 +1230,11 @@ TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release Production"; + name = ReleaseProduction; }; - CF9AF94929EE928E001FA527 /* Release Production */ = { + CF9AF94929EE928E001FA527 /* ReleaseProduction */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 96552D489D9F09B6A5ABD81B /* Pods-NewExpensify-NewExpensifyTests.release production.xcconfig */; + baseConfigurationReference = 57DBBEDB9692E096D4BA0141 /* Pods-NewExpensify-NewExpensifyTests.releaseproduction.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1229,9 +1253,9 @@ PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; }; - name = "Release Production"; + name = ReleaseProduction; }; - CF9AF94D29EE9293001FA527 /* Release AdHoc */ = { + CF9AF94D29EE9293001FA527 /* ReleaseAdHoc */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1288,11 +1312,11 @@ SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; }; - name = "Release AdHoc"; + name = ReleaseAdHoc; }; - CF9AF94E29EE9293001FA527 /* Release AdHoc */ = { + CF9AF94E29EE9293001FA527 /* ReleaseAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1DDE5449979A136852B939B5 /* Pods-NewExpensify.release adhoc.xcconfig */; + baseConfigurationReference = BD8828A882E2D6B51362AAC3 /* Pods-NewExpensify.releaseadhoc.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIconAdHoc; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; @@ -1318,11 +1342,11 @@ TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; - name = "Release AdHoc"; + name = ReleaseAdHoc; }; - CF9AF94F29EE9293001FA527 /* Release AdHoc */ = { + CF9AF94F29EE9293001FA527 /* ReleaseAdHoc */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6B5211DB0EEB46E12DF4AD2D /* Pods-NewExpensify-NewExpensifyTests.release adhoc.xcconfig */; + baseConfigurationReference = E2C8555C607612465A7473F8 /* Pods-NewExpensify-NewExpensifyTests.releaseadhoc.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1341,7 +1365,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NewExpensify.app/NewExpensify"; }; - name = "Release AdHoc"; + name = ReleaseAdHoc; }; /* End XCBuildConfiguration section */ @@ -1349,41 +1373,41 @@ 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NewExpensifyTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 00E356F61AD99517003FC87E /* Debug Development */, - CF9AF94629EE927A001FA527 /* Debug AdHoc */, - CF9AF94029EE9276001FA527 /* Debug Production */, - 00E356F71AD99517003FC87E /* Release Development */, - CF9AF94F29EE9293001FA527 /* Release AdHoc */, - CF9AF94929EE928E001FA527 /* Release Production */, + 00E356F61AD99517003FC87E /* DebugDevelopment */, + CF9AF94629EE927A001FA527 /* DebugAdHoc */, + CF9AF94029EE9276001FA527 /* DebugProduction */, + 00E356F71AD99517003FC87E /* ReleaseDevelopment */, + CF9AF94F29EE9293001FA527 /* ReleaseAdHoc */, + CF9AF94929EE928E001FA527 /* ReleaseProduction */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug Development"; + defaultConfigurationName = DebugDevelopment; }; 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "NewExpensify" */ = { isa = XCConfigurationList; buildConfigurations = ( - 13B07F941A680F5B00A75B9A /* Debug Development */, - CF9AF94529EE927A001FA527 /* Debug AdHoc */, - CF9AF93F29EE9276001FA527 /* Debug Production */, - 13B07F951A680F5B00A75B9A /* Release Development */, - CF9AF94E29EE9293001FA527 /* Release AdHoc */, - CF9AF94829EE928E001FA527 /* Release Production */, + 13B07F941A680F5B00A75B9A /* DebugDevelopment */, + CF9AF94529EE927A001FA527 /* DebugAdHoc */, + CF9AF93F29EE9276001FA527 /* DebugProduction */, + 13B07F951A680F5B00A75B9A /* ReleaseDevelopment */, + CF9AF94E29EE9293001FA527 /* ReleaseAdHoc */, + CF9AF94829EE928E001FA527 /* ReleaseProduction */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug Development"; + defaultConfigurationName = DebugDevelopment; }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "NewExpensify" */ = { isa = XCConfigurationList; buildConfigurations = ( - 83CBBA201A601CBA00E9B192 /* Debug Development */, - CF9AF94429EE927A001FA527 /* Debug AdHoc */, - CF9AF93E29EE9276001FA527 /* Debug Production */, - 83CBBA211A601CBA00E9B192 /* Release Development */, - CF9AF94D29EE9293001FA527 /* Release AdHoc */, - CF9AF94729EE928E001FA527 /* Release Production */, + 83CBBA201A601CBA00E9B192 /* DebugDevelopment */, + CF9AF94429EE927A001FA527 /* DebugAdHoc */, + CF9AF93E29EE9276001FA527 /* DebugProduction */, + 83CBBA211A601CBA00E9B192 /* ReleaseDevelopment */, + CF9AF94D29EE9293001FA527 /* ReleaseAdHoc */, + CF9AF94729EE928E001FA527 /* ReleaseProduction */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug Development"; + defaultConfigurationName = DebugDevelopment; }; /* End XCConfigurationList section */ }; diff --git a/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify AdHoc.xcscheme b/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify AdHoc.xcscheme index 0e0fad6399a0..6cd590456eed 100644 --- a/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify AdHoc.xcscheme +++ b/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify AdHoc.xcscheme @@ -57,7 +57,7 @@ @@ -75,7 +75,7 @@ + buildConfiguration = "DebugAdHoc"> diff --git a/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify Dev.xcscheme b/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify Dev.xcscheme index 77f512242f67..93d775217f11 100644 --- a/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify Dev.xcscheme +++ b/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify Dev.xcscheme @@ -23,7 +23,7 @@ @@ -41,7 +41,7 @@ + buildConfiguration = "DebugDevelopment"> diff --git a/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify.xcscheme b/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify.xcscheme index f68be2705527..b6b5874506a8 100644 --- a/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify.xcscheme +++ b/ios/NewExpensify.xcodeproj/xcshareddata/xcschemes/New Expensify.xcscheme @@ -75,7 +75,7 @@ + buildConfiguration = "DebugProduction"> diff --git a/ios/NewExpensify/Info.plist b/ios/NewExpensify/Info.plist index 42d495703c46..ca32322476f0 100644 --- a/ios/NewExpensify/Info.plist +++ b/ios/NewExpensify/Info.plist @@ -19,7 +19,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.3.58 + 1.3.69 CFBundleSignature ???? CFBundleURLTypes @@ -40,7 +40,7 @@ CFBundleVersion - 1.3.58.1 + 1.3.69.2 ITSAppUsesNonExemptEncryption LSApplicationQueriesSchemes @@ -108,6 +108,8 @@ armv7 + UIRequiresFullScreen + UISupportedInterfaceOrientations UIInterfaceOrientationPortrait @@ -117,8 +119,6 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationLandscapeLeft UIUserInterfaceStyle Dark diff --git a/ios/NewExpensifyTests/Info.plist b/ios/NewExpensifyTests/Info.plist index f88d269c5a57..874945636e4d 100644 --- a/ios/NewExpensifyTests/Info.plist +++ b/ios/NewExpensifyTests/Info.plist @@ -15,10 +15,10 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 1.3.58 + 1.3.69 CFBundleSignature ???? CFBundleVersion - 1.3.58.1 + 1.3.69.2 diff --git a/ios/Podfile b/ios/Podfile index 6445685db014..b30510572448 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -22,7 +22,7 @@ prepare_react_native_project! # dependencies: { # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), # ``` -flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled(['Debug Production', 'Debug Development', 'Debug AdHoc']) +flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled(['DebugProduction', 'DebugDevelopment', 'DebugAdHoc']) linkage = ENV['USE_FRAMEWORKS'] if linkage != nil @@ -54,12 +54,12 @@ target 'NewExpensify' do permissions_path = '../node_modules/react-native-permissions/ios' project 'NewExpensify', - 'Debug Development' => :debug, - 'Debug AdHoc' => :debug, - 'Debug Production' => :debug, - 'Release Development' => :release, - 'Release AdHoc' => :release, - 'Release Production' => :release + 'DebugDevelopment' => :debug, + 'DebugAdHoc' => :debug, + 'DebugProduction' => :debug, + 'ReleaseDevelopment' => :release, + 'ReleaseAdHoc' => :release, + 'ReleaseProduction' => :release pod 'Permission-LocationAccuracy', :path => "#{permissions_path}/LocationAccuracy" pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways" diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 16ed1e05dc64..aeb1887223cd 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -591,7 +591,7 @@ PODS: - React-Core - react-native-pager-view (6.2.0): - React-Core - - react-native-pdf (6.6.2): + - react-native-pdf (6.7.1): - React-Core - react-native-performance (4.0.0): - React-Core @@ -1254,7 +1254,7 @@ SPEC CHECKSUMS: react-native-key-command: c2645ec01eb1fa664606c09480c05cb4220ef67b react-native-netinfo: ccbe1085dffd16592791d550189772e13bf479e2 react-native-pager-view: 0ccb8bf60e2ebd38b1f3669fa3650ecce81db2df - react-native-pdf: 33c622cbdf776a649929e8b9d1ce2d313347c4fa + react-native-pdf: 7c0e91ada997bac8bac3bb5bea5b6b81f5a3caae react-native-performance: 224bd53e6a835fda4353302cf891d088a0af7406 react-native-plaid-link-sdk: 9eb0f71dad94b3bdde649c7a384cba93024af46c react-native-quick-sqlite: bcc7a7a250a40222f18913a97cd356bf82d0a6c4 @@ -1309,6 +1309,6 @@ SPEC CHECKSUMS: Yoga: 8796b55dba14d7004f980b54bcc9833ee45b28ce YogaKit: f782866e155069a2cca2517aafea43200b01fd5a -PODFILE CHECKSUM: 845537d35601574adcd0794e17003ba7dbccdbfd +PODFILE CHECKSUM: 2daf34c870819a933f3fefe426801d54b2ff2a14 COCOAPODS: 1.12.1 diff --git a/ios/chat_expensify_adhoc.mobileprovision.gpg b/ios/chat_expensify_adhoc.mobileprovision.gpg deleted file mode 100644 index 97179c8a65ac..000000000000 Binary files a/ios/chat_expensify_adhoc.mobileprovision.gpg and /dev/null differ diff --git a/ios/chat_expensify_appstore.mobileprovision.gpg b/ios/chat_expensify_appstore.mobileprovision.gpg index 39137ea24a07..246f5f0ec99e 100644 Binary files a/ios/chat_expensify_appstore.mobileprovision.gpg and b/ios/chat_expensify_appstore.mobileprovision.gpg differ diff --git a/ios/expensify_chat_adhoc.mobileprovision.gpg b/ios/expensify_chat_adhoc.mobileprovision.gpg index 1464356e423e..8160fba0cfa9 100644 Binary files a/ios/expensify_chat_adhoc.mobileprovision.gpg and b/ios/expensify_chat_adhoc.mobileprovision.gpg differ diff --git a/ios/expensify_chat_dev.mobileprovision.gpg b/ios/expensify_chat_dev.mobileprovision.gpg deleted file mode 100644 index 3b8b96b2c142..000000000000 Binary files a/ios/expensify_chat_dev.mobileprovision.gpg and /dev/null differ diff --git a/package-lock.json b/package-lock.json index acef3146fb25..dd50982ad21f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "new.expensify", - "version": "1.3.58-1", + "version": "1.3.69-2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "new.expensify", - "version": "1.3.58-1", + "version": "1.3.69-2", "hasInstallScript": true, "license": "MIT", "dependencies": { "@expensify/react-native-web": "0.18.15", + "@formatjs/intl-datetimeformat": "^6.10.0", "@formatjs/intl-getcanonicallocales": "^2.2.0", "@formatjs/intl-listformat": "^7.2.2", "@formatjs/intl-locale": "^3.3.0", @@ -18,6 +19,8 @@ "@formatjs/intl-pluralrules": "^5.2.2", "@gorhom/portal": "^1.0.14", "@invertase/react-native-apple-authentication": "^2.2.2", + "@kie/act-js": "^2.0.1", + "@kie/mock-github": "^1.0.0", "@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", "@onfido/react-native-sdk": "7.4.0", "@react-native-async-storage/async-storage": "^1.17.10", @@ -36,17 +39,20 @@ "@react-navigation/stack": "6.3.16", "@react-ng/bounds-observer": "^0.2.1", "@rnmapbox/maps": "^10.0.11", + "@types/node": "^18.14.0", "@ua/react-native-airship": "^15.2.6", "awesome-phonenumber": "^5.4.0", "babel-plugin-transform-remove-console": "^6.9.4", "babel-polyfill": "^6.26.0", + "canvas-size": "^1.2.6", "core-js": "^3.32.0", "date-fns": "^2.30.0", "date-fns-tz": "^2.0.0", "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", - "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#7735de14112a968fd6a4f5af710d2fbaefc8809d", + "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#35bff866a8d345b460ea6256f0a0f0a8a7f81086", "fbjs": "^3.0.2", + "focus-trap-react": "^10.2.1", "htmlparser2": "^7.2.0", "idb-keyval": "^6.2.1", "jest-when": "^3.5.2", @@ -84,7 +90,7 @@ "react-native-linear-gradient": "^2.8.1", "react-native-localize": "^2.2.6", "react-native-modal": "^13.0.0", - "react-native-onyx": "1.0.63", + "react-native-onyx": "1.0.76", "react-native-pager-view": "^6.2.0", "react-native-pdf": "^6.7.1", "react-native-performance": "^4.0.0", @@ -105,7 +111,6 @@ "react-native-web-linear-gradient": "^1.1.2", "react-native-web-lottie": "^1.4.4", "react-native-webview": "^11.17.2", - "react-native-x-maps": "1.0.10", "react-pdf": "^6.2.2", "react-plaid-link": "3.3.2", "react-web-config": "^1.0.0", @@ -128,6 +133,8 @@ "@babel/runtime": "^7.20.0", "@electron/notarize": "^1.2.3", "@jest/globals": "^29.5.0", + "@kie/act-js": "^2.0.1", + "@kie/mock-github": "^1.0.0", "@octokit/core": "4.0.4", "@octokit/plugin-paginate-rest": "3.1.0", "@octokit/plugin-throttling": "4.1.0", @@ -179,8 +186,8 @@ "css-loader": "^6.7.2", "diff-so-fancy": "^1.3.0", "dotenv": "^16.0.3", - "electron": "^25.4.0", - "electron-builder": "24.5.0", + "electron": "^25.8.1", + "electron-builder": "24.6.4", "eslint": "^7.6.0", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-expensify": "^2.0.38", @@ -221,7 +228,8 @@ "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.9.3", "webpack-font-preload-plugin": "^1.5.0", - "webpack-merge": "^5.8.0" + "webpack-merge": "^5.8.0", + "yaml": "^2.2.1" }, "engines": { "node": "16.15.1", @@ -2953,9 +2961,9 @@ } }, "node_modules/@electron/osx-sign": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.4.tgz", - "integrity": "sha512-xfhdEcIOfAZg7scZ9RQPya1G1lWo8/zMCwUXAulq0SfY7ONIW+b9qGyKdMyuMctNYwllrIS+vmxfijSfjeh97g==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", "dev": true, "dependencies": { "compare-version": "^0.1.2", @@ -2999,171 +3007,10 @@ "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/@electron/rebuild": { - "version": "3.2.13", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.2.13.tgz", - "integrity": "sha512-DH9Ol4JCnHDYVOD0fKWq+Qqbn/0WU1O6QR0mIpMXEVU4YFM4PlaqNC9K36mGShNBxxGFotZCMDrB1wl/iHM12g==", - "dev": true, - "dependencies": { - "@malept/cross-spawn-promise": "^2.0.0", - "chalk": "^4.0.0", - "debug": "^4.1.1", - "detect-libc": "^2.0.1", - "fs-extra": "^10.0.0", - "got": "^11.7.0", - "node-abi": "^3.0.0", - "node-api-version": "^0.1.4", - "node-gyp": "^9.0.0", - "ora": "^5.1.0", - "semver": "^7.3.5", - "tar": "^6.0.5", - "yargs": "^17.0.1" - }, - "bin": { - "electron-rebuild": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - } - }, - "node_modules/@electron/rebuild/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@electron/rebuild/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@electron/rebuild/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@electron/rebuild/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@electron/rebuild/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@electron/rebuild/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@electron/rebuild/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@electron/rebuild/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@electron/rebuild/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/rebuild/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@electron/rebuild/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/@electron/universal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz", - "integrity": "sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz", + "integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==", "dev": true, "dependencies": { "@electron/asar": "^3.2.1", @@ -3178,28 +3025,6 @@ "node": ">=8.6" } }, - "node_modules/@electron/universal/node_modules/@malept/cross-spawn-promise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/malept" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/subscription/pkg/npm-.malept-cross-spawn-promise?utm_medium=referral&utm_source=npm_fund" - } - ], - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", @@ -3871,6 +3696,33 @@ "tslib": "^2.4.0" } }, + "node_modules/@formatjs/intl-datetimeformat": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.10.0.tgz", + "integrity": "sha512-5tJWZxOyP5D4PDrqv27h0LWAPHhQM9BHR0pDBTZOKWFEZNrS2IgREbyalSGwQLtN1tZaDrt3YeNfNLbZk1wSUw==", + "dependencies": { + "@formatjs/ecma402-abstract": "1.17.0", + "@formatjs/intl-localematcher": "0.4.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/ecma402-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.0.tgz", + "integrity": "sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==", + "dependencies": { + "@formatjs/intl-localematcher": "0.4.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-datetimeformat/node_modules/@formatjs/intl-localematcher": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.4.0.tgz", + "integrity": "sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@formatjs/intl-enumerator": { "version": "1.3.0", "license": "MIT", @@ -5376,6 +5228,110 @@ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", "dev": true }, + "node_modules/@kie/act-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@kie/act-js/-/act-js-2.3.0.tgz", + "integrity": "sha512-Q9k0b05uA46jXKWmVfoGDW+0xsCcE7QPiHi8IH7h41P36DujHKBj4k28RCeIEx3IwUCxYHKwubN8DH4Vzc9XcA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@kie/mock-github": "^2.0.0", + "adm-zip": "^0.5.10", + "ajv": "^8.12.0", + "bin-links": "^4.0.1", + "express": "^4.18.1", + "follow-redirects": "^1.15.2", + "tar": "^6.1.13", + "yaml": "^2.1.3" + }, + "bin": { + "act-js": "bin/act" + } + }, + "node_modules/@kie/act-js/node_modules/@kie/mock-github": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-2.0.0.tgz", + "integrity": "sha512-od6UyICJYKMnz9HgEWCQAFT/JsCpKkLp+JQH8fV23tf+ZmmQI1dK3C20k6aO5uJhAHA0yOcFtbKFVF4+8i3DTg==", + "dev": true, + "dependencies": { + "@octokit/openapi-types-ghec": "^18.0.0", + "ajv": "^8.11.0", + "express": "^4.18.1", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "nock": "^13.2.7", + "simple-git": "^3.8.0", + "totalist": "^3.0.0" + } + }, + "node_modules/@kie/act-js/node_modules/@octokit/openapi-types-ghec": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-18.0.0.tgz", + "integrity": "sha512-xY5FTR/DW2gUJdC5GyzkqrfMHhr3u3hg+dUG6bA5FvuuODw6A7+0JTTSS1ndLQEKGmFxP7chf1BKkhvhnqxCew==", + "dev": true + }, + "node_modules/@kie/act-js/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@kie/act-js/node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@kie/mock-github": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-1.1.0.tgz", + "integrity": "sha512-fD+utlOiyZSOutOcXL0G9jfjbtvOO44PLUyTfgfkrm1+575R/dbvU6AcJfjc1DtHeRv7FC7f4ebyU+a1wgL6CA==", + "dev": true, + "dependencies": { + "@octokit/openapi-types-ghec": "^14.0.0", + "ajv": "^8.11.0", + "express": "^4.18.1", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "nock": "^13.2.7", + "simple-git": "^3.8.0", + "totalist": "^3.0.0" + } + }, + "node_modules/@kie/mock-github/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@kie/mock-github/node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/@kwsites/file-exists": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", @@ -5412,9 +5368,9 @@ } }, "node_modules/@malept/cross-spawn-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", "dev": true, "funding": [ { @@ -5430,7 +5386,7 @@ "cross-spawn": "^7.0.1" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10" } }, "node_modules/@malept/flatpak-bundler": { @@ -5882,6 +5838,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@octokit/openapi-types-ghec": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-14.0.0.tgz", + "integrity": "sha512-xhd9oEvn2aroGn+sk09Ptx/76Y7aKU0EIgHukHPCU1+rGJreO36baEEk6k8ZPblieHNM39FcykJQmtDrETm0KA==", + "dev": true + }, "node_modules/@octokit/plugin-paginate-rest": { "version": "3.1.0", "dev": true, @@ -7112,14 +7074,6 @@ "node": ">=8" } }, - "node_modules/@react-native-community/cli-doctor/node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "engines": { - "node": ">= 14" - } - }, "node_modules/@react-native-community/cli-hermes": { "version": "11.3.5", "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.5.tgz", @@ -19477,7 +19431,9 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/abort-controller": { "version": "3.0.0", @@ -19561,6 +19517,15 @@ "node": ">= 10.0.0" } }, + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, "node_modules/agent-base": { "version": "6.0.2", "dev": true, @@ -19572,20 +19537,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", - "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", - "dev": true, - "dependencies": { - "debug": "^4.1.0", - "depd": "^2.0.0", - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/aggregate-error": { "version": "3.1.0", "dev": true, @@ -19874,16 +19825,15 @@ "dev": true }, "node_modules/app-builder-lib": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.5.0.tgz", - "integrity": "sha512-f8R0aWIl5/JVipwP9QvEDIuebo191zGTco/aEdJQpMinQaIZSIS3U8kt1vZxYe7kGXZ3S0zNf6h7SMcWKRLzcQ==", + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz", + "integrity": "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "^1.2.3", - "@electron/osx-sign": "^1.0.4", - "@electron/rebuild": "^3.2.13", - "@electron/universal": "1.3.4", + "@electron/notarize": "2.1.0", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.4.1", "@malept/flatpak-bundler": "^0.4.0", "@types/fs-extra": "9.0.13", "7zip-bin": "~5.1.1", @@ -19913,6 +19863,35 @@ "node": ">=14.0.0" } }, + "node_modules/app-builder-lib/node_modules/@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/app-builder-lib/node_modules/@electron/notarize/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/app-builder-lib/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -21384,6 +21363,46 @@ "node": "*" } }, + "node_modules/bin-links": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.2.tgz", + "integrity": "sha512-jxJ0PbXR8eQyPlExCvCs3JFnikvs1Yp4gUJt6nmgathdOwvur+q22KWC3h20gvWl4T/14DXKj2IlkJwwZkZPOw==", + "dev": true, + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/bin-links/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/bin-links/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.2.0", "devOptional": true, @@ -22322,6 +22341,11 @@ "node": ">=6" } }, + "node_modules/canvas-size": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/canvas-size/-/canvas-size-1.2.6.tgz", + "integrity": "sha512-x2iVHOrZ5x9V0Hwx6kBz+Yxf/VCAII+jrD6WLjJbytJLozHq/oDJjEva432Os0eHxWMFR0vYlLJwTr6QxyxQqw==" + }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "dev": true, @@ -22812,6 +22836,15 @@ "node": ">=6" } }, + "node_modules/cmd-shim": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/co": { "version": "4.6.0", "license": "MIT", @@ -23466,6 +23499,15 @@ "node": ">=10" } }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/cp-file": { "version": "7.0.0", "dev": true, @@ -24595,6 +24637,8 @@ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8" } @@ -24707,12 +24751,12 @@ } }, "node_modules/dmg-builder": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.5.0.tgz", - "integrity": "sha512-xQHaXMALL85hQJVR2CKMmN8xibjwo2Ukjpj7aape/mAfE+w7E5RNg0nD/RVQ5uj5AHPySVFHiCGrAkjXjUPOcw==", + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz", + "integrity": "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==", "dev": true, "dependencies": { - "app-builder-lib": "24.5.0", + "app-builder-lib": "24.6.4", "builder-util": "24.5.0", "builder-util-runtime": "9.2.1", "fs-extra": "^10.1.0", @@ -25000,9 +25044,9 @@ } }, "node_modules/electron": { - "version": "25.4.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-25.4.0.tgz", - "integrity": "sha512-VLTRxDhL4UvQbqM7pTNENnJo62cdAPZT92N+B7BZQ5Xfok1wuVPEewIjBot4K7U3EpLUuHn1veeLzho3ihiP+Q==", + "version": "25.8.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", + "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -25018,21 +25062,21 @@ } }, "node_modules/electron-builder": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.5.0.tgz", - "integrity": "sha512-IyF6aYq5zcTz15ZkUK/PuFs3nW/fSR68ZgC/3ac32exw4ivQI0FlZLIEkJLpfI43pUFTtnvwv9Wsm1iDSf9aPw==", + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz", + "integrity": "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==", "dev": true, "dependencies": { - "app-builder-lib": "24.5.0", + "app-builder-lib": "24.6.4", "builder-util": "24.5.0", "builder-util-runtime": "9.2.1", "chalk": "^4.1.2", - "dmg-builder": "24.5.0", + "dmg-builder": "24.6.4", "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", "read-config-file": "6.3.2", - "simple-update-notifier": "^1.1.0", + "simple-update-notifier": "2.0.0", "yargs": "^17.6.2" }, "bin": { @@ -25337,6 +25381,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "optional": true, + "peer": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -27474,8 +27519,8 @@ }, "node_modules/expensify-common": { "version": "1.0.0", - "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#7735de14112a968fd6a4f5af710d2fbaefc8809d", - "integrity": "sha512-uhcd3sV276dFdrJCvk+KFWjMQ6rMKUNrNcBiZNB58S9NECCVioRuqFJXgfy90DcQz2CELHzZATdciXQ+fJ0Qhw==", + "resolved": "git+ssh://git@github.com/Expensify/expensify-common.git#35bff866a8d345b460ea6256f0a0f0a8a7f81086", + "integrity": "sha512-O0KbaMljSFyoZXcxtx5B2qBL+n0md3wYOrArMVT8N0W+4wKncn+p8/vrmVlUMHe/vDloUbVmUZNdHwOZNWdx3w==", "license": "MIT", "dependencies": { "classnames": "2.3.1", @@ -27557,12 +27602,6 @@ "version": "1.13.1", "license": "MIT" }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true - }, "node_modules/express": { "version": "4.18.1", "dev": true, @@ -28256,8 +28295,32 @@ "readable-stream": "^2.3.6" } }, + "node_modules/focus-trap": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz", + "integrity": "sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==", + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/focus-trap-react": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.2.1.tgz", + "integrity": "sha512-UrAKOn52lvfHF6lkUMfFhlQxFgahyNW5i6FpHWkDxAeD4FSk3iwx9n4UEA4Sims0G5WiGIi0fAyoq3/UVeNCYA==", + "dependencies": { + "focus-trap": "^7.5.2", + "tabbable": "^6.2.0" + }, + "peerDependencies": { + "prop-types": "^15.8.1", + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, "node_modules/follow-redirects": { - "version": "1.15.1", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true, "funding": [ { @@ -28265,7 +28328,6 @@ "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -28464,6 +28526,15 @@ "node": ">=8" } }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/form-data": { "version": "3.0.1", "dev": true, @@ -29751,15 +29822,6 @@ "node": ">=10.17.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "dependencies": { - "ms": "^2.0.0" - } - }, "node_modules/husky": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", @@ -30797,12 +30859,6 @@ "node": ">=8" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, "node_modules/is-map": { "version": "2.0.2", "dev": true, @@ -34602,234 +34658,6 @@ "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" } }, - "node_modules/make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/make-fetch-happen/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/fs-minipass/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/make-fetch-happen/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-fetch-happen/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/make-fetch-happen/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", - "dev": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/ssri/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/make-fetch-happen/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/make-fetch-happen/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/makeerror": { "version": "1.0.12", "license": "BSD-3-Clause", @@ -37635,32 +37463,6 @@ "node": ">= 8" } }, - "node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "dependencies": { - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/minipass-flush": { "version": "1.0.5", "dev": true, @@ -37683,18 +37485,6 @@ "node": ">=8" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/minizlib": { "version": "2.1.2", "dev": true, @@ -37980,16 +37770,19 @@ "node": ">=12.0.0" } }, - "node_modules/node-abi": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", - "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", + "node_modules/nock": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.3.tgz", + "integrity": "sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw==", "dev": true, "dependencies": { - "semver": "^7.3.5" + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "propagate": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">= 10.13" } }, "node_modules/node-abort-controller": { @@ -38004,15 +37797,6 @@ "dev": true, "optional": true }, - "node_modules/node-api-version": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", - "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - } - }, "node_modules/node-dir": { "version": "0.1.17", "license": "MIT", @@ -38065,92 +37849,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-gyp": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", - "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.13 || ^14.13 || >=16" - } - }, - "node_modules/node-gyp/node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/node-int64": { "version": "0.4.0", "license": "MIT" @@ -38218,21 +37916,6 @@ "url": "https://github.com/sponsors/antelle" } }, - "node_modules/nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/normalize-css-color": { "version": "1.0.2", "license": "BSD-3-Clause" @@ -38285,6 +37968,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "license": "MIT", @@ -39255,14 +38947,6 @@ "node": ">=0.6.0" } }, - "node_modules/patch-package/node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "engines": { - "node": ">= 14" - } - }, "node_modules/path-browserify": { "version": "0.0.1", "license": "MIT" @@ -39961,6 +39645,15 @@ "react-is": "^16.13.1" } }, + "node_modules/propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/property-information": { "version": "5.6.0", "dev": true, @@ -40879,9 +40572,9 @@ } }, "node_modules/react-native-onyx": { - "version": "1.0.63", - "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.63.tgz", - "integrity": "sha512-GJc4vlhx/+vnM+xRZqT7aq/BEYMAFcPxFF5TW5OKS7j5Ba/SKMmooZB5zAutsbVq5tfh+Cfh3L2O4rNRXNjKEg==", + "version": "1.0.76", + "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.76.tgz", + "integrity": "sha512-mcMlYQCo1B/kom+4hu7CQKKLwvPFjQAJsVIzV2s9aa8XKNlcnYiJbfuM6RSJ1fFmSIeud4Y66rhv4/oWUkSl5A==", "dependencies": { "ascii-table": "0.0.9", "fast-equals": "^4.0.3", @@ -40894,6 +40587,7 @@ "peerDependencies": { "idb-keyval": "^6.2.1", "react": ">=18.1.0", + "react-native-device-info": "^10.3.0", "react-native-performance": "^4.0.0", "react-native-quick-sqlite": "^8.0.0-beta.2" }, @@ -40901,6 +40595,9 @@ "idb-keyval": { "optional": true }, + "react-native-device-info": { + "optional": true + }, "react-native-performance": { "optional": true }, @@ -41212,18 +40909,6 @@ "node": ">=8" } }, - "node_modules/react-native-x-maps": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/react-native-x-maps/-/react-native-x-maps-1.0.10.tgz", - "integrity": "sha512-jBRl5JzP3QmGY6tj5CR9UwbREZ3tnuSa7puZozai3bRFrN68k3W6x1p6O8SGp91VvcQlaqJUPFZ+bkYiY3XRvA==", - "peerDependencies": { - "@rnmapbox/maps": "^10.0.11", - "mapbox-gl": "^2.15.0", - "react": "^18.2.0", - "react-map-gl": "^7.1.3", - "react-native": "^0.72.3" - } - }, "node_modules/react-native/node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", @@ -41979,6 +41664,15 @@ "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/read-cmd-shim": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/read-config-file": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", @@ -43783,24 +43477,15 @@ "license": "MIT" }, "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, "dependencies": { - "semver": "~7.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=10" } }, "node_modules/simply-deferred": { @@ -43891,6 +43576,7 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "optional": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -44120,34 +43806,6 @@ "websocket-driver": "^0.7.4" } }, - "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/sort-asc": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", @@ -45039,6 +44697,11 @@ "dev": true, "license": "BSD-3-Clause" }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, "node_modules/table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -48309,11 +47972,11 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "1.10.2", - "dev": true, - "license": "ISC", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { @@ -50306,9 +49969,9 @@ } }, "@electron/osx-sign": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.4.tgz", - "integrity": "sha512-xfhdEcIOfAZg7scZ9RQPya1G1lWo8/zMCwUXAulq0SfY7ONIW+b9qGyKdMyuMctNYwllrIS+vmxfijSfjeh97g==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz", + "integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==", "dev": true, "requires": { "compare-version": "^0.1.2", @@ -50338,131 +50001,10 @@ } } }, - "@electron/rebuild": { - "version": "3.2.13", - "resolved": "https://registry.npmjs.org/@electron/rebuild/-/rebuild-3.2.13.tgz", - "integrity": "sha512-DH9Ol4JCnHDYVOD0fKWq+Qqbn/0WU1O6QR0mIpMXEVU4YFM4PlaqNC9K36mGShNBxxGFotZCMDrB1wl/iHM12g==", - "dev": true, - "requires": { - "@malept/cross-spawn-promise": "^2.0.0", - "chalk": "^4.0.0", - "debug": "^4.1.1", - "detect-libc": "^2.0.1", - "fs-extra": "^10.0.0", - "got": "^11.7.0", - "node-abi": "^3.0.0", - "node-api-version": "^0.1.4", - "node-gyp": "^9.0.0", - "ora": "^5.1.0", - "semver": "^7.3.5", - "tar": "^6.0.5", - "yargs": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "requires": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - } - } - }, "@electron/universal": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz", - "integrity": "sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz", + "integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==", "dev": true, "requires": { "@electron/asar": "^3.2.1", @@ -50472,17 +50014,6 @@ "fs-extra": "^9.0.1", "minimatch": "^3.0.4", "plist": "^3.0.4" - }, - "dependencies": { - "@malept/cross-spawn-promise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", - "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.1" - } - } } }, "@emotion/use-insertion-effect-with-fallbacks": { @@ -50874,6 +50405,35 @@ "tslib": "^2.4.0" } }, + "@formatjs/intl-datetimeformat": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-datetimeformat/-/intl-datetimeformat-6.10.0.tgz", + "integrity": "sha512-5tJWZxOyP5D4PDrqv27h0LWAPHhQM9BHR0pDBTZOKWFEZNrS2IgREbyalSGwQLtN1tZaDrt3YeNfNLbZk1wSUw==", + "requires": { + "@formatjs/ecma402-abstract": "1.17.0", + "@formatjs/intl-localematcher": "0.4.0", + "tslib": "^2.4.0" + }, + "dependencies": { + "@formatjs/ecma402-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.0.tgz", + "integrity": "sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==", + "requires": { + "@formatjs/intl-localematcher": "0.4.0", + "tslib": "^2.4.0" + } + }, + "@formatjs/intl-localematcher": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.4.0.tgz", + "integrity": "sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==", + "requires": { + "tslib": "^2.4.0" + } + } + } + }, "@formatjs/intl-enumerator": { "version": "1.3.0", "requires": { @@ -51950,6 +51510,98 @@ "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==", "dev": true }, + "@kie/act-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@kie/act-js/-/act-js-2.3.0.tgz", + "integrity": "sha512-Q9k0b05uA46jXKWmVfoGDW+0xsCcE7QPiHi8IH7h41P36DujHKBj4k28RCeIEx3IwUCxYHKwubN8DH4Vzc9XcA==", + "dev": true, + "requires": { + "@kie/mock-github": "^2.0.0", + "adm-zip": "^0.5.10", + "ajv": "^8.12.0", + "bin-links": "^4.0.1", + "express": "^4.18.1", + "follow-redirects": "^1.15.2", + "tar": "^6.1.13", + "yaml": "^2.1.3" + }, + "dependencies": { + "@kie/mock-github": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-2.0.0.tgz", + "integrity": "sha512-od6UyICJYKMnz9HgEWCQAFT/JsCpKkLp+JQH8fV23tf+ZmmQI1dK3C20k6aO5uJhAHA0yOcFtbKFVF4+8i3DTg==", + "dev": true, + "requires": { + "@octokit/openapi-types-ghec": "^18.0.0", + "ajv": "^8.11.0", + "express": "^4.18.1", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "nock": "^13.2.7", + "simple-git": "^3.8.0", + "totalist": "^3.0.0" + } + }, + "@octokit/openapi-types-ghec": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-18.0.0.tgz", + "integrity": "sha512-xY5FTR/DW2gUJdC5GyzkqrfMHhr3u3hg+dUG6bA5FvuuODw6A7+0JTTSS1ndLQEKGmFxP7chf1BKkhvhnqxCew==", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true + } + } + }, + "@kie/mock-github": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@kie/mock-github/-/mock-github-1.1.0.tgz", + "integrity": "sha512-fD+utlOiyZSOutOcXL0G9jfjbtvOO44PLUyTfgfkrm1+575R/dbvU6AcJfjc1DtHeRv7FC7f4ebyU+a1wgL6CA==", + "dev": true, + "requires": { + "@octokit/openapi-types-ghec": "^14.0.0", + "ajv": "^8.11.0", + "express": "^4.18.1", + "fast-glob": "^3.2.12", + "fs-extra": "^10.1.0", + "nock": "^13.2.7", + "simple-git": "^3.8.0", + "totalist": "^3.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true + } + } + }, "@kwsites/file-exists": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", @@ -51977,9 +51629,9 @@ } }, "@malept/cross-spawn-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-2.0.0.tgz", - "integrity": "sha512-1DpKU0Z5ThltBwjNySMC14g0CkbyhCaz9FkhxqNsZI6uAPJXFS8cMXlBKo26FJ8ZuW6S9GCMcR9IO5k2X5/9Fg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", + "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==", "dev": true, "requires": { "cross-spawn": "^7.0.1" @@ -52332,6 +51984,12 @@ "version": "12.11.0", "dev": true }, + "@octokit/openapi-types-ghec": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types-ghec/-/openapi-types-ghec-14.0.0.tgz", + "integrity": "sha512-xhd9oEvn2aroGn+sk09Ptx/76Y7aKU0EIgHukHPCU1+rGJreO36baEEk6k8ZPblieHNM39FcykJQmtDrETm0KA==", + "dev": true + }, "@octokit/plugin-paginate-rest": { "version": "3.1.0", "dev": true, @@ -53245,11 +52903,6 @@ "requires": { "has-flag": "^4.0.0" } - }, - "yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==" } } }, @@ -61902,7 +61555,9 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "abort-controller": { "version": "3.0.0", @@ -61953,6 +61608,12 @@ "version": "1.2.1", "dev": true }, + "adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "dev": true + }, "agent-base": { "version": "6.0.2", "dev": true, @@ -61960,17 +61621,6 @@ "debug": "4" } }, - "agentkeepalive": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.3.0.tgz", - "integrity": "sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "depd": "^2.0.0", - "humanize-ms": "^1.2.1" - } - }, "aggregate-error": { "version": "3.1.0", "dev": true, @@ -62164,16 +61814,15 @@ "dev": true }, "app-builder-lib": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.5.0.tgz", - "integrity": "sha512-f8R0aWIl5/JVipwP9QvEDIuebo191zGTco/aEdJQpMinQaIZSIS3U8kt1vZxYe7kGXZ3S0zNf6h7SMcWKRLzcQ==", + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz", + "integrity": "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==", "dev": true, "requires": { "@develar/schema-utils": "~2.6.5", - "@electron/notarize": "^1.2.3", - "@electron/osx-sign": "^1.0.4", - "@electron/rebuild": "^3.2.13", - "@electron/universal": "1.3.4", + "@electron/notarize": "2.1.0", + "@electron/osx-sign": "1.0.5", + "@electron/universal": "1.4.1", "@malept/flatpak-bundler": "^0.4.0", "@types/fs-extra": "9.0.13", "7zip-bin": "~5.1.1", @@ -62200,6 +61849,31 @@ "temp-file": "^3.4.0" }, "dependencies": { + "@electron/notarize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz", + "integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1", + "promise-retry": "^2.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + } + } + }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -63239,6 +62913,36 @@ "version": "5.2.2", "devOptional": true }, + "bin-links": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.2.tgz", + "integrity": "sha512-jxJ0PbXR8eQyPlExCvCs3JFnikvs1Yp4gUJt6nmgathdOwvur+q22KWC3h20gvWl4T/14DXKj2IlkJwwZkZPOw==", + "dev": true, + "requires": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + }, + "write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + } + } + } + }, "binary-extensions": { "version": "2.2.0", "devOptional": true @@ -63902,6 +63606,11 @@ "simple-get": "^3.0.3" } }, + "canvas-size": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/canvas-size/-/canvas-size-1.2.6.tgz", + "integrity": "sha512-x2iVHOrZ5x9V0Hwx6kBz+Yxf/VCAII+jrD6WLjJbytJLozHq/oDJjEva432Os0eHxWMFR0vYlLJwTr6QxyxQqw==" + }, "case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "dev": true @@ -64209,6 +63918,12 @@ "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==" }, + "cmd-shim": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.1.tgz", + "integrity": "sha512-S9iI9y0nKR4hwEQsVWpyxld/6kRfGepGfzff83FcaiEBpmvlbA2nnGe7Cylgrx2f/p1P5S5wpRm9oL8z1PbS3Q==", + "dev": true + }, "co": { "version": "4.6.0" }, @@ -64643,6 +64358,14 @@ "parse-json": "^5.0.0", "path-type": "^4.0.0", "yaml": "^1.10.0" + }, + "dependencies": { + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + } } }, "cp-file": { @@ -65415,7 +65138,9 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "detect-newline": { "version": "3.1.0" @@ -65496,12 +65221,12 @@ } }, "dmg-builder": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.5.0.tgz", - "integrity": "sha512-xQHaXMALL85hQJVR2CKMmN8xibjwo2Ukjpj7aape/mAfE+w7E5RNg0nD/RVQ5uj5AHPySVFHiCGrAkjXjUPOcw==", + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz", + "integrity": "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==", "dev": true, "requires": { - "app-builder-lib": "24.5.0", + "app-builder-lib": "24.6.4", "builder-util": "24.5.0", "builder-util-runtime": "9.2.1", "dmg-license": "^1.0.11", @@ -65713,9 +65438,9 @@ } }, "electron": { - "version": "25.4.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-25.4.0.tgz", - "integrity": "sha512-VLTRxDhL4UvQbqM7pTNENnJo62cdAPZT92N+B7BZQ5Xfok1wuVPEewIjBot4K7U3EpLUuHn1veeLzho3ihiP+Q==", + "version": "25.8.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-25.8.1.tgz", + "integrity": "sha512-GtcP1nMrROZfFg0+mhyj1hamrHvukfF6of2B/pcWxmWkd5FVY1NJib0tlhiorFZRzQN5Z+APLPr7aMolt7i2AQ==", "dev": true, "requires": { "@electron/get": "^2.0.0", @@ -65724,21 +65449,21 @@ } }, "electron-builder": { - "version": "24.5.0", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.5.0.tgz", - "integrity": "sha512-IyF6aYq5zcTz15ZkUK/PuFs3nW/fSR68ZgC/3ac32exw4ivQI0FlZLIEkJLpfI43pUFTtnvwv9Wsm1iDSf9aPw==", + "version": "24.6.4", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz", + "integrity": "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==", "dev": true, "requires": { - "app-builder-lib": "24.5.0", + "app-builder-lib": "24.6.4", "builder-util": "24.5.0", "builder-util-runtime": "9.2.1", "chalk": "^4.1.2", - "dmg-builder": "24.5.0", + "dmg-builder": "24.6.4", "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", "read-config-file": "6.3.2", - "simple-update-notifier": "^1.1.0", + "simple-update-notifier": "2.0.0", "yargs": "^17.6.2" }, "dependencies": { @@ -65955,6 +65680,7 @@ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "optional": true, + "peer": true, "requires": { "iconv-lite": "^0.6.2" } @@ -67436,9 +67162,9 @@ } }, "expensify-common": { - "version": "git+ssh://git@github.com/Expensify/expensify-common.git#7735de14112a968fd6a4f5af710d2fbaefc8809d", - "integrity": "sha512-uhcd3sV276dFdrJCvk+KFWjMQ6rMKUNrNcBiZNB58S9NECCVioRuqFJXgfy90DcQz2CELHzZATdciXQ+fJ0Qhw==", - "from": "expensify-common@git+ssh://git@github.com/Expensify/expensify-common.git#7735de14112a968fd6a4f5af710d2fbaefc8809d", + "version": "git+ssh://git@github.com/Expensify/expensify-common.git#35bff866a8d345b460ea6256f0a0f0a8a7f81086", + "integrity": "sha512-O0KbaMljSFyoZXcxtx5B2qBL+n0md3wYOrArMVT8N0W+4wKncn+p8/vrmVlUMHe/vDloUbVmUZNdHwOZNWdx3w==", + "from": "expensify-common@git+ssh://git@github.com/Expensify/expensify-common.git#35bff866a8d345b460ea6256f0a0f0a8a7f81086", "requires": { "classnames": "2.3.1", "clipboard": "2.0.4", @@ -67496,12 +67222,6 @@ } } }, - "exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true - }, "express": { "version": "4.18.1", "dev": true, @@ -67993,8 +67713,27 @@ "readable-stream": "^2.3.6" } }, + "focus-trap": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.2.tgz", + "integrity": "sha512-p6vGNNWLDGwJCiEjkSK6oERj/hEyI9ITsSwIUICBoKLlWiTWXJRfQibCwcoi50rTZdbi87qDtUlMCmQwsGSgPw==", + "requires": { + "tabbable": "^6.2.0" + } + }, + "focus-trap-react": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.2.1.tgz", + "integrity": "sha512-UrAKOn52lvfHF6lkUMfFhlQxFgahyNW5i6FpHWkDxAeD4FSk3iwx9n4UEA4Sims0G5WiGIi0fAyoq3/UVeNCYA==", + "requires": { + "focus-trap": "^7.5.2", + "tabbable": "^6.2.0" + } + }, "follow-redirects": { - "version": "1.15.1", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "dev": true }, "for-each": { @@ -68110,6 +67849,12 @@ "requires": { "has-flag": "^4.0.0" } + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true } } }, @@ -68971,15 +68716,6 @@ "human-signals": { "version": "2.1.0" }, - "humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "dev": true, - "requires": { - "ms": "^2.0.0" - } - }, "husky": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/husky/-/husky-1.3.1.tgz", @@ -69636,12 +69372,6 @@ "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" }, - "is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true - }, "is-map": { "version": "2.0.2", "dev": true @@ -72221,179 +71951,6 @@ "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.1.tgz", "integrity": "sha512-JhvWq/iz1BvlmnPvLJjXv+xnMPJZuychrDC68V+yCGQJn5chcA8rLGKo5EP1XwIKVrigSXKLmbeXAGkf36wdCQ==" }, - "make-fetch-happen": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", - "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", - "dev": true, - "requires": { - "agentkeepalive": "^4.2.1", - "cacache": "^17.0.0", - "http-cache-semantics": "^4.1.1", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^5.0.0", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^10.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cacache": { - "version": "17.1.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", - "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", - "dev": true, - "requires": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^7.7.1", - "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "dependencies": { - "minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true - } - } - }, - "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - } - }, - "fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, - "requires": { - "minipass": "^7.0.3" - }, - "dependencies": { - "minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true - } - } - }, - "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", - "dev": true, - "requires": { - "minipass": "^7.0.3" - }, - "dependencies": { - "minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", - "dev": true - } - } - }, - "unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "requires": { - "unique-slug": "^4.0.0" - } - }, - "unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4" - } - } - } - }, "makeerror": { "version": "1.0.12", "requires": { @@ -74401,26 +73958,6 @@ "minipass": "^3.0.0" } }, - "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^5.0.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "dependencies": { - "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true - } - } - }, "minipass-flush": { "version": "1.0.5", "dev": true, @@ -74435,15 +73972,6 @@ "minipass": "^3.0.0" } }, - "minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "requires": { - "minipass": "^3.0.0" - } - }, "minizlib": { "version": "2.1.2", "dev": true, @@ -74643,13 +74171,16 @@ "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==" }, - "node-abi": { - "version": "3.45.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.45.0.tgz", - "integrity": "sha512-iwXuFrMAcFVi/ZoZiqq8BzAdsLw9kxDfTC0HMyjXfSL/6CSDAGD5UmR7azrAgWV1zKYq7dUUMj4owusBWKLsiQ==", + "nock": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.3.tgz", + "integrity": "sha512-z+KUlILy9SK/RjpeXDiDUEAq4T94ADPHE3qaRkf66mpEhzc/ytOMm3Bwdrbq6k1tMWkbdujiKim3G2tfQARuJw==", "dev": true, "requires": { - "semver": "^7.3.5" + "debug": "^4.1.0", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.21", + "propagate": "^2.0.0" } }, "node-abort-controller": { @@ -74664,15 +74195,6 @@ "dev": true, "optional": true }, - "node-api-version": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/node-api-version/-/node-api-version-0.1.4.tgz", - "integrity": "sha512-KGXihXdUChwJAOHO53bv9/vXcLmdUsZ6jIptbvYvkpKfth+r7jw44JkVxQFA3kX5nQjzjmGu1uAu/xNNLNlI5g==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, "node-dir": { "version": "0.1.17", "requires": { @@ -74704,76 +74226,6 @@ "version": "1.3.1", "dev": true }, - "node-gyp": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", - "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", - "nopt": "^6.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "dev": true, - "requires": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" - } - }, - "npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "dev": true, - "requires": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - } - }, - "readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, "node-int64": { "version": "0.4.0" }, @@ -74831,15 +74283,6 @@ "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==" }, - "nopt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", - "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", - "dev": true, - "requires": { - "abbrev": "^1.0.0" - } - }, "normalize-css-color": { "version": "1.0.2" }, @@ -74873,6 +74316,12 @@ "version": "6.1.0", "dev": true }, + "npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true + }, "npm-run-path": { "version": "4.0.1", "requires": { @@ -75504,11 +74953,6 @@ "requires": { "os-tmpdir": "~1.0.2" } - }, - "yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==" } } }, @@ -75973,6 +75417,12 @@ "react-is": "^16.13.1" } }, + "propagate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", + "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", + "dev": true + }, "property-information": { "version": "5.6.0", "dev": true, @@ -76677,9 +76127,9 @@ } }, "react-native-onyx": { - "version": "1.0.63", - "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.63.tgz", - "integrity": "sha512-GJc4vlhx/+vnM+xRZqT7aq/BEYMAFcPxFF5TW5OKS7j5Ba/SKMmooZB5zAutsbVq5tfh+Cfh3L2O4rNRXNjKEg==", + "version": "1.0.76", + "resolved": "https://registry.npmjs.org/react-native-onyx/-/react-native-onyx-1.0.76.tgz", + "integrity": "sha512-mcMlYQCo1B/kom+4hu7CQKKLwvPFjQAJsVIzV2s9aa8XKNlcnYiJbfuM6RSJ1fFmSIeud4Y66rhv4/oWUkSl5A==", "requires": { "ascii-table": "0.0.9", "fast-equals": "^4.0.3", @@ -76877,12 +76327,6 @@ } } }, - "react-native-x-maps": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/react-native-x-maps/-/react-native-x-maps-1.0.10.tgz", - "integrity": "sha512-jBRl5JzP3QmGY6tj5CR9UwbREZ3tnuSa7puZozai3bRFrN68k3W6x1p6O8SGp91VvcQlaqJUPFZ+bkYiY3XRvA==", - "requires": {} - }, "react-pdf": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-6.2.2.tgz", @@ -77269,6 +76713,12 @@ "memoize-one": ">=3.1.1 <6" } }, + "read-cmd-shim": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-4.0.0.tgz", + "integrity": "sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==", + "dev": true + }, "read-config-file": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", @@ -78551,20 +78001,12 @@ } }, "simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", "dev": true, "requires": { - "semver": "~7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } + "semver": "^7.5.3" } }, "simply-deferred": { @@ -78632,7 +78074,8 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true + "dev": true, + "optional": true }, "snapdragon": { "version": "0.8.2", @@ -78795,27 +78238,6 @@ "websocket-driver": "^0.7.4" } }, - "socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, - "requires": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, "sort-asc": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", @@ -79437,6 +78859,11 @@ "version": "2.0.15", "dev": true }, + "tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, "table": { "version": "6.8.1", "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", @@ -81627,8 +81054,9 @@ "version": "4.0.0" }, "yaml": { - "version": "1.10.2", - "dev": true + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==" }, "yargs": { "version": "13.3.2", diff --git a/package.json b/package.json index 58bb57b1bb98..ca99b8ef8720 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "new.expensify", - "version": "1.3.58-1", + "version": "1.3.69-2", "author": "Expensify, Inc.", "homepage": "https://new.expensify.com", "description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.", @@ -11,10 +11,10 @@ "postinstall": "scripts/postInstall.sh", "clean": "npx react-native clean-project-auto", "android": "scripts/set-pusher-suffix.sh && npx react-native run-android --variant=developmentDebug --appId=com.expensify.chat.dev", - "ios": "scripts/set-pusher-suffix.sh && npx react-native run-ios --configuration=\"Debug Development\" --scheme=\"New Expensify Dev\"", + "ios": "scripts/set-pusher-suffix.sh && npx react-native run-ios --list-devices --configuration=\"DebugDevelopment\" --scheme=\"New Expensify Dev\"", "pod-install": "cd ios && bundle exec pod install", - "ipad": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (12.9-inch) (6th generation)\\\" --configuration=\\\"Debug Development\\\" --scheme=\\\"New Expensify Dev\\\"\"", - "ipad-sm": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (11-inch) (4th generation)\\\" --configuration=\\\"Debug Development\\\" --scheme=\\\"New Expensify Dev\\\"\"", + "ipad": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (12.9-inch) (6th generation)\\\" --configuration=\\\"DebugDevelopment\\\" --scheme=\\\"New Expensify Dev\\\"\"", + "ipad-sm": "concurrently \"npx react-native run-ios --simulator=\\\"iPad Pro (11-inch) (4th generation)\\\" --configuration=\\\"DebugDevelopment\\\" --scheme=\\\"New Expensify Dev\\\"\"", "start": "npx react-native start", "web": "scripts/set-pusher-suffix.sh && concurrently npm:web-proxy npm:web-server", "web-proxy": "node web/proxy.js", @@ -47,10 +47,13 @@ "analyze-packages": "ANALYZE_BUNDLE=true webpack --config config/webpack/webpack.common.js --env envFile=.env.production", "symbolicate:android": "npx metro-symbolicate android/app/build/generated/sourcemaps/react/release/index.android.bundle.map", "symbolicate:ios": "npx metro-symbolicate main.jsbundle.map", - "test:e2e": "node tests/e2e/testRunner.js --development" + "test:e2e": "node tests/e2e/testRunner.js --development", + "workflow-test": "./workflow_tests/scripts/runWorkflowTests.sh", + "workflow-test:generate": "node workflow_tests/utils/preGenerateTest.js" }, "dependencies": { "@expensify/react-native-web": "0.18.15", + "@formatjs/intl-datetimeformat": "^6.10.0", "@formatjs/intl-getcanonicallocales": "^2.2.0", "@formatjs/intl-listformat": "^7.2.2", "@formatjs/intl-locale": "^3.3.0", @@ -59,6 +62,8 @@ "@gorhom/portal": "^1.0.14", "@invertase/react-native-apple-authentication": "^2.2.2", "@oguzhnatly/react-native-image-manipulator": "github:Expensify/react-native-image-manipulator#5cdae3d4455b03a04c57f50be3863e2fe6c92c52", + "@kie/act-js": "^2.0.1", + "@kie/mock-github": "^1.0.0", "@onfido/react-native-sdk": "7.4.0", "@react-native-async-storage/async-storage": "^1.17.10", "@react-native-camera-roll/camera-roll": "5.4.0", @@ -78,15 +83,18 @@ "@rnmapbox/maps": "^10.0.11", "@ua/react-native-airship": "^15.2.6", "awesome-phonenumber": "^5.4.0", + "@types/node": "^18.14.0", "babel-plugin-transform-remove-console": "^6.9.4", "babel-polyfill": "^6.26.0", + "canvas-size": "^1.2.6", "core-js": "^3.32.0", "date-fns": "^2.30.0", "date-fns-tz": "^2.0.0", "dom-serializer": "^0.2.2", "domhandler": "^4.3.0", - "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#7735de14112a968fd6a4f5af710d2fbaefc8809d", + "expensify-common": "git+ssh://git@github.com/Expensify/expensify-common.git#35bff866a8d345b460ea6256f0a0f0a8a7f81086", "fbjs": "^3.0.2", + "focus-trap-react": "^10.2.1", "htmlparser2": "^7.2.0", "idb-keyval": "^6.2.1", "jest-when": "^3.5.2", @@ -124,7 +132,7 @@ "react-native-linear-gradient": "^2.8.1", "react-native-localize": "^2.2.6", "react-native-modal": "^13.0.0", - "react-native-onyx": "1.0.63", + "react-native-onyx": "1.0.76", "react-native-pager-view": "^6.2.0", "react-native-pdf": "^6.7.1", "react-native-performance": "^4.0.0", @@ -145,7 +153,6 @@ "react-native-web-linear-gradient": "^1.1.2", "react-native-web-lottie": "^1.4.4", "react-native-webview": "^11.17.2", - "react-native-x-maps": "1.0.10", "react-pdf": "^6.2.2", "react-plaid-link": "3.3.2", "react-web-config": "^1.0.0", @@ -168,6 +175,8 @@ "@babel/runtime": "^7.20.0", "@electron/notarize": "^1.2.3", "@jest/globals": "^29.5.0", + "@kie/act-js": "^2.0.1", + "@kie/mock-github": "^1.0.0", "@octokit/core": "4.0.4", "@octokit/plugin-paginate-rest": "3.1.0", "@octokit/plugin-throttling": "4.1.0", @@ -219,8 +228,8 @@ "css-loader": "^6.7.2", "diff-so-fancy": "^1.3.0", "dotenv": "^16.0.3", - "electron": "^25.4.0", - "electron-builder": "24.5.0", + "electron": "^25.8.1", + "electron-builder": "24.6.4", "eslint": "^7.6.0", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-expensify": "^2.0.38", @@ -261,7 +270,8 @@ "webpack-cli": "^4.10.0", "webpack-dev-server": "^4.9.3", "webpack-font-preload-plugin": "^1.5.0", - "webpack-merge": "^5.8.0" + "webpack-merge": "^5.8.0", + "yaml": "^2.2.1" }, "overrides": { "react-native": "$react-native" diff --git a/patches/@react-navigation+material-top-tabs+6.6.3.patch b/patches/@react-navigation+material-top-tabs+6.6.3.patch new file mode 100644 index 000000000000..cce3b67b2e64 --- /dev/null +++ b/patches/@react-navigation+material-top-tabs+6.6.3.patch @@ -0,0 +1,146 @@ +diff --git a/node_modules/@react-navigation/material-top-tabs/lib/module/index.js b/node_modules/@react-navigation/material-top-tabs/lib/module/index.js +index b83d44f..9d158a0 100644 +--- a/node_modules/@react-navigation/material-top-tabs/lib/module/index.js ++++ b/node_modules/@react-navigation/material-top-tabs/lib/module/index.js +@@ -9,6 +9,11 @@ export { default as createMaterialTopTabNavigator } from './navigators/createMat + export { default as MaterialTopTabBar } from './views/MaterialTopTabBar'; + export { default as MaterialTopTabView } from './views/MaterialTopTabView'; + ++/** ++ * Utilities ++ */ ++export { useTabAnimation } from './utils/useTabAnimation'; ++ + /** + * Types + */ +diff --git a/node_modules/@react-navigation/material-top-tabs/lib/module/utils/TabAnimationContext.js b/node_modules/@react-navigation/material-top-tabs/lib/module/utils/TabAnimationContext.js +new file mode 100644 +index 0000000..4ef4e76 +--- /dev/null ++++ b/node_modules/@react-navigation/material-top-tabs/lib/module/utils/TabAnimationContext.js +@@ -0,0 +1,3 @@ ++import * as React from 'react'; ++export const TabAnimationContext = /*#__PURE__*/React.createContext(undefined); ++//# sourceMappingURL=TabAnimationContext.js.map +\ No newline at end of file +diff --git a/node_modules/@react-navigation/material-top-tabs/lib/module/utils/useTabAnimation.js b/node_modules/@react-navigation/material-top-tabs/lib/module/utils/useTabAnimation.js +new file mode 100644 +index 0000000..764ca9b +--- /dev/null ++++ b/node_modules/@react-navigation/material-top-tabs/lib/module/utils/useTabAnimation.js +@@ -0,0 +1,10 @@ ++import * as React from 'react'; ++import { TabAnimationContext } from './TabAnimationContext'; ++export function useTabAnimation() { ++ const animation = React.useContext(TabAnimationContext); ++ if (animation === undefined) { ++ throw new Error("Couldn't find values for card animation. Are you inside a screen in Tab?"); ++ } ++ return animation; ++} ++//# sourceMappingURL=useTabAnimation.js.map +\ No newline at end of file +diff --git a/node_modules/@react-navigation/material-top-tabs/lib/module/views/MaterialTopTabView.js b/node_modules/@react-navigation/material-top-tabs/lib/module/views/MaterialTopTabView.js +index 7eda7c4..f736fd9 100644 +--- a/node_modules/@react-navigation/material-top-tabs/lib/module/views/MaterialTopTabView.js ++++ b/node_modules/@react-navigation/material-top-tabs/lib/module/views/MaterialTopTabView.js +@@ -2,6 +2,7 @@ function _extends() { _extends = Object.assign ? Object.assign.bind() : function + import { CommonActions, useTheme } from '@react-navigation/native'; + import * as React from 'react'; + import { TabView } from 'react-native-tab-view'; ++import { TabAnimationContext } from '../utils/TabAnimationContext'; + import MaterialTopTabBar from './MaterialTopTabBar'; + export default function MaterialTopTabView(_ref) { + let { +@@ -34,9 +35,12 @@ export default function MaterialTopTabView(_ref) { + }), + renderScene: _ref2 => { + let { +- route ++ route, ++ position + } = _ref2; +- return descriptors[route.key].render(); ++ return /*#__PURE__*/React.createElement(TabAnimationContext.Provider, { ++ value: position ++ }, descriptors[route.key].render()); + }, + navigationState: state, + renderTabBar: renderTabBar, +diff --git a/node_modules/@react-navigation/material-top-tabs/src/index.tsx b/node_modules/@react-navigation/material-top-tabs/src/index.tsx +index ae02811..b735f30 100644 +--- a/node_modules/@react-navigation/material-top-tabs/src/index.tsx ++++ b/node_modules/@react-navigation/material-top-tabs/src/index.tsx +@@ -9,6 +9,11 @@ export { default as createMaterialTopTabNavigator } from './navigators/createMat + export { default as MaterialTopTabBar } from './views/MaterialTopTabBar'; + export { default as MaterialTopTabView } from './views/MaterialTopTabView'; + ++/** ++ * Utilities ++ */ ++export { useTabAnimation } from './utils/useTabAnimation'; ++ + /** + * Types + */ +diff --git a/node_modules/@react-navigation/material-top-tabs/src/utils/TabAnimationContext.ts b/node_modules/@react-navigation/material-top-tabs/src/utils/TabAnimationContext.ts +new file mode 100644 +index 0000000..92a97ec +--- /dev/null ++++ b/node_modules/@react-navigation/material-top-tabs/src/utils/TabAnimationContext.ts +@@ -0,0 +1,6 @@ ++import * as React from 'react'; ++import type { Animated } from 'react-native'; ++ ++export const TabAnimationContext = React.createContext< ++ Animated.AnimatedInterpolation | undefined ++>(undefined); +\ No newline at end of file +diff --git a/node_modules/@react-navigation/material-top-tabs/src/utils/useTabAnimation.ts b/node_modules/@react-navigation/material-top-tabs/src/utils/useTabAnimation.ts +new file mode 100644 +index 0000000..6c122a7 +--- /dev/null ++++ b/node_modules/@react-navigation/material-top-tabs/src/utils/useTabAnimation.ts +@@ -0,0 +1,15 @@ ++import * as React from 'react'; ++ ++import { TabAnimationContext } from './TabAnimationContext'; ++ ++export function useTabAnimation() { ++ const animation = React.useContext(TabAnimationContext); ++ ++ if (animation === undefined) { ++ throw new Error( ++ "Couldn't find values for card animation. Are you inside a screen in Tab?" ++ ); ++ } ++ ++ return animation; ++} +\ No newline at end of file +diff --git a/node_modules/@react-navigation/material-top-tabs/src/views/MaterialTopTabView.tsx b/node_modules/@react-navigation/material-top-tabs/src/views/MaterialTopTabView.tsx +index 1282698..9b0af5d 100644 +--- a/node_modules/@react-navigation/material-top-tabs/src/views/MaterialTopTabView.tsx ++++ b/node_modules/@react-navigation/material-top-tabs/src/views/MaterialTopTabView.tsx +@@ -14,6 +14,7 @@ import type { + MaterialTopTabNavigationConfig, + MaterialTopTabNavigationHelpers, + } from '../types'; ++import { TabAnimationContext } from '../utils/TabAnimationContext'; + import MaterialTopTabBar from './MaterialTopTabBar'; + + type Props = MaterialTopTabNavigationConfig & { +@@ -55,7 +56,11 @@ export default function MaterialTopTabView({ + target: state.key, + }) + } +- renderScene={({ route }) => descriptors[route.key].render()} ++ renderScene={({ route, position }) => ( ++ ++ {descriptors[route.key].render()} ++ ++ )} + navigationState={state} + renderTabBar={renderTabBar} + renderLazyPlaceholder={({ route }) => diff --git a/patches/@react-navigation+native+6.1.6.patch b/patches/@react-navigation+native+6.1.6.patch index 61e5eb9892e1..eb933683c850 100644 --- a/patches/@react-navigation+native+6.1.6.patch +++ b/patches/@react-navigation+native+6.1.6.patch @@ -133,7 +133,7 @@ index 0000000..16da117 +//# sourceMappingURL=findFocusedRouteKey.js.map \ No newline at end of file diff --git a/node_modules/@react-navigation/native/lib/module/useLinking.js b/node_modules/@react-navigation/native/lib/module/useLinking.js -index 5bf2a88..a6d0670 100644 +index 5bf2a88..a4318ef 100644 --- a/node_modules/@react-navigation/native/lib/module/useLinking.js +++ b/node_modules/@react-navigation/native/lib/module/useLinking.js @@ -2,6 +2,7 @@ import { findFocusedRoute, getActionFromState as getActionFromStateDefault, getP @@ -144,7 +144,37 @@ index 5bf2a88..a6d0670 100644 import ServerContext from './ServerContext'; /** * Find the matching navigation state that changed between 2 navigation states -@@ -60,6 +61,44 @@ const series = cb => { +@@ -34,32 +35,52 @@ const findMatchingState = (a, b) => { + /** + * Run async function in series as it's called. + */ +-const series = cb => { +- // Whether we're currently handling a callback +- let handling = false; +- let queue = []; +- const callback = async () => { +- try { +- if (handling) { +- // If we're currently handling a previous event, wait before handling this one +- // Add the callback to the beginning of the queue +- queue.unshift(callback); +- return; +- } +- handling = true; +- await cb(); +- } finally { +- handling = false; +- if (queue.length) { +- // If we have queued items, handle the last one +- const last = queue.pop(); +- last === null || last === void 0 ? void 0 : last(); +- } +- } ++const series = (cb) => { ++ let queue = Promise.resolve(); ++ const callback = () => { ++ queue = queue.then(cb); + }; return callback; }; let linkingHandlers = []; @@ -189,7 +219,7 @@ index 5bf2a88..a6d0670 100644 export default function useLinking(ref, _ref) { let { independent, -@@ -251,6 +290,9 @@ export default function useLinking(ref, _ref) { +@@ -251,6 +272,9 @@ export default function useLinking(ref, _ref) { // Otherwise it's likely a change triggered by `popstate` path !== pendingPath) { const historyDelta = (focusedState.history ? focusedState.history.length : focusedState.routes.length) - (previousFocusedState.history ? previousFocusedState.history.length : previousFocusedState.routes.length); @@ -199,7 +229,7 @@ index 5bf2a88..a6d0670 100644 if (historyDelta > 0) { // If history length is increased, we should pushState // Note that path might not actually change here, for example, drawer open should pushState -@@ -262,34 +304,55 @@ export default function useLinking(ref, _ref) { +@@ -262,34 +286,55 @@ export default function useLinking(ref, _ref) { // If history length is decreased, i.e. entries were removed, we want to go back const nextIndex = history.backIndex({ diff --git a/patches/@react-navigation+stack+6.3.16.patch b/patches/@react-navigation+stack+6.3.16+001+initial.patch similarity index 100% rename from patches/@react-navigation+stack+6.3.16.patch rename to patches/@react-navigation+stack+6.3.16+001+initial.patch diff --git a/patches/@react-navigation+stack+6.3.16+002+dontDetachScreen.patch b/patches/@react-navigation+stack+6.3.16+002+dontDetachScreen.patch new file mode 100644 index 000000000000..d64fc4fecf74 --- /dev/null +++ b/patches/@react-navigation+stack+6.3.16+002+dontDetachScreen.patch @@ -0,0 +1,68 @@ +diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js +index 4bedb81..155d87f 100644 +--- a/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js ++++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/Card.js +@@ -123,7 +123,7 @@ export default class Card extends React.Component { + animation(gesture, { + ...spec.config, + // Detecting if the user used swipe gesture on iOS safari to trigger navigation in the browser history. +- duration: getIsEdgeDragGesture() ? 0 : undefined, ++ duration: getIsEdgeDragGesture() ? 0 : spec.config.duration, + velocity, + toValue, + useNativeDriver, +diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js +index b595af8..870be65 100644 +--- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js ++++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardContainer.js +@@ -1,7 +1,7 @@ + import { getHeaderTitle, HeaderBackContext, HeaderHeightContext, HeaderShownContext } from '@react-navigation/elements'; + import { useTheme } from '@react-navigation/native'; + import * as React from 'react'; +-import { StyleSheet, View } from 'react-native'; ++import { Platform, StyleSheet, View } from 'react-native'; + import ModalPresentationContext from '../../utils/ModalPresentationContext'; + import useKeyboardManager from '../../utils/useKeyboardManager'; + import Card from './Card'; +@@ -215,7 +215,8 @@ function CardContainer(_ref) { + display: + // Hide unfocused screens when animation isn't enabled + // This is also necessary for a11y on web +- animationEnabled === false && isNextScreenTransparent === false && detachCurrentScreen !== false && !focused ? 'none' : 'flex' ++ animationEnabled === false && isNextScreenTransparent === false && detachCurrentScreen !== false && !focused ? 'none' : 'flex', ++ zIndex: Platform.OS === 'web' ? 'auto' : undefined, + }, StyleSheet.absoluteFill] + }, /*#__PURE__*/React.createElement(View, { + style: styles.container +diff --git a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js +index 7558eb3..b7bb75e 100644 +--- a/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js ++++ b/node_modules/@react-navigation/stack/lib/module/views/Stack/CardStack.js +@@ -356,6 +356,9 @@ export default class CardStack extends React.Component { + extrapolate: 'clamp' + }) : STATE_TRANSITIONING_OR_BELOW_TOP; + } ++ ++ const isHomeScreenAndNotOnTop = route.name === 'Home' && isScreenActive !== STATE_ON_TOP; ++ + const { + headerShown = true, + headerTransparent, +@@ -389,7 +392,7 @@ export default class CardStack extends React.Component { + key: route.key, + style: StyleSheet.absoluteFill, + enabled: detachInactiveScreens, +- active: isScreenActive, ++ active: isHomeScreenAndNotOnTop ? STATE_TRANSITIONING_OR_BELOW_TOP : isScreenActive, + freezeOnBlur: freezeOnBlur, + pointerEvents: "box-none" + }, /*#__PURE__*/React.createElement(CardContainer, { +@@ -423,7 +426,7 @@ export default class CardStack extends React.Component { + onTransitionStart: onTransitionStart, + onTransitionEnd: onTransitionEnd, + isNextScreenTransparent: isNextScreenTransparent, +- detachCurrentScreen: detachCurrentScreen ++ detachCurrentScreen: isHomeScreenAndNotOnTop ? false : detachCurrentScreen, + })); + })), isFloatHeaderAbsolute ? floatingHeader : null); + } diff --git a/src/App.js b/src/App.js index c432a0b666c8..284c6115d7b8 100644 --- a/src/App.js +++ b/src/App.js @@ -22,8 +22,10 @@ import ThemeProvider from './styles/themes/ThemeProvider'; import ThemeStylesProvider from './styles/ThemeStylesProvider'; import {CurrentReportIDContextProvider} from './components/withCurrentReportID'; import {EnvironmentProvider} from './components/withEnvironment'; +import {ReportAttachmentsProvider} from './pages/home/report/ReportAttachmentsContext'; import * as Session from './libs/actions/Session'; import useDefaultDragAndDrop from './hooks/useDefaultDragAndDrop'; +import OnyxUpdateManager from './libs/actions/OnyxUpdateManager'; // For easier debugging and development, when we are in web we expose Onyx to the window, so you can more easily set data into Onyx if (window && Environment.isDevelopment()) { @@ -42,6 +44,7 @@ const fill = {flex: 1}; function App() { useDefaultDragAndDrop(); + OnyxUpdateManager(); return ( \s]+)(?:[^>]*?)>/g, + VALIDATE_FOR_LEADINGSPACES_HTML_TAG_REGEX: /<([\s]+[\s\w~!@#$%^&*(){}[\];':"`|?.,/\\+\-=<]+.*[\s]*)>/g, + + WHITELISTED_TAGS: [/<>/, /< >/, /<->/, /<-->/, /
/, //], + PASSWORD_PAGE: { ERROR: { ALREADY_VALIDATED: 'Account already validated', @@ -878,8 +891,6 @@ const CONST = { QA: 'qa@expensify.com', QA_TRAVIS: 'qa+travisreceipts@expensify.com', RECEIPTS: 'receipts@expensify.com', - SAASTR: 'saastr@expensify.com', - SBE: 'sbe@expensify.com', STUDENT_AMBASSADOR: 'studentambassadors@expensify.com', SVFG: 'svfg@expensify.com', }, @@ -1080,6 +1091,29 @@ const CONST = { DEFAULT: 'en', }, + LANGUAGES: ['en', 'es'], + + PRONOUNS_LIST: [ + 'coCos', + 'eEyEmEir', + 'heHimHis', + 'heHimHisTheyThemTheirs', + 'sheHerHers', + 'sheHerHersTheyThemTheirs', + 'merMers', + 'neNirNirs', + 'neeNerNers', + 'perPers', + 'theyThemTheirs', + 'thonThons', + 'veVerVis', + 'viVir', + 'xeXemXyr', + 'zeZieZirHir', + 'zeHirHirs', + 'callMeByMyName', + ], + POLICY: { TYPE: { FREE: 'free', @@ -1135,6 +1169,13 @@ const CONST = { MENTION_ICON: 'mention-icon', SMALL_NORMAL: 'small-normal', }, + EXPENSIFY_CARD: { + FRAUD_TYPES: { + DOMAIN: 'domain', + INDIVIDUAL: 'individal', + NONE: 'none', + }, + }, AVATAR_ROW_SIZE: { DEFAULT: 4, LARGE_SCREEN: 8, @@ -1363,6 +1404,9 @@ const CONST = { MAKE_REQUEST_WITH_SIDE_EFFECTS: 'makeRequestWithSideEffects', }, + MAP_PADDING: 50, + MAP_MARKER_SIZE: 20, + QUICK_REACTIONS: [ { name: '+1', @@ -2558,6 +2602,12 @@ const CONST = { TRANSLATION_KEYS: { ATTACHMENT: 'common.attachment', }, + TEACHERS_UNITE: { + PUBLIC_ROOM_ID: '207591744844000', + POLICY_ID: 'ABD1345ED7293535', + POLICY_NAME: 'Expensify.org / Teachers Unite!', + PUBLIC_ROOM_NAME: '#teachers-unite', + }, CUSTOM_STATUS_TYPES: { NEVER: 'never', THIRTY_MINUTES: 'thirtyMinutes', @@ -2588,7 +2638,6 @@ const CONST = { SF_COORDINATES: [-122.4194, 37.7749], - MAPBOX_STYLE_URL: 'mapbox://styles/expensify/cllcoiqds00cs01r80kp34tmq', NAVIGATION: { TYPE: { FORCED_UP: 'FORCED_UP', @@ -2600,11 +2649,24 @@ const CONST = { NAVIGATE: 'NAVIGATE', }, }, - + INDENTS: ' ', + PARENT_CHILD_SEPARATOR: ': ', + CATEGORY_LIST_THRESHOLD: 8, DEMO_PAGES: { SAASTR: 'SaaStrDemoSetup', SBE: 'SbeDemoSetup', }, + + MAPBOX: { + PADDING: 50, + DEFAULT_ZOOM: 10, + DEFAULT_COORDINATE: [-122.4021, 37.7911], + STYLE_URL: 'mapbox://styles/expensify/cllcoiqds00cs01r80kp34tmq', + }, + ONYX_UPDATE_TYPES: { + HTTPS: 'https', + PUSHER: 'pusher', + }, } as const; export default CONST; diff --git a/src/Expensify.js b/src/Expensify.js index ede42c2873dd..1086bd32cff9 100644 --- a/src/Expensify.js +++ b/src/Expensify.js @@ -30,7 +30,6 @@ import KeyboardShortcutsModal from './components/KeyboardShortcutsModal'; import AppleAuthWrapper from './components/SignInButtons/AppleAuthWrapper'; import EmojiPicker from './components/EmojiPicker/EmojiPicker'; import * as EmojiPickerAction from './libs/actions/EmojiPickerAction'; -import * as DemoActions from './libs/actions/DemoActions'; import DownloadAppModal from './components/DownloadAppModal'; import DeeplinkWrapper from './components/DeeplinkWrapper'; @@ -168,13 +167,11 @@ function Expensify(props) { // If the app is opened from a deep link, get the reportID (if exists) from the deep link and navigate to the chat report Linking.getInitialURL().then((url) => { - DemoActions.runDemoByURL(url); Report.openReportFromDeepLink(url, isAuthenticated); }); // Open chat report from a deep link (only mobile native) Linking.addEventListener('url', (state) => { - DemoActions.runDemoByURL(state.url); Report.openReportFromDeepLink(state.url, isAuthenticated); }); @@ -196,10 +193,10 @@ function Expensify(props) { {shouldInit && ( <> + - {/* We include the modal for showing a new update at the top level so the option is always present. */} {props.updateAvailable ? : null} diff --git a/src/ONYXKEYS.ts b/src/ONYXKEYS.ts index 2df7dd0b5a76..2e0b75910bae 100755 --- a/src/ONYXKEYS.ts +++ b/src/ONYXKEYS.ts @@ -142,11 +142,11 @@ const ONYXKEYS = { /** The user's bank accounts */ BANK_ACCOUNT_LIST: 'bankAccountList', - /** The user's credit cards (renamed from cardList) */ + /** The user's payment and P2P cards */ FUND_LIST: 'fundList', - // The user's Expensify cards - CORPORATE_CARD_LIST: 'corporateCardList', + /** The user's cash card and imported cards (including the Expensify Card) */ + CARD_LIST: 'cardList', /** Stores information about the user's saved statements */ WALLET_STATEMENT: 'walletStatement', @@ -215,9 +215,6 @@ const ONYXKEYS = { // The last update ID that was applied to the client ONYX_UPDATES_LAST_UPDATE_ID_APPLIED_TO_CLIENT: 'OnyxUpdatesLastUpdateIDAppliedToClient', - // Manual request tab selector - SELECTED_TAB: 'selectedTab', - // Receipt upload modal RECEIPT_MODAL: 'receiptModal', @@ -227,12 +224,24 @@ const ONYXKEYS = { // Information on any active demos being run DEMO_INFO: 'demoInfo', + // Max area supported for HTML element + MAX_CANVAS_AREA: 'maxCanvasArea', + + // Max height supported for HTML element + MAX_CANVAS_HEIGHT: 'maxCanvasHeight', + + // Max width supported for HTML element + MAX_CANVAS_WIDTH: 'maxCanvasWidth', + /** Collection Keys */ COLLECTION: { DOWNLOAD: 'download_', POLICY: 'policy_', POLICY_MEMBERS: 'policyMembers_', POLICY_CATEGORIES: 'policyCategories_', + POLICY_RECENTLY_USED_CATEGORIES: 'policyRecentlyUsedCategories_', + POLICY_TAGS: 'policyTags_', + POLICY_RECENTLY_USED_TAGS: 'policyRecentlyUsedTags_', WORKSPACE_INVITE_MEMBERS_DRAFT: 'workspaceInviteMembersDraft_', REPORT: 'report_', REPORT_ACTIONS: 'reportActions_', @@ -245,6 +254,9 @@ const ONYXKEYS = { SECURITY_GROUP: 'securityGroup_', TRANSACTION: 'transactions_', + // Manual request tab selector + SELECTED_TAB: 'selectedTab_', + /** This is deprecated, but needed for a migration, so we still need to include it here so that it will be initialized in Onyx.init */ DEPRECATED_POLICY_MEMBER_LIST: 'policyMemberList_', }, @@ -278,6 +290,8 @@ const ONYXKEYS = { SETTINGS_STATUS_SET_FORM: 'settingsStatusSetForm', SETTINGS_STATUS_CLEAR_AFTER_FORM: 'settingsStatusClearAfterForm', SETTINGS_STATUS_SET_CLEAR_AFTER_FORM: 'settingsStatusSetClearAfterForm', + I_KNOW_A_TEACHER_FORM: 'iKnowTeacherForm', + INTRO_SCHOOL_PRINCIPAL_FORM: 'introSchoolPrincipalForm', }, } as const; @@ -330,7 +344,8 @@ type OnyxValues = { [ONYXKEYS.WALLET_ADDITIONAL_DETAILS]: OnyxTypes.WalletAdditionalDetails; [ONYXKEYS.WALLET_TERMS]: OnyxTypes.WalletTerms; [ONYXKEYS.BANK_ACCOUNT_LIST]: Record; - [ONYXKEYS.FUND_LIST]: Record; + [ONYXKEYS.FUND_LIST]: Record; + [ONYXKEYS.CARD_LIST]: Record; [ONYXKEYS.WALLET_STATEMENT]: OnyxTypes.WalletStatement; [ONYXKEYS.PERSONAL_BANK_ACCOUNT]: OnyxTypes.PersonalBankAccount; [ONYXKEYS.REIMBURSEMENT_ACCOUNT]: OnyxTypes.ReimbursementAccount; @@ -351,17 +366,21 @@ type OnyxValues = { [ONYXKEYS.LAST_OPENED_PUBLIC_ROOM_ID]: string; [ONYXKEYS.PREFERRED_THEME]: ValueOf; [ONYXKEYS.IS_USING_MEMORY_ONLY_KEYS]: boolean; - [ONYXKEYS.SELECTED_TAB]: string; [ONYXKEYS.RECEIPT_MODAL]: OnyxTypes.ReceiptModal; [ONYXKEYS.MAPBOX_ACCESS_TOKEN]: OnyxTypes.MapboxAccessToken; - [ONYXKEYS.ONYX_UPDATES_FROM_SERVER]: number; + [ONYXKEYS.ONYX_UPDATES_FROM_SERVER]: OnyxTypes.OnyxUpdatesFromServer; [ONYXKEYS.ONYX_UPDATES_LAST_UPDATE_ID_APPLIED_TO_CLIENT]: number; + [ONYXKEYS.MAX_CANVAS_AREA]: number; + [ONYXKEYS.MAX_CANVAS_HEIGHT]: number; + [ONYXKEYS.MAX_CANVAS_WIDTH]: number; // Collections [ONYXKEYS.COLLECTION.DOWNLOAD]: OnyxTypes.Download; [ONYXKEYS.COLLECTION.POLICY]: OnyxTypes.Policy; - [ONYXKEYS.COLLECTION.POLICY_CATEGORIES]: unknown; + [ONYXKEYS.COLLECTION.POLICY_CATEGORIES]: OnyxTypes.PolicyCategory; + [ONYXKEYS.COLLECTION.POLICY_TAGS]: OnyxTypes.PolicyTag; [ONYXKEYS.COLLECTION.POLICY_MEMBERS]: OnyxTypes.PolicyMember; + [ONYXKEYS.COLLECTION.POLICY_RECENTLY_USED_CATEGORIES]: OnyxTypes.RecentlyUsedCategories; [ONYXKEYS.COLLECTION.DEPRECATED_POLICY_MEMBER_LIST]: OnyxTypes.PolicyMember; [ONYXKEYS.COLLECTION.WORKSPACE_INVITE_MEMBERS_DRAFT]: Record; [ONYXKEYS.COLLECTION.REPORT]: OnyxTypes.Report; @@ -374,6 +393,8 @@ type OnyxValues = { [ONYXKEYS.COLLECTION.REPORT_USER_IS_TYPING]: boolean; [ONYXKEYS.COLLECTION.SECURITY_GROUP]: OnyxTypes.SecurityGroup; [ONYXKEYS.COLLECTION.TRANSACTION]: OnyxTypes.Transaction; + [ONYXKEYS.COLLECTION.POLICY_RECENTLY_USED_TAGS]: OnyxTypes.RecentlyUsedTags; + [ONYXKEYS.COLLECTION.SELECTED_TAB]: string; // Forms [ONYXKEYS.FORMS.ADD_DEBIT_CARD_FORM]: OnyxTypes.AddDebitCardForm; diff --git a/src/ROUTES.js b/src/ROUTES.ts similarity index 59% rename from src/ROUTES.js rename to src/ROUTES.ts index 045f6d834905..3bbdf4709cfc 100644 --- a/src/ROUTES.js +++ b/src/ROUTES.ts @@ -1,10 +1,16 @@ -import lodashGet from 'lodash/get'; +import {ValueOf} from 'type-fest'; import * as Url from './libs/Url'; +import CONST from './CONST'; /** * This is a file containing constants for all of the routes we want to be able to go to */ +type ParseReportRouteParams = { + reportID: string; + isSubReportPageRoute: boolean; +}; + const REPORT = 'r'; const IOU_REQUEST = 'request/new'; const IOU_BILL = 'split/new'; @@ -20,7 +26,7 @@ export default { BANK_ACCOUNT_NEW: 'bank-account/new', BANK_ACCOUNT_WITH_STEP_TO_OPEN: 'bank-account/:stepToOpen?', BANK_ACCOUNT_PERSONAL: 'bank-account/personal', - getBankAccountRoute: (stepToOpen = '', policyID = '', backTo = '') => { + getBankAccountRoute: (stepToOpen = '', policyID = '', backTo = ''): string => { const backToParam = backTo ? `&backTo=${encodeURIComponent(backTo)}` : ''; return `bank-account/${stepToOpen}?policyID=${policyID}${backToParam}`; }, @@ -47,7 +53,7 @@ export default { SETTINGS_ADD_DEBIT_CARD: 'settings/wallet/add-debit-card', SETTINGS_ADD_BANK_ACCOUNT: 'settings/wallet/add-bank-account', SETTINGS_ENABLE_PAYMENTS: 'settings/wallet/enable-payments', - getSettingsAddLoginRoute: (type) => `settings/addlogin/${type}`, + getSettingsAddLoginRoute: (type: string) => `settings/addlogin/${type}`, SETTINGS_WALLET_TRANSFER_BALANCE: 'settings/wallet/transfer-balance', SETTINGS_WALLET_CHOOSE_TRANSFER_ACCOUNT: 'settings/wallet/choose-transfer-account', SETTINGS_PERSONAL_DETAILS, @@ -56,7 +62,7 @@ export default { SETTINGS_PERSONAL_DETAILS_ADDRESS: `${SETTINGS_PERSONAL_DETAILS}/address`, SETTINGS_CONTACT_METHODS, SETTINGS_CONTACT_METHOD_DETAILS: `${SETTINGS_CONTACT_METHODS}/:contactMethod/details`, - getEditContactMethodRoute: (contactMethod) => `${SETTINGS_CONTACT_METHODS}/${encodeURIComponent(contactMethod)}/details`, + getEditContactMethodRoute: (contactMethod: string) => `${SETTINGS_CONTACT_METHODS}/${encodeURIComponent(contactMethod)}/details`, SETTINGS_NEW_CONTACT_METHOD: `${SETTINGS_CONTACT_METHODS}/new`, SETTINGS_2FA: 'settings/security/two-factor-auth', SETTINGS_STATUS, @@ -67,14 +73,14 @@ export default { REPORT, REPORT_WITH_ID: 'r/:reportID/:reportActionID?', EDIT_REQUEST: 'r/:threadReportID/edit/:field', - getEditRequestRoute: (threadReportID, field) => `r/${threadReportID}/edit/${field}`, + getEditRequestRoute: (threadReportID: string, field: ValueOf) => `r/${threadReportID}/edit/${field}`, EDIT_CURRENCY_REQUEST: 'r/:threadReportID/edit/currency', - getEditRequestCurrencyRoute: (threadReportID, currency, backTo) => `r/${threadReportID}/edit/currency?currency=${currency}&backTo=${backTo}`, - getReportRoute: (reportID) => `r/${reportID}`, + getEditRequestCurrencyRoute: (threadReportID: string, currency: string, backTo: string) => `r/${threadReportID}/edit/currency?currency=${currency}&backTo=${backTo}`, + getReportRoute: (reportID: string) => `r/${reportID}`, REPORT_WITH_ID_DETAILS_SHARE_CODE: 'r/:reportID/details/shareCode', - getReportShareCodeRoute: (reportID) => `r/${reportID}/details/shareCode`, + getReportShareCodeRoute: (reportID: string) => `r/${reportID}/details/shareCode`, REPORT_ATTACHMENTS: 'r/:reportID/attachment', - getReportAttachmentRoute: (reportID, source) => `r/${reportID}/attachment?source=${encodeURI(source)}`, + getReportAttachmentRoute: (reportID: string, source: string) => `r/${reportID}/attachment?source=${encodeURI(source)}`, /** This is a utility route used to go to the user's concierge chat, or the sign-in page if the user's not authenticated */ CONCIERGE: 'concierge', @@ -92,6 +98,7 @@ export default { MONEY_REQUEST_CURRENCY: ':iouType/new/currency/:reportID?', MONEY_REQUEST_DESCRIPTION: ':iouType/new/description/:reportID?', MONEY_REQUEST_CATEGORY: ':iouType/new/category/:reportID?', + MONEY_REQUEST_TAG: ':iouType/new/tag/:reportID?', MONEY_REQUEST_MERCHANT: ':iouType/new/merchant/:reportID?', MONEY_REQUEST_MANUAL_TAB: ':iouType/new/:reportID?/manual', MONEY_REQUEST_SCAN_TAB: ':iouType/new/:reportID?/scan', @@ -100,60 +107,65 @@ export default { IOU_SEND_ADD_BANK_ACCOUNT: `${IOU_SEND}/add-bank-account`, IOU_SEND_ADD_DEBIT_CARD: `${IOU_SEND}/add-debit-card`, IOU_SEND_ENABLE_PAYMENTS: `${IOU_SEND}/enable-payments`, - getMoneyRequestRoute: (iouType, reportID = '') => `${iouType}/new/${reportID}`, - getMoneyRequestAmountRoute: (iouType, reportID = '') => `${iouType}/new/amount/${reportID}`, - getMoneyRequestParticipantsRoute: (iouType, reportID = '') => `${iouType}/new/participants/${reportID}`, - getMoneyRequestConfirmationRoute: (iouType, reportID = '') => `${iouType}/new/confirmation/${reportID}`, - getMoneyRequestCreatedRoute: (iouType, reportID = '') => `${iouType}/new/date/${reportID}`, - getMoneyRequestCurrencyRoute: (iouType, reportID = '', currency, backTo) => `${iouType}/new/currency/${reportID}?currency=${currency}&backTo=${backTo}`, - getMoneyRequestDescriptionRoute: (iouType, reportID = '') => `${iouType}/new/description/${reportID}`, - getMoneyRequestCategoryRoute: (iouType, reportID = '') => `${iouType}/new/category/${reportID}`, - getMoneyRequestMerchantRoute: (iouType, reportID = '') => `${iouType}/new/merchant/${reportID}`, - getMoneyRequestDistanceTabRoute: (iouType, reportID = '') => `${iouType}/new/${reportID}/distance`, - getMoneyRequestWaypointRoute: (iouType, waypointIndex) => `${iouType}/new/waypoint/${waypointIndex}`, + getMoneyRequestRoute: (iouType: string, reportID = '') => `${iouType}/new/${reportID}`, + getMoneyRequestAmountRoute: (iouType: string, reportID = '') => `${iouType}/new/amount/${reportID}`, + getMoneyRequestParticipantsRoute: (iouType: string, reportID = '') => `${iouType}/new/participants/${reportID}`, + getMoneyRequestConfirmationRoute: (iouType: string, reportID = '') => `${iouType}/new/confirmation/${reportID}`, + getMoneyRequestCreatedRoute: (iouType: string, reportID = '') => `${iouType}/new/date/${reportID}`, + getMoneyRequestCurrencyRoute: (iouType: string, reportID: string, currency: string, backTo: string) => `${iouType}/new/currency/${reportID}?currency=${currency}&backTo=${backTo}`, + getMoneyRequestDescriptionRoute: (iouType: string, reportID = '') => `${iouType}/new/description/${reportID}`, + getMoneyRequestCategoryRoute: (iouType: string, reportID = '') => `${iouType}/new/category/${reportID}`, + getMoneyRequestMerchantRoute: (iouType: string, reportID = '') => `${iouType}/new/merchant/${reportID}`, + getMoneyRequestDistanceTabRoute: (iouType: string, reportID = '') => `${iouType}/new/${reportID}/distance`, + getMoneyRequestWaypointRoute: (iouType: string, waypointIndex: number) => `${iouType}/new/waypoint/${waypointIndex}`, + getMoneyRequestTagRoute: (iouType: string, reportID = '') => `${iouType}/new/tag/${reportID}`, SPLIT_BILL_DETAILS: `r/:reportID/split/:reportActionID`, - getSplitBillDetailsRoute: (reportID, reportActionID) => `r/${reportID}/split/${reportActionID}`, - getNewTaskRoute: (reportID) => `${NEW_TASK}/${reportID}`, + getSplitBillDetailsRoute: (reportID: string, reportActionID: string) => `r/${reportID}/split/${reportActionID}`, + getNewTaskRoute: (reportID: string) => `${NEW_TASK}/${reportID}`, NEW_TASK_WITH_REPORT_ID: `${NEW_TASK}/:reportID?`, TASK_TITLE: 'r/:reportID/title', TASK_DESCRIPTION: 'r/:reportID/description', TASK_ASSIGNEE: 'r/:reportID/assignee', - getTaskReportTitleRoute: (reportID) => `r/${reportID}/title`, - getTaskReportDescriptionRoute: (reportID) => `r/${reportID}/description`, - getTaskReportAssigneeRoute: (reportID) => `r/${reportID}/assignee`, + getTaskReportTitleRoute: (reportID: string) => `r/${reportID}/title`, + getTaskReportDescriptionRoute: (reportID: string) => `r/${reportID}/description`, + getTaskReportAssigneeRoute: (reportID: string) => `r/${reportID}/assignee`, NEW_TASK_ASSIGNEE: `${NEW_TASK}/assignee`, NEW_TASK_SHARE_DESTINATION: `${NEW_TASK}/share-destination`, NEW_TASK_DETAILS: `${NEW_TASK}/details`, NEW_TASK_TITLE: `${NEW_TASK}/title`, NEW_TASK_DESCRIPTION: `${NEW_TASK}/description`, FLAG_COMMENT: `flag/:reportID/:reportActionID`, - getFlagCommentRoute: (reportID, reportActionID) => `flag/${reportID}/${reportActionID}`, + getFlagCommentRoute: (reportID: string, reportActionID: string) => `flag/${reportID}/${reportActionID}`, SEARCH: 'search', + TEACHERS_UNITE: 'teachersunite', + I_KNOW_A_TEACHER: 'teachersunite/i-know-a-teacher', + INTRO_SCHOOL_PRINCIPAL: 'teachersunite/intro-school-principal', + I_AM_A_TEACHER: 'teachersunite/i-am-a-teacher', DETAILS: 'details', - getDetailsRoute: (login) => `details?login=${encodeURIComponent(login)}`, + getDetailsRoute: (login: string) => `details?login=${encodeURIComponent(login)}`, PROFILE: 'a/:accountID', - getProfileRoute: (accountID, backTo = '') => { + getProfileRoute: (accountID: string | number, backTo = '') => { const backToParam = backTo ? `?backTo=${encodeURIComponent(backTo)}` : ''; return `a/${accountID}${backToParam}`; }, REPORT_PARTICIPANTS: 'r/:reportID/participants', - getReportParticipantsRoute: (reportID) => `r/${reportID}/participants`, + getReportParticipantsRoute: (reportID: string) => `r/${reportID}/participants`, REPORT_WITH_ID_DETAILS: 'r/:reportID/details', - getReportDetailsRoute: (reportID) => `r/${reportID}/details`, + getReportDetailsRoute: (reportID: string) => `r/${reportID}/details`, REPORT_SETTINGS: 'r/:reportID/settings', - getReportSettingsRoute: (reportID) => `r/${reportID}/settings`, + getReportSettingsRoute: (reportID: string) => `r/${reportID}/settings`, REPORT_SETTINGS_ROOM_NAME: 'r/:reportID/settings/room-name', - getReportSettingsRoomNameRoute: (reportID) => `r/${reportID}/settings/room-name`, + getReportSettingsRoomNameRoute: (reportID: string) => `r/${reportID}/settings/room-name`, REPORT_SETTINGS_NOTIFICATION_PREFERENCES: 'r/:reportID/settings/notification-preferences', - getReportSettingsNotificationPreferencesRoute: (reportID) => `r/${reportID}/settings/notification-preferences`, + getReportSettingsNotificationPreferencesRoute: (reportID: string) => `r/${reportID}/settings/notification-preferences`, REPORT_WELCOME_MESSAGE: 'r/:reportID/welcomeMessage', - getReportWelcomeMessageRoute: (reportID) => `r/${reportID}/welcomeMessage`, + getReportWelcomeMessageRoute: (reportID: string) => `r/${reportID}/welcomeMessage`, REPORT_SETTINGS_WRITE_CAPABILITY: 'r/:reportID/settings/who-can-post', - getReportSettingsWriteCapabilityRoute: (reportID) => `r/${reportID}/settings/who-can-post`, + getReportSettingsWriteCapabilityRoute: (reportID: string) => `r/${reportID}/settings/who-can-post`, TRANSITION_BETWEEN_APPS: 'transition', VALIDATE_LOGIN: 'v/:accountID/:validateCode', GET_ASSISTANCE: 'get-assistance/:taskID', - getGetAssistanceRoute: (taskID) => `get-assistance/${taskID}`, + getGetAssistanceRoute: (taskID: string) => `get-assistance/${taskID}`, UNLINK_LOGIN: 'u/:accountID/:validateCode', APPLE_SIGN_IN: 'sign-in-with-apple', @@ -164,7 +176,7 @@ export default { // when linking users from e.com in order to share a session in this app. ENABLE_PAYMENTS: 'enable-payments', WALLET_STATEMENT_WITH_DATE: 'statements/:yearMonth', - getWalletStatementWithDateRoute: (yearMonth) => `statements/${yearMonth}`, + getWalletStatementWithDateRoute: (yearMonth: string) => `statements/${yearMonth}`, WORKSPACE_NEW: 'workspace/new', WORKSPACE_INITIAL: 'workspace/:policyID', WORKSPACE_INVITE: 'workspace/:policyID/invite', @@ -178,27 +190,23 @@ export default { WORKSPACE_TRAVEL: 'workspace/:policyID/travel', WORKSPACE_MEMBERS: 'workspace/:policyID/members', WORKSPACE_NEW_ROOM: 'workspace/new-room', - getWorkspaceInitialRoute: (policyID) => `workspace/${policyID}`, - getWorkspaceInviteRoute: (policyID) => `workspace/${policyID}/invite`, - getWorkspaceInviteMessageRoute: (policyID) => `workspace/${policyID}/invite-message`, - getWorkspaceSettingsRoute: (policyID) => `workspace/${policyID}/settings`, - getWorkspaceCardRoute: (policyID) => `workspace/${policyID}/card`, - getWorkspaceReimburseRoute: (policyID) => `workspace/${policyID}/reimburse`, - getWorkspaceRateAndUnitRoute: (policyID) => `workspace/${policyID}/rateandunit`, - getWorkspaceBillsRoute: (policyID) => `workspace/${policyID}/bills`, - getWorkspaceInvoicesRoute: (policyID) => `workspace/${policyID}/invoices`, - getWorkspaceTravelRoute: (policyID) => `workspace/${policyID}/travel`, - getWorkspaceMembersRoute: (policyID) => `workspace/${policyID}/members`, + getWorkspaceInitialRoute: (policyID: string) => `workspace/${policyID}`, + getWorkspaceInviteRoute: (policyID: string) => `workspace/${policyID}/invite`, + getWorkspaceInviteMessageRoute: (policyID: string) => `workspace/${policyID}/invite-message`, + getWorkspaceSettingsRoute: (policyID: string) => `workspace/${policyID}/settings`, + getWorkspaceCardRoute: (policyID: string) => `workspace/${policyID}/card`, + getWorkspaceReimburseRoute: (policyID: string) => `workspace/${policyID}/reimburse`, + getWorkspaceRateAndUnitRoute: (policyID: string) => `workspace/${policyID}/rateandunit`, + getWorkspaceBillsRoute: (policyID: string) => `workspace/${policyID}/bills`, + getWorkspaceInvoicesRoute: (policyID: string) => `workspace/${policyID}/invoices`, + getWorkspaceTravelRoute: (policyID: string) => `workspace/${policyID}/travel`, + getWorkspaceMembersRoute: (policyID: string) => `workspace/${policyID}/members`, // These are some on-off routes that will be removed once they're no longer needed (see GH issues for details) SAASTR: 'saastr', SBE: 'sbe', - /** - * @param {String} route - * @returns {Object} - */ - parseReportRouteParams: (route) => { + parseReportRouteParams: (route: string): ParseReportRouteParams => { let parsingRoute = route; if (parsingRoute.at(0) === '/') { // remove the first slash @@ -211,9 +219,9 @@ export default { const pathSegments = parsingRoute.split('/'); return { - reportID: lodashGet(pathSegments, 1), + reportID: pathSegments[1], isSubReportPageRoute: pathSegments.length > 2, }; }, SIGN_IN_MODAL: 'sign-in-modal', -}; +} as const; diff --git a/src/SCREENS.ts b/src/SCREENS.ts index bcb3a02cebb4..47935e117e99 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -9,10 +9,13 @@ export default { REPORT_ATTACHMENTS: 'ReportAttachments', NOT_FOUND: 'not-found', TRANSITION_BETWEEN_APPS: 'TransitionBetweenApps', + VALIDATE_LOGIN: 'ValidateLogin', + CONCIERGE: 'Concierge', SETTINGS: { PREFERENCES: 'Settings_Preferences', WORKSPACES: 'Settings_Workspaces', }, SIGN_IN_WITH_APPLE_DESKTOP: 'AppleSignInDesktop', SIGN_IN_WITH_GOOGLE_DESKTOP: 'GoogleSignInDesktop', + DESKTOP_SIGN_IN_REDIRECT: 'DesktopSignInRedirect', } as const; diff --git a/src/components/AddPlaidBankAccount.js b/src/components/AddPlaidBankAccount.js index d50fad0bd2f0..dbe7e46ff6aa 100644 --- a/src/components/AddPlaidBankAccount.js +++ b/src/components/AddPlaidBankAccount.js @@ -6,6 +6,7 @@ import {withOnyx} from 'react-native-onyx'; import lodashGet from 'lodash/get'; import Log from '../libs/Log'; import PlaidLink from './PlaidLink'; +import * as App from '../libs/actions/App'; import * as BankAccounts from '../libs/actions/BankAccounts'; import ONYXKEYS from '../ONYXKEYS'; import styles from '../styles/styles'; @@ -22,6 +23,9 @@ import useLocalize from '../hooks/useLocalize'; import useNetwork from '../hooks/useNetwork'; const propTypes = { + /** If the user has been throttled from Plaid */ + isPlaidDisabled: PropTypes.bool, + /** Contains plaid data */ plaidData: plaidDataPropTypes.isRequired, @@ -63,9 +67,22 @@ const defaultProps = { plaidLinkOAuthToken: '', allowDebit: false, bankAccountID: 0, + isPlaidDisabled: false, }; -function AddPlaidBankAccount({plaidData, selectedPlaidAccountID, plaidLinkToken, onExitPlaid, onSelect, text, receivedRedirectURI, plaidLinkOAuthToken, bankAccountID, allowDebit}) { +function AddPlaidBankAccount({ + plaidData, + selectedPlaidAccountID, + plaidLinkToken, + onExitPlaid, + onSelect, + text, + receivedRedirectURI, + plaidLinkOAuthToken, + bankAccountID, + allowDebit, + isPlaidDisabled, +}) { const subscribedKeyboardShortcuts = useRef([]); const previousNetworkState = useRef(); @@ -154,6 +171,14 @@ function AddPlaidBankAccount({plaidData, selectedPlaidAccountID, plaidLinkToken, const plaidDataErrorMessage = !_.isEmpty(plaidErrors) ? _.chain(plaidErrors).values().first().value() : ''; const bankName = lodashGet(plaidData, 'bankName'); + if (isPlaidDisabled) { + return ( + + {translate('bankAccount.error.tooManyAttempts')} + + ); + } + // Plaid Link view if (!plaidBankAccounts.length) { return ( @@ -177,6 +202,20 @@ function AddPlaidBankAccount({plaidData, selectedPlaidAccountID, plaidLinkToken, onError={(error) => { Log.hmmm('[PlaidLink] Error: ', error.message); }} + onEvent={(event, metadata) => { + // Handle Plaid login errors (will potentially reset plaid token and item depending on the error) + if (event === 'ERROR') { + Log.hmmm('[PlaidLink] Error: ', metadata); + if (bankAccountID && metadata.error_code) { + BankAccounts.handlePlaidError(bankAccountID, metadata.error_code, metadata.error_message, metadata.request_id); + } + } + + // Limit the number of times a user can submit Plaid credentials + if (event === 'SUBMIT_CREDENTIALS') { + App.handleRestrictedEvent(event); + } + }} // User prematurely exited the Plaid flow // eslint-disable-next-line react/jsx-props-no-multi-spaces onExit={onExitPlaid} @@ -224,4 +263,7 @@ export default withOnyx({ key: ONYXKEYS.PLAID_LINK_TOKEN, initWithStoredValues: false, }, + isPlaidDisabled: { + key: ONYXKEYS.IS_PLAID_DISABLED, + }, })(AddPlaidBankAccount); diff --git a/src/components/AddressSearch/index.js b/src/components/AddressSearch/index.js index e761ebeed26b..1697dddba805 100644 --- a/src/components/AddressSearch/index.js +++ b/src/components/AddressSearch/index.js @@ -95,6 +95,9 @@ const propTypes = { /** Maximum number of characters allowed in search input */ maxInputLength: PropTypes.number, + /** The result types to return from the Google Places Autocomplete request */ + resultTypes: PropTypes.string, + /** Information about the network */ network: networkPropTypes.isRequired, @@ -123,6 +126,7 @@ const defaultProps = { }, maxInputLength: undefined, predefinedPlaces: [], + resultTypes: 'address', }; // Do not convert to class component! It's been tried before and presents more challenges than it's worth. @@ -134,10 +138,10 @@ function AddressSearch(props) { const query = useMemo( () => ({ language: props.preferredLocale, - types: 'address', + types: props.resultTypes, components: props.isLimitedToUSA ? 'country:us' : undefined, }), - [props.preferredLocale, props.isLimitedToUSA], + [props.preferredLocale, props.resultTypes, props.isLimitedToUSA], ); const saveLocationDetails = (autocompleteData, details) => { diff --git a/src/components/ArchivedReportFooter.js b/src/components/ArchivedReportFooter.js index 70741f352089..71d331b68db0 100644 --- a/src/components/ArchivedReportFooter.js +++ b/src/components/ArchivedReportFooter.js @@ -2,6 +2,7 @@ import lodashGet from 'lodash/get'; import React from 'react'; import PropTypes from 'prop-types'; import {withOnyx} from 'react-native-onyx'; +import _ from 'lodash'; import CONST from '../CONST'; import Banner from './Banner'; import withLocalize, {withLocalizePropTypes} from './withLocalize'; @@ -60,15 +61,25 @@ function ArchivedReportFooter(props) { oldDisplayName = PersonalDetailsUtils.getDisplayNameOrDefault(props.personalDetails, [oldAccountID, 'displayName']); } + const shouldRenderHTML = archiveReason !== CONST.REPORT.ARCHIVE_REASON.DEFAULT; + + let policyName = ReportUtils.getPolicyName(props.report); + + if (shouldRenderHTML) { + oldDisplayName = _.escape(oldDisplayName); + displayName = _.escape(displayName); + policyName = _.escape(policyName); + } + return ( ${displayName}`, oldDisplayName: `${oldDisplayName}`, - policyName: `${ReportUtils.getPolicyName(props.report)}`, + policyName: `${policyName}`, })} - shouldRenderHTML={archiveReason !== CONST.REPORT.ARCHIVE_REASON.DEFAULT} + shouldRenderHTML={shouldRenderHTML} shouldShowIcon /> ); diff --git a/src/components/AttachmentModal.js b/src/components/AttachmentModal.js index c07a4474a68b..d39906faf3a3 100755 --- a/src/components/AttachmentModal.js +++ b/src/components/AttachmentModal.js @@ -25,7 +25,6 @@ import HeaderGap from './HeaderGap'; import SafeAreaConsumer from './SafeAreaConsumer'; import addEncryptedAuthTokenToURL from '../libs/addEncryptedAuthTokenToURL'; import reportPropTypes from '../pages/reportPropTypes'; -import tryResolveUrlFromApiRoot from '../libs/tryResolveUrlFromApiRoot'; /** * Modal render prop component that exposes modal launching triggers that can be used @@ -351,7 +350,7 @@ function AttachmentModal(props) { onCanceled.current(), {once: true}); + fileInput.current.addEventListener( + 'cancel', + () => { + // For Android Chrome, the cancel event happens before the page is visible on physical devices, + // which makes it unreliable for us to show the keyboard, while on emulators it happens after the page is visible. + // So here we can delay calling the onCanceled.current function based on visibility in order to reliably show the keyboard. + if (Visibility.isVisible()) { + onCanceled.current(); + return; + } + const unsubscribeVisibilityListener = Visibility.onVisibilityChange(() => { + onCanceled.current(); + unsubscribeVisibilityListener(); + }); + }, + {once: true}, + ); }} accept={getAcceptableFileTypes(props.type)} /> diff --git a/src/components/Attachments/AttachmentCarousel/CarouselItem.js b/src/components/Attachments/AttachmentCarousel/CarouselItem.js new file mode 100644 index 000000000000..3aeef8482e2d --- /dev/null +++ b/src/components/Attachments/AttachmentCarousel/CarouselItem.js @@ -0,0 +1,115 @@ +import React, {useContext, useState} from 'react'; +import {View} from 'react-native'; +import PropTypes from 'prop-types'; +import CONST from '../../../CONST'; +import styles from '../../../styles/styles'; +import useLocalize from '../../../hooks/useLocalize'; +import PressableWithoutFeedback from '../../Pressable/PressableWithoutFeedback'; +import Text from '../../Text'; +import Button from '../../Button'; +import AttachmentView from '../AttachmentView'; +import SafeAreaConsumer from '../../SafeAreaConsumer'; +import ReportAttachmentsContext from '../../../pages/home/report/ReportAttachmentsContext'; + +const propTypes = { + /** Attachment required information such as the source and file name */ + item: PropTypes.shape({ + /** Report action ID of the attachment */ + reportActionID: PropTypes.string, + + /** Whether source URL requires authentication */ + isAuthTokenRequired: PropTypes.bool, + + /** The source (URL) of the attachment */ + source: PropTypes.string, + + /** Additional information about the attachment file */ + file: PropTypes.shape({ + /** File name of the attachment */ + name: PropTypes.string, + }), + + /** Whether the attachment has been flagged */ + hasBeenFlagged: PropTypes.bool, + }).isRequired, + + /** Whether the attachment is currently being viewed in the carousel */ + isFocused: PropTypes.bool.isRequired, + + /** onPress callback */ + onPress: PropTypes.func, +}; + +const defaultProps = { + onPress: undefined, +}; + +function CarouselItem({item, isFocused, onPress}) { + const {translate} = useLocalize(); + const {isAttachmentHidden} = useContext(ReportAttachmentsContext); + // eslint-disable-next-line es/no-nullish-coalescing-operators + const [isHidden, setIsHidden] = useState(isAttachmentHidden(item.reportActionID) ?? item.hasBeenFlagged); + + const renderButton = (style) => ( + + ); + + if (isHidden) { + const children = ( + <> + {translate('moderation.flaggedContent')} + {renderButton([styles.mt2])} + + ); + return onPress ? ( + + {children} + + ) : ( + {children} + ); + } + + return ( + + + + + + {item.hasBeenFlagged && ( + + {({safeAreaPaddingBottomStyle}) => {renderButton([styles.m4, styles.alignSelfCenter])}} + + )} + + ); +} + +CarouselItem.propTypes = propTypes; +CarouselItem.defaultProps = defaultProps; + +export default CarouselItem; diff --git a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js index b967d5ab0066..d5da25c89576 100644 --- a/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js +++ b/src/components/Attachments/AttachmentCarousel/extractAttachmentsFromReport.js @@ -28,10 +28,12 @@ function extractAttachmentsFromReport(report, reportActions) { // By iterating actions in chronological order and prepending each attachment // we ensure correct order of attachments even across actions with multiple attachments. attachments.unshift({ + reportActionID: attribs['data-id'], source: tryResolveUrlFromApiRoot(expensifySource || attribs.src), isAuthTokenRequired: Boolean(expensifySource), file: {name: attribs[CONST.ATTACHMENT_ORIGINAL_FILENAME_ATTRIBUTE]}, isReceipt: false, + hasBeenFlagged: attribs['data-flagged'] === 'true', }); }, }); @@ -62,7 +64,10 @@ function extractAttachmentsFromReport(report, reportActions) { } } - htmlParser.write(_.get(action, ['message', 0, 'html'])); + const decision = _.get(action, ['message', 0, 'moderationDecision', 'decision'], ''); + const hasBeenFlagged = decision === CONST.MODERATION.MODERATOR_DECISION_PENDING_HIDE || decision === CONST.MODERATION.MODERATOR_DECISION_HIDDEN; + const html = _.get(action, ['message', 0, 'html'], '').replace('/>', `data-flagged="${hasBeenFlagged}" data-id="${action.reportActionID}"/>`); + htmlParser.write(html); }); htmlParser.end(); diff --git a/src/components/Attachments/AttachmentCarousel/index.js b/src/components/Attachments/AttachmentCarousel/index.js index cec5f54508cb..5c731a0ccfee 100644 --- a/src/components/Attachments/AttachmentCarousel/index.js +++ b/src/components/Attachments/AttachmentCarousel/index.js @@ -2,10 +2,8 @@ import React, {useRef, useCallback, useState, useEffect} from 'react'; import {View, FlatList, PixelRatio, Keyboard} from 'react-native'; import {withOnyx} from 'react-native-onyx'; import _ from 'underscore'; -import * as DeviceCapabilities from '../../../libs/DeviceCapabilities'; import styles from '../../../styles/styles'; import CarouselActions from './CarouselActions'; -import AttachmentView from '../AttachmentView'; import withWindowDimensions from '../../withWindowDimensions'; import CarouselButtons from './CarouselButtons'; import extractAttachmentsFromReport from './extractAttachmentsFromReport'; @@ -15,12 +13,13 @@ import withLocalize from '../../withLocalize'; import compose from '../../../libs/compose'; import useCarouselArrows from './useCarouselArrows'; import useWindowDimensions from '../../../hooks/useWindowDimensions'; +import CarouselItem from './CarouselItem'; import Navigation from '../../../libs/Navigation/Navigation'; import BlockingView from '../../BlockingViews/BlockingView'; import * as Illustrations from '../../Icon/Illustrations'; import variables from '../../../styles/variables'; +import * as DeviceCapabilities from '../../../libs/DeviceCapabilities'; -const canUseTouchScreen = DeviceCapabilities.canUseTouchScreen(); const viewabilityConfig = { // To facilitate paging through the attachments, we want to consider an item "viewable" when it is // more than 95% visible. When that happens we update the page index in the state. @@ -31,6 +30,7 @@ function AttachmentCarousel({report, reportActions, source, onNavigate, setDownl const scrollRef = useRef(null); const {windowWidth, isSmallScreenWidth} = useWindowDimensions(); + const canUseTouchScreen = DeviceCapabilities.canUseTouchScreen(); const [containerWidth, setContainerWidth] = useState(0); const [page, setPage] = useState(0); @@ -99,7 +99,7 @@ function AttachmentCarousel({report, reportActions, source, onNavigate, setDownl scrollRef.current.scrollToIndex({index: nextIndex, animated: canUseTouchScreen}); }, - [attachments, page], + [attachments, canUseTouchScreen, page], ); /** @@ -143,24 +143,23 @@ function AttachmentCarousel({report, reportActions, source, onNavigate, setDownl /** * Defines how a single attachment should be rendered * @param {Object} item + * @param {String} item.reportActionID * @param {Boolean} item.isAuthTokenRequired * @param {String} item.source * @param {Object} item.file * @param {String} item.file.name + * @param {Boolean} item.hasBeenFlagged * @returns {JSX.Element} */ const renderItem = useCallback( ({item}) => ( - canUseTouchScreen && setShouldShowArrows(!shouldShowArrows)} - isUsedInCarousel + onPress={canUseTouchScreen ? () => setShouldShowArrows(!shouldShowArrows) : undefined} /> ), - [activeSource, setShouldShowArrows, shouldShowArrows], + [activeSource, canUseTouchScreen, setShouldShowArrows, shouldShowArrows], ); return ( diff --git a/src/components/Attachments/AttachmentCarousel/index.native.js b/src/components/Attachments/AttachmentCarousel/index.native.js index 4162cfae88e9..95cda7c2f5c9 100644 --- a/src/components/Attachments/AttachmentCarousel/index.native.js +++ b/src/components/Attachments/AttachmentCarousel/index.native.js @@ -5,11 +5,11 @@ import _ from 'underscore'; import AttachmentCarouselPager from './Pager'; import styles from '../../../styles/styles'; import CarouselButtons from './CarouselButtons'; -import AttachmentView from '../AttachmentView'; import ONYXKEYS from '../../../ONYXKEYS'; import {propTypes, defaultProps} from './attachmentCarouselPropTypes'; import extractAttachmentsFromReport from './extractAttachmentsFromReport'; import useCarouselArrows from './useCarouselArrows'; +import CarouselItem from './CarouselItem'; import Navigation from '../../../libs/Navigation/Navigation'; import BlockingView from '../../BlockingViews/BlockingView'; import * as Illustrations from '../../Icon/Illustrations'; @@ -85,17 +85,14 @@ function AttachmentCarousel({report, reportActions, source, onNavigate, onClose, /** * Defines how a single attachment should be rendered - * @param {{ isAuthTokenRequired: Boolean, source: String, file: { name: String } }} item + * @param {{ reportActionID: String, isAuthTokenRequired: Boolean, source: String, file: { name: String }, hasBeenFlagged: Boolean }} item * @returns {JSX.Element} */ const renderItem = useCallback( ({item}) => ( - setShouldShowArrows(!shouldShowArrows)} /> ), diff --git a/src/components/Attachments/AttachmentCarousel/useCarouselArrows.js b/src/components/Attachments/AttachmentCarousel/useCarouselArrows.js index f43a26ab94ee..64c97fa99819 100644 --- a/src/components/Attachments/AttachmentCarousel/useCarouselArrows.js +++ b/src/components/Attachments/AttachmentCarousel/useCarouselArrows.js @@ -2,9 +2,8 @@ import {useCallback, useEffect, useRef, useState} from 'react'; import CONST from '../../../CONST'; import * as DeviceCapabilities from '../../../libs/DeviceCapabilities'; -const canUseTouchScreen = DeviceCapabilities.canUseTouchScreen(); - function useCarouselArrows() { + const canUseTouchScreen = DeviceCapabilities.canUseTouchScreen(); const [shouldShowArrows, setShouldShowArrowsInternal] = useState(canUseTouchScreen); const autoHideArrowTimeout = useRef(null); @@ -25,7 +24,7 @@ function useCarouselArrows() { autoHideArrowTimeout.current = setTimeout(() => { setShouldShowArrowsInternal(false); }, CONST.ARROW_HIDE_DELAY); - }, [cancelAutoHideArrows]); + }, [canUseTouchScreen, cancelAutoHideArrows]); const setShouldShowArrows = useCallback( (show = true) => { diff --git a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.native.js b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.native.js index bf777f41945e..0767b2b68985 100644 --- a/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.native.js +++ b/src/components/Attachments/AttachmentView/AttachmentViewPdf/index.native.js @@ -8,6 +8,9 @@ function AttachmentViewPdf({file, encryptedSourceUrl, isFocused, isUsedInCarouse const attachmentCarouselPagerContext = useContext(AttachmentCarouselPagerContext); useEffect(() => { + if (!attachmentCarouselPagerContext) { + return; + } attachmentCarouselPagerContext.onPinchGestureChange(false); // eslint-disable-next-line react-hooks/exhaustive-deps -- we just want to call this function when component is mounted }, []); diff --git a/src/components/BlockingViews/BlockingView.js b/src/components/BlockingViews/BlockingView.js index 6ec8b5250f37..5cb342b0fada 100644 --- a/src/components/BlockingViews/BlockingView.js +++ b/src/components/BlockingViews/BlockingView.js @@ -38,6 +38,9 @@ const propTypes = { /** Function to call when pressing the navigation link */ onLinkPress: PropTypes.func, + + /** Whether we should embed the link with subtitle */ + shouldEmbedLinkWithSubtitle: PropTypes.bool, }; const defaultProps = { @@ -48,10 +51,30 @@ const defaultProps = { iconWidth: variables.iconSizeSuperLarge, iconHeight: variables.iconSizeSuperLarge, onLinkPress: () => Navigation.dismissModal(), + shouldEmbedLinkWithSubtitle: false, }; function BlockingView(props) { const {translate} = useLocalize(); + function renderContent() { + return ( + <> + + {props.shouldShowLink ? ( + + {translate(props.linkKey)} + + ) : null} + + ); + } + return ( {props.title} - - {props.shouldShowLink ? ( - - {translate(props.linkKey)} - - ) : null} + + {props.shouldEmbedLinkWithSubtitle ? ( + {renderContent()} + ) : ( + {renderContent()} + )} ); } diff --git a/src/components/ButtonWithDropdownMenu.js b/src/components/ButtonWithDropdownMenu.js index 641e65ce9d12..62eeb3030619 100644 --- a/src/components/ButtonWithDropdownMenu.js +++ b/src/components/ButtonWithDropdownMenu.js @@ -108,7 +108,6 @@ function ButtonWithDropdownMenu(props) { isLoading={props.isLoading} shouldRemoveRightBorderRadius style={[styles.flex1, styles.pr0]} - pressOnEnter large={isButtonSizeLarge} medium={!isButtonSizeLarge} innerStyles={[innerStyleDropButton]} @@ -144,7 +143,6 @@ function ButtonWithDropdownMenu(props) { isLoading={props.isLoading} text={selectedItem.text} onPress={(event) => props.onPress(event, props.options[0].value)} - pressOnEnter large={isButtonSizeLarge} medium={!isButtonSizeLarge} innerStyles={[innerStyleDropButton]} diff --git a/src/components/CategoryPicker/categoryPickerPropTypes.js b/src/components/CategoryPicker/categoryPickerPropTypes.js index ccc1643021ce..b8e24c199a73 100644 --- a/src/components/CategoryPicker/categoryPickerPropTypes.js +++ b/src/components/CategoryPicker/categoryPickerPropTypes.js @@ -14,11 +14,23 @@ const propTypes = { /* Onyx Props */ /** Collection of categories attached to a policy */ policyCategories: PropTypes.objectOf(categoryPropTypes), + + /* Onyx Props */ + /** Collection of recently used categories attached to a policy */ + policyRecentlyUsedCategories: PropTypes.arrayOf(PropTypes.string), + + /* Onyx Props */ + /** Holds data related to Money Request view state, rather than the underlying Money Request data. */ + iou: PropTypes.shape({ + category: PropTypes.string.isRequired, + }), }; const defaultProps = { policyID: '', - policyCategories: null, + policyCategories: {}, + policyRecentlyUsedCategories: [], + iou: {}, }; export {propTypes, defaultProps}; diff --git a/src/components/CategoryPicker/index.js b/src/components/CategoryPicker/index.js index 163ab6673ca2..91c7e82e7887 100644 --- a/src/components/CategoryPicker/index.js +++ b/src/components/CategoryPicker/index.js @@ -1,47 +1,88 @@ -import React, {useMemo} from 'react'; -import _ from 'underscore'; +import React, {useMemo, useState} from 'react'; import {withOnyx} from 'react-native-onyx'; +import _ from 'underscore'; +import lodashGet from 'lodash/get'; import ONYXKEYS from '../../ONYXKEYS'; import {propTypes, defaultProps} from './categoryPickerPropTypes'; -import OptionsList from '../OptionsList'; import styles from '../../styles/styles'; -import ScreenWrapper from '../ScreenWrapper'; import Navigation from '../../libs/Navigation/Navigation'; import ROUTES from '../../ROUTES'; +import CONST from '../../CONST'; +import * as IOU from '../../libs/actions/IOU'; +import * as OptionsListUtils from '../../libs/OptionsListUtils'; +import OptionsSelector from '../OptionsSelector'; +import useLocalize from '../../hooks/useLocalize'; + +function CategoryPicker({policyCategories, reportID, iouType, iou, policyRecentlyUsedCategories}) { + const {translate} = useLocalize(); + const [searchValue, setSearchValue] = useState(''); + + const policyCategoriesCount = _.size(policyCategories); + const isCategoriesCountBelowThreshold = policyCategoriesCount < CONST.CATEGORY_LIST_THRESHOLD; -function CategoryPicker({policyCategories, reportID, iouType}) { - const sections = useMemo(() => { - const categoryList = _.chain(policyCategories) - .values() - .map((category) => ({ - text: category.name, - keyForList: category.name, - tooltipText: category.name, - })) - .value(); + const selectedOptions = useMemo(() => { + if (!iou.category) { + return []; + } return [ { - data: categoryList, + name: iou.category, + enabled: true, + accountID: null, }, ]; - }, [policyCategories]); + }, [iou.category]); + + const initialFocusedIndex = useMemo(() => { + if (isCategoriesCountBelowThreshold && selectedOptions.length > 0) { + return _.chain(policyCategories) + .values() + .findIndex((category) => category.name === selectedOptions[0].name, true) + .value(); + } + + return 0; + }, [policyCategories, selectedOptions, isCategoriesCountBelowThreshold]); + + const sections = useMemo( + () => OptionsListUtils.getNewChatOptions({}, {}, [], searchValue, selectedOptions, [], false, false, true, policyCategories, policyRecentlyUsedCategories, false).categoryOptions, + [policyCategories, policyRecentlyUsedCategories, searchValue, selectedOptions], + ); + + const headerMessage = OptionsListUtils.getHeaderMessage(lodashGet(sections, '[0].data.length', 0) > 0, false, searchValue); + const shouldShowTextInput = !isCategoriesCountBelowThreshold; const navigateBack = () => { Navigation.goBack(ROUTES.getMoneyRequestConfirmationRoute(iouType, reportID)); }; + const updateCategory = (category) => { + if (category.searchText === iou.category) { + IOU.resetMoneyRequestCategory(); + } else { + IOU.setMoneyRequestCategory(category.searchText); + } + + navigateBack(); + }; + return ( - - {({safeAreaPaddingBottomStyle}) => ( - - )} - + ); } @@ -53,4 +94,10 @@ export default withOnyx({ policyCategories: { key: ({policyID}) => `${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policyID}`, }, + policyRecentlyUsedCategories: { + key: ({policyID}) => `${ONYXKEYS.COLLECTION.POLICY_RECENTLY_USED_CATEGORIES}${policyID}`, + }, + iou: { + key: ONYXKEYS.IOU, + }, })(CategoryPicker); diff --git a/src/components/Composer/index.js b/src/components/Composer/index.js index cbd22cc39dfd..44075a4ec1eb 100755 --- a/src/components/Composer/index.js +++ b/src/components/Composer/index.js @@ -83,6 +83,9 @@ const propTypes = { /** Whether this is the report action compose */ isReportActionCompose: PropTypes.bool, + /** Whether the sull composer is open */ + isComposerFullSize: PropTypes.bool, + ...withLocalizePropTypes, ...windowDimensionsPropTypes, @@ -111,6 +114,7 @@ const defaultProps = { shouldCalculateCaretPosition: false, checkComposerVisibility: () => false, isReportActionCompose: false, + isComposerFullSize: false, }; /** @@ -161,6 +165,7 @@ function Composer({ checkComposerVisibility, selection: selectionProp, isReportActionCompose, + isComposerFullSize, ...props }) { const textRef = useRef(null); @@ -413,7 +418,6 @@ function Composer({ { + const numberOfWaypoints = _.size(waypoints); + const lastWaypointIndex = numberOfWaypoints - 1; + return _.filter( + _.map(waypoints, (waypoint, key) => { + if (!waypoint || waypoint.lng === undefined || waypoint.lat === undefined) { + return; + } + + const index = TransactionUtils.getWaypointIndex(key); + let MarkerComponent; + if (index === 0) { + MarkerComponent = Expensicons.DotIndicatorUnfilled; + } else if (index === lastWaypointIndex) { + MarkerComponent = Expensicons.Location; + } else { + MarkerComponent = Expensicons.DotIndicator; + } + + return { + id: `${waypoint.lng},${waypoint.lat},${index}`, + coordinate: [waypoint.lng, waypoint.lat], + markerComponent: () => ( + + ), + }; + }), + (waypoint) => waypoint, + ); +}; + +function ConfirmedRoute({mapboxAccessToken, transaction}) { + const {isOffline} = useNetwork(); + const {translate} = useLocalize(); + const {route0: route} = transaction.routes || {}; + const waypoints = lodashGet(transaction, 'comment.waypoints', {}); + const coordinates = lodashGet(route, 'geometry.coordinates', []); + const waypointMarkers = getWaypointMarkers(waypoints); + + useEffect(() => { + MapboxToken.init(); + return MapboxToken.stop; + }, []); + + return ( + <> + {!isOffline && Boolean(mapboxAccessToken.token) ? ( + + ) : ( + + + + )} + + ); +} + +export default withOnyx({ + transaction: { + key: ({transactionID}) => `${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, + }, + mapboxAccessToken: { + key: ONYXKEYS.MAPBOX_ACCESS_TOKEN, + }, +})(ConfirmedRoute); + +ConfirmedRoute.displayName = 'ConfirmedRoute'; +ConfirmedRoute.propTypes = propTypes; +ConfirmedRoute.defaultProps = defaultProps; diff --git a/src/components/CountryPicker/CountrySelectorModal.js b/src/components/CountryPicker/CountrySelectorModal.js index 146b023bbf0c..ac543d9921d2 100644 --- a/src/components/CountryPicker/CountrySelectorModal.js +++ b/src/components/CountryPicker/CountrySelectorModal.js @@ -1,5 +1,5 @@ import _ from 'underscore'; -import React, {useMemo} from 'react'; +import React, {useMemo, useEffect} from 'react'; import PropTypes from 'prop-types'; import CONST from '../../CONST'; import useLocalize from '../../hooks/useLocalize'; @@ -40,15 +40,25 @@ const defaultProps = { function CountrySelectorModal({currentCountry, isVisible, onClose, onCountrySelected, setSearchValue, searchValue}) { const {translate} = useLocalize(); + useEffect(() => { + if (isVisible) { + return; + } + setSearchValue(''); + }, [isVisible, setSearchValue]); + const countries = useMemo( () => - _.map(translate('allCountries'), (countryName, countryISO) => ({ - value: countryISO, - keyForList: countryISO, - text: countryName, - isSelected: currentCountry === countryISO, - searchValue: StringUtils.sanitizeString(`${countryISO}${countryName}`), - })), + _.map(_.keys(CONST.ALL_COUNTRIES), (countryISO) => { + const countryName = translate(`allCountries.${countryISO}`); + return { + value: countryISO, + keyForList: countryISO, + text: countryName, + isSelected: currentCountry === countryISO, + searchValue: StringUtils.sanitizeString(`${countryISO}${countryName}`), + }; + }), [translate, currentCountry], ); @@ -76,12 +86,10 @@ function CountrySelectorModal({currentCountry, isVisible, onClose, onCountrySele diff --git a/src/components/CountryPicker/index.js b/src/components/CountryPicker/index.js index 684296d20b11..c838ed8f4060 100644 --- a/src/components/CountryPicker/index.js +++ b/src/components/CountryPicker/index.js @@ -1,7 +1,6 @@ -import React, {useEffect, useState} from 'react'; +import React, {useState} from 'react'; import {View} from 'react-native'; import PropTypes from 'prop-types'; -import lodashGet from 'lodash/get'; import styles from '../../styles/styles'; import MenuItemWithTopDescription from '../MenuItemWithTopDescription'; import useLocalize from '../../hooks/useLocalize'; @@ -32,16 +31,10 @@ const defaultProps = { function CountryPicker({value, errorText, onInputChange, forwardedRef}) { const {translate} = useLocalize(); - const allCountries = translate('allCountries'); const [isPickerVisible, setIsPickerVisible] = useState(false); - const [searchValue, setSearchValue] = useState(lodashGet(allCountries, value, '')); - - useEffect(() => { - setSearchValue(lodashGet(allCountries, value, '')); - }, [value, allCountries]); + const [searchValue, setSearchValue] = useState(''); const showPickerModal = () => { - setSearchValue(lodashGet(allCountries, value, '')); setIsPickerVisible(true); }; @@ -54,7 +47,7 @@ function CountryPicker({value, errorText, onInputChange, forwardedRef}) { hidePickerModal(); }; - const title = allCountries[value] || ''; + const title = value ? translate(`allCountries.${value}`) : ''; const descStyle = title.length === 0 ? styles.textNormal : null; return ( diff --git a/src/components/CustomStatusBar/index.js b/src/components/CustomStatusBar/index.js index 76752cb549e1..4848e6e35f59 100644 --- a/src/components/CustomStatusBar/index.js +++ b/src/components/CustomStatusBar/index.js @@ -1,11 +1,22 @@ import React, {useEffect} from 'react'; import StatusBar from '../../libs/StatusBar'; +import Navigation, {navigationRef} from '../../libs/Navigation/Navigation'; import themeColors from '../../styles/themes/default'; function CustomStatusBar() { useEffect(() => { - StatusBar.setBarStyle('light-content', true); - StatusBar.setBackgroundColor(themeColors.appBG); + Navigation.isNavigationReady().then(() => { + // Set the status bar colour depending on the current route. + // If we don't have any colour defined for a route, fall back to + // appBG color. + const currentRoute = navigationRef.getCurrentRoute(); + let currentScreenBackgroundColor = themeColors.appBG; + if (currentRoute && 'name' in currentRoute && currentRoute.name in themeColors.PAGE_BACKGROUND_COLORS) { + currentScreenBackgroundColor = themeColors.PAGE_BACKGROUND_COLORS[currentRoute.name]; + } + StatusBar.setBarStyle('light-content', true); + StatusBar.setBackgroundColor(currentScreenBackgroundColor); + }); }, []); return ; } diff --git a/src/components/DistanceRequest.js b/src/components/DistanceRequest.js index ecc36a824526..9de98f365475 100644 --- a/src/components/DistanceRequest.js +++ b/src/components/DistanceRequest.js @@ -1,41 +1,56 @@ -import React, {useEffect, useState} from 'react'; +import React, {useEffect, useMemo, useState, useRef} from 'react'; import {ScrollView, View} from 'react-native'; +import {withOnyx} from 'react-native-onyx'; import lodashGet from 'lodash/get'; -import _ from 'underscore'; +import lodashHas from 'lodash/has'; +import lodashIsNull from 'lodash/isNull'; import PropTypes from 'prop-types'; -import {withOnyx} from 'react-native-onyx'; -import MapView from 'react-native-x-maps'; +import _ from 'underscore'; + +import CONST from '../CONST'; +import ROUTES from '../ROUTES'; import ONYXKEYS from '../ONYXKEYS'; -import * as Transaction from '../libs/actions/Transaction'; -import * as TransactionUtils from '../libs/TransactionUtils'; -import MenuItemWithTopDescription from './MenuItemWithTopDescription'; -import * as Expensicons from './Icon/Expensicons'; -import theme from '../styles/themes/default'; -import Button from './Button'; + import styles from '../styles/styles'; import variables from '../styles/variables'; -import LinearGradient from './LinearGradient'; -import * as MapboxToken from '../libs/actions/MapboxToken'; -import CONST from '../CONST'; -import BlockingView from './BlockingViews/BlockingView'; +import theme from '../styles/themes/default'; + +import transactionPropTypes from './transactionPropTypes'; + import useNetwork from '../hooks/useNetwork'; +import usePrevious from '../hooks/usePrevious'; import useLocalize from '../hooks/useLocalize'; + +import * as ErrorUtils from '../libs/ErrorUtils'; import Navigation from '../libs/Navigation/Navigation'; -import ROUTES from '../ROUTES'; -import transactionPropTypes from './transactionPropTypes'; +import * as MapboxToken from '../libs/actions/MapboxToken'; +import * as Transaction from '../libs/actions/Transaction'; +import * as TransactionUtils from '../libs/TransactionUtils'; + +import Button from './Button'; +import MapView from './MapView'; +import LinearGradient from './LinearGradient'; +import * as Expensicons from './Icon/Expensicons'; +import BlockingView from './BlockingViews/BlockingView'; import DotIndicatorMessage from './DotIndicatorMessage'; -import * as ErrorUtils from '../libs/ErrorUtils'; -import usePrevious from '../hooks/usePrevious'; +import MenuItemWithTopDescription from './MenuItemWithTopDescription'; +import {iouPropTypes} from '../pages/iou/propTypes'; +import reportPropTypes from '../pages/reportPropTypes'; +import * as IOU from '../libs/actions/IOU'; +import * as StyleUtils from '../styles/StyleUtils'; const MAX_WAYPOINTS = 25; const MAX_WAYPOINTS_TO_DISPLAY = 4; -const MAP_PADDING = 50; -const DEFAULT_ZOOM_LEVEL = 10; - const propTypes = { - /** The transactionID of this request */ - transactionID: PropTypes.string, + /** Holds data related to Money Request view state, rather than the underlying Money Request data. */ + iou: iouPropTypes, + + /** Type of money request (i.e. IOU) */ + iouType: PropTypes.oneOf(_.values(CONST.IOU.MONEY_REQUEST_TYPE)), + + /** The report to which the distance request is associated */ + report: reportPropTypes, /** The optimistic transaction for this request */ transaction: transactionPropTypes, @@ -51,61 +66,74 @@ const propTypes = { }; const defaultProps = { - transactionID: '', + iou: {}, + iouType: '', + report: {}, transaction: {}, - mapboxAccessToken: {}, + mapboxAccessToken: { + token: '', + }, }; -function DistanceRequest({transactionID, transaction, mapboxAccessToken}) { +function DistanceRequest({iou, iouType, report, transaction, mapboxAccessToken}) { const [shouldShowGradient, setShouldShowGradient] = useState(false); const [scrollContainerHeight, setScrollContainerHeight] = useState(0); const [scrollContentHeight, setScrollContentHeight] = useState(0); const {isOffline} = useNetwork(); const {translate} = useLocalize(); - const waypoints = lodashGet(transaction, 'comment.waypoints', {}); + const reportID = lodashGet(report, 'reportID', ''); + const waypoints = useMemo(() => lodashGet(transaction, 'comment.waypoints', {}), [transaction]); + const previousWaypoints = usePrevious(waypoints); const numberOfWaypoints = _.size(waypoints); + const numberOfPreviousWaypoints = _.size(previousWaypoints); + const scrollViewRef = useRef(null); const lastWaypointIndex = numberOfWaypoints - 1; const isLoadingRoute = lodashGet(transaction, 'comment.isLoading', false); - const hasRouteError = Boolean(lodashGet(transaction, 'errorFields.route')); - const previousWaypoints = usePrevious(waypoints); + const hasRouteError = !!lodashGet(transaction, 'errorFields.route'); const haveWaypointsChanged = !_.isEqual(previousWaypoints, waypoints); - const shouldFetchRoute = haveWaypointsChanged && !isOffline && !isLoadingRoute && TransactionUtils.validateWaypoints(waypoints); - - const waypointMarkers = _.filter( - _.map(waypoints, (waypoint, key) => { - if (!waypoint || waypoint.lng === undefined || waypoint.lat === undefined) { - return; - } - - const index = Number(key.replace('waypoint', '')); - let MarkerComponent; - if (index === 0) { - MarkerComponent = Expensicons.DotIndicatorUnfilled; - } else if (index === lastWaypointIndex) { - MarkerComponent = Expensicons.Location; - } else { - MarkerComponent = Expensicons.DotIndicator; - } - - return { - coordinate: [waypoint.lng, waypoint.lat], - markerComponent: () => ( - - ), - }; - }), - (waypoint) => waypoint, + const doesRouteExist = lodashHas(transaction, 'routes.route0.geometry.coordinates'); + const validatedWaypoints = TransactionUtils.getValidWaypoints(waypoints); + const shouldFetchRoute = (!doesRouteExist || haveWaypointsChanged) && !isLoadingRoute && _.size(validatedWaypoints) > 1; + const waypointMarkers = useMemo( + () => + _.filter( + _.map(waypoints, (waypoint, key) => { + if (!waypoint || !lodashHas(waypoint, 'lat') || !lodashHas(waypoint, 'lng') || lodashIsNull(waypoint.lat) || lodashIsNull(waypoint.lng)) { + return; + } + + const index = TransactionUtils.getWaypointIndex(key); + let MarkerComponent; + if (index === 0) { + MarkerComponent = Expensicons.DotIndicatorUnfilled; + } else if (index === lastWaypointIndex) { + MarkerComponent = Expensicons.Location; + } else { + MarkerComponent = Expensicons.DotIndicator; + } + + return { + id: `${waypoint.lng},${waypoint.lat},${index}`, + coordinate: [waypoint.lng, waypoint.lat], + markerComponent: () => ( + + ), + }; + }), + (waypoint) => waypoint, + ), + [waypoints, lastWaypointIndex], ); // Show up to the max number of waypoints plus 1/2 of one to hint at scrolling - const halfMenuItemHeight = Math.floor(variables.baseMenuItemHeight / 2); - const scrollContainerMaxHeight = variables.baseMenuItemHeight * MAX_WAYPOINTS_TO_DISPLAY + halfMenuItemHeight; + const halfMenuItemHeight = Math.floor(variables.optionRowHeight / 2); + const scrollContainerMaxHeight = variables.optionRowHeight * MAX_WAYPOINTS_TO_DISPLAY + halfMenuItemHeight; useEffect(() => { MapboxToken.init(); @@ -113,32 +141,37 @@ function DistanceRequest({transactionID, transaction, mapboxAccessToken}) { }, []); useEffect(() => { - if (!transactionID || !_.isEmpty(waypoints)) { + if (!iou.transactionID || !_.isEmpty(waypoints)) { return; } // Create the initial start and stop waypoints - Transaction.createInitialWaypoints(transactionID); - }, [transactionID, waypoints]); + Transaction.createInitialWaypoints(iou.transactionID); + }, [iou.transactionID, waypoints]); const updateGradientVisibility = (event = {}) => { // If a waypoint extends past the bottom of the visible area show the gradient, else hide it. const visibleAreaEnd = lodashGet(event, 'nativeEvent.contentOffset.y', 0) + scrollContainerHeight; setShouldShowGradient(visibleAreaEnd < scrollContentHeight); }; - - // Handle fetching the route when there are at least 2 waypoints useEffect(() => { - if (!shouldFetchRoute) { + if (isOffline || !shouldFetchRoute) { return; } - Transaction.getRoute(transactionID, waypoints); - }, [shouldFetchRoute, transactionID, waypoints]); + Transaction.getRoute(iou.transactionID, validatedWaypoints); + }, [shouldFetchRoute, iou.transactionID, validatedWaypoints, isOffline]); + + useEffect(() => { + if (numberOfWaypoints <= numberOfPreviousWaypoints) { + return; + } + scrollViewRef.current.scrollToEnd({animated: true}); + }, [numberOfPreviousWaypoints, numberOfWaypoints]); useEffect(updateGradientVisibility, [scrollContainerHeight, scrollContentHeight]); return ( - <> + setScrollContainerHeight(lodashGet(event, 'nativeEvent.layout.height', 0))} @@ -146,11 +179,12 @@ function DistanceRequest({transactionID, transaction, mapboxAccessToken}) { setScrollContentHeight(height)} onScroll={updateGradientVisibility} - scrollEventThrottle={16} + scrollEventThrottle={variables.distanceScrollEventThrottle} + ref={scrollViewRef} > {_.map(waypoints, (waypoint, key) => { // key is of the form waypoint0, waypoint1, ... - const index = Number(key.replace('waypoint', '')); + const index = TransactionUtils.getWaypointIndex(key); let descriptionKey = 'distance.waypointDescription.'; let waypointIcon; if (index === 0) { @@ -168,7 +202,6 @@ function DistanceRequest({transactionID, transaction, mapboxAccessToken}) { )} {hasRouteError && ( @@ -197,7 +230,7 @@ function DistanceRequest({transactionID, transaction, mapboxAccessToken}) {