From 46e718870b7d4a5632ee3dc9cbce860a79b69509 Mon Sep 17 00:00:00 2001 From: Steve Hansen Date: Wed, 15 Jul 2026 19:33:11 -0400 Subject: [PATCH] add browser ci and credential storage guidance Co-Authored-By: Codex AI-Model: codex --- .github/workflows/nodejs.yml | 27 +- .github/workflows/publish.yml | 12 +- CLAUDE.md | 74 +- README.md | 74 +- dist/api.min.js | 2 +- dist/api.min.js.LICENSE.txt | 4 +- dist/api.min.js.map | 2 +- lib/ApiHelper.js | 8 +- lib/api.js | 4 +- package-lock.json | 1349 +++++++++++++++++++++------- package.json | 2 +- test/node/node-Credentials.spec.js | 52 +- test/node/node-Version.spec.js | 31 + test/web/serverSetup.js | 229 ++--- test/web/web-Credentials.spec.js | 108 ++- 15 files changed, 1464 insertions(+), 514 deletions(-) create mode 100644 test/node/node-Version.spec.js diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index aa95896..7ba3286 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -1,5 +1,4 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions +# Clean-install dependencies, build the bundle, and test supported Node.js and browser environments. name: Node.js CI @@ -10,8 +9,7 @@ on: branches: [ master ] jobs: - build: - + node-tests: runs-on: ubuntu-latest strategy: @@ -24,8 +22,29 @@ jobs: uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} + cache: npm - run: npm ci - run: npm run build - run: npm run test:node env: CI: true + + browser-tests: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Use Node.js 22 + uses: actions/setup-node@v4 + with: + node-version: 22.x + cache: npm + - run: npm ci + - name: Setup Chrome + id: setup-chrome + uses: browser-actions/setup-chrome@v2 + - run: npm run build + - run: npm run test:web + env: + CI: true + PUPPETEER_EXECUTABLE_PATH: ${{ steps.setup-chrome.outputs.chrome-path }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 970b1d9..3ca4e08 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -44,9 +44,19 @@ jobs: - name: Build run: npm run build - - name: Run tests + - name: Run Node.js tests run: npm run test:node + - name: Setup Chrome + id: setup-chrome + uses: browser-actions/setup-chrome@v2 + + - name: Run browser tests + run: npm run test:web + env: + CI: true + PUPPETEER_EXECUTABLE_PATH: ${{ steps.setup-chrome.outputs.chrome-path }} + - name: Verify version matches tag run: | PACKAGE_VERSION="v$(node -p "require('./package.json').version")" diff --git a/CLAUDE.md b/CLAUDE.md index c5a9f8d..6f059c5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -2,55 +2,69 @@ ## Project Overview -mg-api-js is the official JavaScript API wrapper for the MyGeotab telematics platform. It provides a `GeotabApi` class for making authenticated API calls from both browser and Node.js environments. Zero runtime dependencies — uses native `fetch` (browser) and `http`/`https` (Node.js). +mg-api-js is the official JavaScript API wrapper for the MyGeotab telematics platform. It provides a `GeotabApi` class for authenticated API calls in browser and Node.js environments. The published package has zero runtime dependencies and uses native `fetch` in browsers and `http`/`https` in Node.js. Supported Node.js versions start at 18. ## Build & Test Commands | Command | Purpose | |---|---| -| `npm run build` | Production build → `dist/api.min.js` (webpack + babel, targets IE 10) | -| `npm run serve` | Dev server on port 9000 | -| `npm test` | Build + start dev server + run all tests (node + web) | -| `npm run test:node` | Node.js tests only (fast, no server needed) | -| `npm run test:web` | Browser tests only (Puppeteer, needs dev server) | -| `npm run mocha:node` | Run node specs directly with mocha | +| `npm run build` | Production build → `dist/api.min.js` (webpack + Babel, targeting IE 10 syntax) | +| `npm run serve` | Start the development server on port 9000 | +| `npm test` | Build, start the development server, and run all Node.js and browser tests | +| `npm run test:node` | Run Node.js tests against the committed bundle | +| `npm run test:web` | Start the development server and run browser tests | +| `npm run mocha:node` | Run Node.js specs directly with Mocha | + +Browser tests use `puppeteer-core` and require Chrome. The test harness checks common Chrome installation paths; set `PUPPETEER_EXECUTABLE_PATH` when Chrome is installed elsewhere. GitHub Actions installs Chrome with `browser-actions/setup-chrome` and supplies this variable. ## Architecture ``` -lib/api.js → UMD entry point, webpack bundles this to dist/api.min.js -lib/GeotabApi.js → Public facade: authenticate(), call(), multiCall(), getSession(), forget() -lib/ApiHelper.js → Internal logic: auth flow, credential management, error handling, HTTP dispatch -lib/HttpCall.js → Transport: fetch (browser) or http/https (Node), timeout via Promise.race -lib/LocalStorageCredentialStore.js → Credential persistence (localStorage or mock) -lib/LocalStorageMock.js → In-memory localStorage replacement for Node.js +lib/api.js → UMD entry point bundled to dist/api.min.js +lib/GeotabApi.js → Public facade: authenticate(), call(), multiCall(), getSession(), forget() +lib/ApiHelper.js → Authentication, credential-store, retry, and response handling +lib/HttpCall.js → Browser fetch or Node.js http/https transport +lib/LocalStorageCredentialStore.js → Browser localStorage adapter or Node.js in-memory fallback +lib/LocalStorageMock.js → In-memory localStorage replacement for Node.js ``` +## Credential Persistence + +- `rememberMe` defaults to `true`. In browsers this persists session credentials as plaintext JSON in same-origin `localStorage`; in Node.js the default store is process-local memory. +- `rememberMe: false` prevents new persistence but does not clear credentials written by an earlier instance. +- `forget()` refreshes the session; it is not a logout API and may persist replacement credentials. +- `newCredentialStore` is a supported synchronous adapter with `get()`, `set(credentials, server)`, and `clear()` methods. `get()` returns a falsey value or `{ credentials, server }`. +- Keep the README threat model and custom-store contract aligned with credential-management changes. + ## Code Conventions -- **Module format**: CommonJS with `exports.default = ClassName`; UMD wrapper in `api.js` -- **Naming**: PascalCase files and classes (`GeotabApi.js`), camelCase methods, underscore-prefix for private members (`this._helper`) -- **Style**: 2-space indent, LF line endings, no trailing whitespace (see `.editorconfig`) -- **Patterns**: ES2017 classes with async/await; dual callback/promise API on all public methods -- **Tests**: Mocha + Chai (BDD style), Nock for HTTP mocking, Puppeteer for browser tests -- **Test file naming**: `{context}-{Feature}.spec.js` (e.g., `node-Credentials.spec.js`) +- **Module format**: CommonJS with `exports.default = ClassName`; UMD wrapper in `lib/api.js` +- **Naming**: PascalCase files/classes, camelCase methods, underscore-prefixed private facade members +- **Style**: Spaces, LF endings, and no trailing whitespace according to `.editorconfig` +- **Patterns**: ES2017 classes with async/await and dual callback/promise public APIs +- **Tests**: Mocha + Chai, Nock for Node.js HTTP mocks, and Puppeteer Core for browser tests +- **Test naming**: `{context}-{Feature}.spec.js`, such as `node-Credentials.spec.js` ## Git Conventions -- Commit messages: lowercase, imperative, concise, single-line (e.g., `refactor error handling for DRYness`) -- No conventional commits prefix -- Branch names use Jira ticket IDs (e.g., `MYG-62290`) -- PRs merge to `master` +- Commit messages are lowercase, imperative, concise, and single-line (for example, `refactor error handling for DRYness`). +- Do not add conventional-commit prefixes unless the repository convention changes. +- Existing Jira-linked branches use ticket IDs such as `MYG-62290`; PRs merge to `master`. ## Rules -- All unit tests must pass before making a commit. Run `npm run test:node` to verify. +- Run `npm test` before committing changes that affect runtime code, bundling, credentials, or browser behavior. +- At minimum, run `npm run test:node` for Node-only test changes. +- Rebuild and commit `dist/api.min.js`, its source map, and license file when `lib/` changes. +- Keep the package version, README CDN pin, source banner, lockfile, and distribution license banner aligned; `node-Version.spec.js` enforces this. +- Do not replace the pinned README CDN example with an unversioned package URL. ## Key Details -- The bundled output `dist/api.min.js` is committed to the repo -- Browser vs Node detection uses `typeof window` checks -- Auto re-authentication on `InvalidUserException` (retries failed call after re-auth) -- Default API timeout: 180 seconds -- API endpoint format: `https://{server}/apiv1/` -- CI: GitHub Actions, Node.js 16.x +- The generated `dist/` bundle is committed to the repository. +- Browser versus Node.js transport detection uses `typeof window`. +- `InvalidUserException` triggers authentication refresh and one retry of the failed call. +- Default API timeout: 180 seconds. +- API endpoint format: `https://{server}/apiv1/`. +- CI runs Node.js tests on 18, 20, and 22, plus browser tests on Node.js 22. +- The publish workflow builds and runs both Node.js and browser tests on Node.js 24 before publishing. diff --git a/README.md b/README.md index 37861cb..26a67f2 100644 --- a/README.md +++ b/README.md @@ -14,19 +14,13 @@ $ npm install --save mg-api-js ### Browser -To access the wrapper in the browser, the library needs to be loaded in. This can be done by downloading `api.min.js` and referencing the file as needed. - -Alternatively, this can be done using jsdelivr CDN: +To use the wrapper in a browser, download `dist/api.min.js` from a release or load an exact version from jsDelivr: ```html - - - - - + ``` -For more options using jsdelivr, visit the [jsdelivr documentation](https://www.jsdelivr.com/features). +Pin both the package version and file path in production. An unversioned CDN URL can change when a new release is published, so upgrades should be reviewed and deployed deliberately. For other URL formats, see the [jsDelivr documentation](https://www.jsdelivr.com/features). ## Creating the Object **Note**: *As of v2.0.0, the GeotabApi object no longer accepts an authentication callback.* @@ -65,7 +59,6 @@ const authentication = { credentials: { database: 'database', userName: 'username', - password: 'password', sessionId: '123456...' }, path: 'serverAddress' @@ -81,9 +74,9 @@ This optional parameter allows you to define some default behavior of the api: | Argument | Type | Description | Default | | --- | --- | --- | --- | -| rememberMe | *boolean* | Determines whether or not to store the credentials/session in the datastore | `true` | -| timeout | *number* | The length of time the wrapper will wait for a response from the server (in seconds) | `3` | -| newCredentialStore | *object* | Overrides the default datastore for remembered credentials/sessions | `false` | +| rememberMe | *boolean* | Determines whether authenticated credentials are persisted in the credential store | `true` | +| timeout | *number* | The length of time the wrapper will wait for a response from the server (in seconds) | `180` | +| newCredentialStore | *object* | Uses a custom synchronous credential store instead of the default store | `false` | | fullResponse | *boolean* | Removes error handling and provides the full [Http Server Response](https://nodejs.org/api/http.html#class-httpserverresponse) when in a node environment or the full [Fetch Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) when in a browser environment. More information in the **Full Response** section | `false` | Example options object: @@ -98,16 +91,57 @@ const options = { } ``` -#### Providing your own Datastore +#### Credential persistence and threat model + +With the default `rememberMe: true`, browsers store the authenticated credential object as plaintext JSON in same-origin [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage). This normally contains a session ID, user name, and database; if you provide a session credential object containing other secrets, those values are stored too. The Node.js default is an in-memory `LocalStorageMock` and does not persist across processes. + +A stored session ID is a bearer credential. Any script executing on the same origin can read it, including code introduced through cross-site scripting (XSS) or a compromised third-party dependency. Browser extensions, shared browser profiles, and local device access may also expose it. Applications using the default store should apply normal XSS and dependency-supply-chain defenses. + +Use `rememberMe: false` when persistent browser sessions are not required or the application cannot accept this risk. This prevents newly authenticated credentials from being written, but it does **not** remove credentials saved by an earlier instance. Clear the custom store during logout or migration. When using the default browser store, remove the `geotabAPI_credentials` and `geotabAPI_server` localStorage entries. + +`api.forget()` is a session-refresh helper, not a logout operation: it clears the store, immediately authenticates again, and can persist the replacement session when `rememberMe` is enabled. -By default, the wrapper will use [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) in browsers, and a [LocalStorageMock](https://github.com/Geotab/mg-api-js/blob/master/lib/LocalStorageMock.js) in node. +#### Providing a custom credential store + +The supported `newCredentialStore` option accepts a synchronous object with this interface: + +- `get()` returns `false`, `null`, or `{ credentials, server }`. +- `set(credentials, server)` stores the supplied credential object and server name. +- `clear()` removes the stored values. + +For example, this memory-only store shares credentials between API instances without writing them to `localStorage`: + +```javascript +class MemoryCredentialStore { + constructor() { + this.value = false; + } -If you want to override this behavior, you can provide an instance of a datastore object in the options object when constructing the wrapper. + get() { + return this.value; + } + + set(credentials, server) { + this.value = { credentials, server }; + } + + clear() { + this.value = false; + } +} + +const credentialStore = new MemoryCredentialStore(); +const options = { + rememberMe: true, + newCredentialStore: credentialStore +}; + +const api = new GeotabApi(authentication, options); +// On logout, discard the API instance and clear the application-owned store. +credentialStore.clear(); +``` -At minimum, the datastore must have the following methods: -- `get()` -- `set()` -- `clear()` +A custom store can integrate with an application-controlled credential broker or provide memory-only behavior. Encryption whose key is available to the same page JavaScript does not protect credentials from malicious same-origin scripts, because those scripts can invoke the store or read credentials after retrieval. ## Methods diff --git a/dist/api.min.js b/dist/api.min.js index a14be76..211e34c 100644 --- a/dist/api.min.js +++ b/dist/api.min.js @@ -1,3 +1,3 @@ /*! For license information please see api.min.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.GeotabApi=t():e.GeotabApi=t()}(Object("undefined"!=typeof self?self:this),()=>(()=>{var e={319(e,t,r){function n(){"use strict";n=function(){return t};var e,t={},r=Object.prototype,o=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function f(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,r){return e[t]=r}}function h(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,a=Object.create(o.prototype),u=new M(n||[]);return i(a,"_invoke",{value:k(e,r,u)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var g="suspendedStart",d="suspendedYield",m="executing",v="completed",y={};function w(){}function b(){}function _(){}var L={};f(L,s,function(){return this});var S=Object.getPrototypeOf,x=S&&S(S(R([])));x&&x!==r&&o.call(x,s)&&(L=x);var E=_.prototype=w.prototype=Object.create(L);function C(e){["next","throw","return"].forEach(function(t){f(e,t,function(e){return this._invoke(t,e)})})}function O(e,t){function r(n,i,u,s){var c=p(e[n],e,i);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==a(f)&&o.call(f,"__await")?t.resolve(f.__await).then(function(e){r("next",e,u,s)},function(e){r("throw",e,u,s)}):t.resolve(f).then(function(e){l.value=e,u(l)},function(e){return r("throw",e,u,s)})}s(c.arg)}var n;i(this,"_invoke",{value:function(e,o){function i(){return new t(function(t,n){r(e,o,t,n)})}return n=n?n.then(i,i):i()}})}function k(t,r,n){var o=g;return function(i,a){if(o===m)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=A(u,n);if(s){if(s===y)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===g)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=m;var c=p(t,r,n);if("normal"===c.type){if(o=n.done?v:d,c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=v,n.method="throw",n.arg=c.arg)}}}function A(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=p(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function M(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function R(t){if(t||""===t){var r=t[s];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function r(){for(;++n=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function o(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function i(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var a=e.apply(t,r);function u(e){o(a,n,i,u,s,"next",e)}function s(e){o(a,n,i,u,s,"throw",e)}u(void 0)})}}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function u(e,t){for(var r=0;r=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function i(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function a(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function u(e){i(a,n,o,u,s,"next",e)}function s(e){i(a,n,o,u,s,"throw",e)}u(void 0)})}}function u(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._helper=new c(t,r),this.authenticate=this.authenticate.bind(this)},t=[{key:"authenticate",value:(f=a(o().mark(function e(t,r){var n,i;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t||r){e.next=2;break}throw new Error("If callbackSuccess is supplied so must callbackError");case 2:if(n={database:this._helper.database,userName:this._helper.userName,password:this._helper.password},i=this.callimpl("Authenticate",n,t,r),t||r){e.next=6;break}return e.abrupt("return",i);case 6:case"end":return e.stop()}},e,this)})),function(e,t){return f.apply(this,arguments)})},{key:"call",value:(l=a(o().mark(function e(t,r,n,i){var a;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!n||i){e.next=2;break}throw new Error("If callbackSuccess is supplied so must callbackError");case 2:if(a=this.callimpl(t,r,n,i),n||i){e.next=5;break}return e.abrupt("return",a);case 5:case"end":return e.stop()}},e,this)})),function(e,t,r,n){return l.apply(this,arguments)})},{key:"callimpl",value:(s=a(o().mark(function e(t,r,n,i){var a,u;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._helper.sessionId){e.next=4;break}r.credentials={database:this._helper.database,sessionId:this._helper.sessionId,userName:this._helper.userName},e.next=19;break;case 4:if(!this._helper.rememberMe||"Authenticate"===t||this._helper.sessionId){e.next=16;break}return e.next=7,this._helper.getLocalCredentials();case 7:if(!(a=e.sent)){e.next=12;break}r.credentials=a,e.next=14;break;case 12:return e.next=14,this._helper.getAuthentication(this.authenticate,this._helper.rememberMe).then(function(e){r.credentials=e});case 14:e.next=19;break;case 16:if("Authenticate"===t||this._helper.rememberMe||this._helper.sessionId){e.next=19;break}return e.next=19,this._helper.getAuthentication(this.authenticate,this._helper.rememberMe).then(function(e){r.credentials=e});case 19:return u=this._helper.sendHttpCall(t,r,n,i,this.authenticate,this._helper.rememberMe),this._helper.fullResponse||(u=this._helper.errorHandle(u,i),u=this._helper.parseHttpResponse(u)),e.abrupt("return",u);case 22:case"end":return e.stop()}},e,this)})),function(e,t,r,n){return s.apply(this,arguments)})},{key:"multiCall",value:(i=a(o().mark(function e(t,r,n){var i,a;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!r||n){e.next=2;break}throw new Error("If callbackSuccess is supplied so must callbackError");case 2:if(i=t.map(function(e){var t=e[1];return{method:e[0],params:t}}),a=this.callimpl("ExecuteMultiCall",{calls:i},r,n),r||n){e.next=6;break}return e.abrupt("return",a);case 6:case"end":return e.stop()}},e,this)})),function(e,t,r){return i.apply(this,arguments)})},{key:"getSession",value:(n=a(o().mark(function e(t,r){var n,i,a=this;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._helper.getLocalCredentials();case 2:if(n=e.sent,r||!this._helper.rememberMe){e.next=17;break}if(!n){e.next=14;break}if(i=this._helper.fullResponse?{data:{result:{credentials:n,path:this._helper.server}}}:{credentials:n,path:this._helper.server},!t){e.next=11;break}return 1===t.length?t(i):2===t.length&&t(n.credentials,this._helper.server),e.abrupt("return");case 11:return e.abrupt("return",i);case 12:e.next=15;break;case 14:return e.abrupt("return",this.authenticate(t));case 15:e.next=27;break;case 17:if(n=this.authenticate(),!t){e.next=26;break}return e.next=21,n.then(function(e){return a._helper.fullResponse?e.data.result.credentials:e});case 21:n=e.sent,i=this._helper.fullResponse?{data:{result:{credentials:n,path:this._helper.server}}}:{credentials:n.credentials,path:this._helper.server},1===t.length?t(i):2===t.length&&t(n.credentials,this._helper.server),e.next=27;break;case 26:return e.abrupt("return",n);case 27:case"end":return e.stop()}},e,this)})),function(e,t){return n.apply(this,arguments)})},{key:"forget",value:(r=a(o().mark(function e(){return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._helper.clearLocalCredentials(),e.abrupt("return",this.authenticate());case 2:case"end":return e.stop()}},e,this)})),function(){return r.apply(this,arguments)})}],t&&u(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,r,n,i,s,l,f}();t.A=l},55(e,t,r){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(){"use strict";o=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function f(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,r){return e[t]=r}}function h(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,i=Object.create(o.prototype),u=new M(n||[]);return a(i,"_invoke",{value:k(e,r,u)}),i}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var g="suspendedStart",d="suspendedYield",m="executing",v="completed",y={};function w(){}function b(){}function _(){}var L={};f(L,s,function(){return this});var S=Object.getPrototypeOf,x=S&&S(S(R([])));x&&x!==r&&i.call(x,s)&&(L=x);var E=_.prototype=w.prototype=Object.create(L);function C(e){["next","throw","return"].forEach(function(t){f(e,t,function(e){return this._invoke(t,e)})})}function O(e,t){function r(o,a,u,s){var c=p(e[o],e,a);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==n(f)&&i.call(f,"__await")?t.resolve(f.__await).then(function(e){r("next",e,u,s)},function(e){r("throw",e,u,s)}):t.resolve(f).then(function(e){l.value=e,u(l)},function(e){return r("throw",e,u,s)})}s(c.arg)}var o;a(this,"_invoke",{value:function(e,n){function i(){return new t(function(t,o){r(e,n,t,o)})}return o=o?o.then(i,i):i()}})}function k(t,r,n){var o=g;return function(i,a){if(o===m)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=A(u,n);if(s){if(s===y)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===g)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=m;var c=p(t,r,n);if("normal"===c.type){if(o=n.done?v:d,c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=v,n.method="throw",n.arg=c.arg)}}}function A(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=p(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function M(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function R(t){if(t||""===t){var r=t[s];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){for(;++o=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function i(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function a(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function u(e){i(a,n,o,u,s,"next",e)}function s(e){i(a,n,o,u,s,"throw",e)}u(void 0)})}}function u(e,t){for(var r=0;r>>=0;var o=e.byteLength-t;if(o<0)throw new RangeError("'offset' is out of bounds");if(void 0===n)n=o;else if((n>>>=0)>o)throw new RangeError("'length' is out of bounds");return r?Buffer.from(e.slice(t,t+n)):new Buffer(new Uint8Array(e.slice(t,t+n)))}(e,n,o):"string"==typeof e?function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!Buffer.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');return r?Buffer.from(e,t):new Buffer(e,t)}(e,n):r?Buffer.from(e):new Buffer(e);var i}},452(e){var t=function(e){"use strict";var t,r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),u=new P(n||[]);return o(a,"_invoke",{value:C(e,r,u)}),a}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var h="suspendedStart",p="suspendedYield",g="executing",d="completed",m={};function v(){}function y(){}function w(){}var b={};c(b,a,function(){return this});var _=Object.getPrototypeOf,L=_&&_(_(j([])));L&&L!==r&&n.call(L,a)&&(b=L);var S=w.prototype=v.prototype=Object.create(b);function x(e){["next","throw","return"].forEach(function(t){c(e,t,function(e){return this._invoke(t,e)})})}function E(e,t){function r(o,i,a,u){var s=f(e[o],e,i);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then(function(e){r("next",e,a,u)},function(e){r("throw",e,a,u)}):t.resolve(l).then(function(e){c.value=e,a(c)},function(e){return r("throw",e,a,u)})}u(s.arg)}var i;o(this,"_invoke",{value:function(e,n){function o(){return new t(function(t,o){r(e,n,t,o)})}return i=i?i.then(o,o):o()}})}function C(e,t,r){var n=h;return function(o,i){if(n===g)throw new Error("Generator is already running");if(n===d){if("throw"===o)throw i;return M()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=O(a,r);if(u){if(u===m)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===h)throw n=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=g;var s=f(e,t,r);if("normal"===s.type){if(n=r.done?d:p,s.arg===m)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=d,r.method="throw",r.arg=s.arg)}}}function O(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,O(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function j(e){if(e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:j(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},345(e,t,r){e=r.nmd(e);var n,o=r(665).SourceMapConsumer,i=r(928);try{(n=r(896)).existsSync&&n.readFileSync||(n=null)}catch(e){}var a=r(746);function u(e,t){return e.require(t)}var s=!1,c=!1,l=!1,f="auto",h={},p={},g=/^data:application\/json[^,]+base64,/,d=[],m=[];function v(){return"browser"===f||"node"!==f&&"undefined"!=typeof window&&"function"==typeof XMLHttpRequest&&!(window.require&&window.module&&window.process&&"renderer"===window.process.type)}function y(e){return function(t){for(var r=0;r";var r=this.getLineNumber();if(null!=r){t+=":"+r;var n=this.getColumnNumber();n&&(t+=":"+n)}}var o="",i=this.getFunctionName(),a=!0,u=this.isConstructor();if(this.isToplevel()||u)u?o+="new "+(i||""):i?o+=i:(o+=t,a=!1);else{var s=this.getTypeName();"[object Object]"===s&&(s="null");var c=this.getMethodName();i?(s&&0!=i.indexOf(s)&&(o+=s+"."),o+=i,c&&i.indexOf("."+c)!=i.length-c.length-1&&(o+=" [as "+c+"]")):o+=s+"."+(c||"")}return a&&(o+=" ("+t+")"),o}function E(e){var t={};return Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(function(r){t[r]=/^(?:is|get)/.test(r)?function(){return e[r].call(e)}:e[r]}),t.toString=x,t}function C(e,t){if(void 0===t&&(t={nextPosition:null,curPosition:null}),e.isNative())return t.curPosition=null,e;var r=e.getFileName()||e.getScriptNameOrSourceURL();if(r){var n=e.getLineNumber(),o=e.getColumnNumber()-1,i=/^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/.test("object"==typeof process&&null!==process?process.version:"")?0:62;1===n&&o>i&&!v()&&!e.isEval()&&(o-=i);var a=L({source:r,line:n,column:o});t.curPosition=a;var u=(e=E(e)).getFunctionName;return e.getFunctionName=function(){return null==t.nextPosition?u():t.nextPosition.name||u()},e.getFileName=function(){return a.source},e.getLineNumber=function(){return a.line},e.getColumnNumber=function(){return a.column+1},e.getScriptNameOrSourceURL=function(){return a.source},e}var s=e.isEval()&&e.getEvalOrigin();return s?(s=S(s),(e=E(e)).getEvalOrigin=function(){return s},e):e}function O(e,t){l&&(h={},p={});for(var r=(e.name||"Error")+": "+(e.message||""),n={nextPosition:null,curPosition:null},o=[],i=t.length-1;i>=0;i--)o.push("\n at "+C(t[i],n)),n.nextPosition=n.curPosition;return n.curPosition=n.nextPosition=null,r+o.reverse().join("")}function k(e){var t=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(e.stack);if(t){var r=t[1],o=+t[2],i=+t[3],a=h[r];if(!a&&n&&n.existsSync(r))try{a=n.readFileSync(r,"utf8")}catch(e){a=""}if(a){var u=a.split(/(?:\r\n|\r|\n)/)[o-1];if(u)return r+":"+o+"\n"+u+"\n"+new Array(i).join(" ")+"^"}}return null}m.push(function(e){var t,r=function(e){var t;if(v())try{var r=new XMLHttpRequest;r.open("GET",e,!1),r.send(null),t=4===r.readyState?r.responseText:null;var n=r.getResponseHeader("SourceMap")||r.getResponseHeader("X-SourceMap");if(n)return n}catch(e){}t=w(e);for(var o,i,a=/(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/gm;i=a.exec(t);)o=i;return o?o[1]:null}(e);if(!r)return null;if(g.test(r)){var n=r.slice(r.indexOf(",")+1);t=a(n,"base64").toString(),r=e}else r=b(e,r),t=w(r);return t?{url:r,map:t}:null});var A=d.slice(0),P=m.slice(0);t.wrapCallSite=C,t.getErrorSource=k,t.mapSourcePosition=L,t.retrieveSourceMap=_,t.install=function(t){if((t=t||{}).environment&&(f=t.environment,-1===["node","browser","auto"].indexOf(f)))throw new Error("environment "+f+" was unknown. Available options are {auto, browser, node}");if(t.retrieveFile&&(t.overrideRetrieveFile&&(d.length=0),d.unshift(t.retrieveFile)),t.retrieveSourceMap&&(t.overrideRetrieveSourceMap&&(m.length=0),m.unshift(t.retrieveSourceMap)),t.hookRequire&&!v()){var r=u(e,"module"),n=r.prototype._compile;n.__sourceMapSupport||(r.prototype._compile=function(e,t){return h[t]=e,p[t]=void 0,n.call(this,e,t)},r.prototype._compile.__sourceMapSupport=!0)}if(l||(l="emptyCacheBetweenOperations"in t&&t.emptyCacheBetweenOperations),s||(s=!0,Error.prepareStackTrace=O),!c){var o=!("handleUncaughtExceptions"in t)||t.handleUncaughtExceptions;try{!1===u(e,"worker_threads").isMainThread&&(o=!1)}catch(e){}o&&"object"==typeof process&&null!==process&&"function"==typeof process.on&&(c=!0,i=process.emit,process.emit=function(e){if("uncaughtException"===e){var t=arguments[1]&&arguments[1].stack,r=this.listeners(e).length>0;if(t&&!r)return o=k(n=arguments[1]),(a=function(){if("object"==typeof process&&null!==process)return process.stderr}())&&a._handle&&a._handle.setBlocking&&a._handle.setBlocking(!0),o&&(console.error(),console.error(o)),console.error(n.stack),void("object"==typeof process&&null!==process&&"function"==typeof process.exit&&process.exit(1))}var n,o,a;return i.apply(this,arguments)})}var i},t.resetRetrieveHandlers=function(){d.length=0,m.length=0,d=A.slice(0),m=P.slice(0),_=y(m),w=y(d)}},735(e,t,r){var n=r(251),o=Object.prototype.hasOwnProperty,i="undefined"!=typeof Map;function a(){this._array=[],this._set=i?new Map:Object.create(null)}a.fromArray=function(e,t){for(var r=new a,n=0,o=e.length;n=0)return t}else{var r=n.toSetString(e);if(o.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},a.prototype.at=function(e){if(e>=0&&e>>=5)>0&&(t|=32),r+=n.encode(t)}while(o>0);return r},t.decode=function(e,t,r){var o,i,a,u,s=e.length,c=0,l=0;do{if(t>=s)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=n.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));o=!!(32&i),c+=(i&=31)<>1,1&~a?u:-u),r.rest=t}},364(e,t){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e0?n-s>1?r(s,n,o,i,a,u):u==t.LEAST_UPPER_BOUND?n1?r(e,s,o,i,a,u):u==t.LEAST_UPPER_BOUND?s:e<0?-1:e}t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,n,o,i){if(0===n.length)return-1;var a=r(-1,n.length,e,n,o,i||t.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===o(n[a],n[a-1],!0);)--a;return a}},302(e,t,r){var n=r(251);function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}o.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},o.prototype.add=function(e){var t,r,o,i,a,u;r=e,o=(t=this._last).generatedLine,i=r.generatedLine,a=t.generatedColumn,u=r.generatedColumn,i>o||i==o&&u>=a||n.compareByGeneratedPositionsInflated(t,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(n.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.P=o},801(e,t){function r(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function n(e,t,o,i){if(o=0){var u=this._originalMappings[a];if(void 0===e.column)for(var s=u.originalLine;u&&u.originalLine===s;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++a];else for(var c=u.originalColumn;u&&u.originalLine===t&&u.originalColumn==c;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++a]}return i},t.SourceMapConsumer=s,c.prototype=Object.create(s.prototype),c.prototype.consumer=s,c.prototype._findSourceIndex=function(e){var t,r=e;if(null!=this.sourceRoot&&(r=n.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(t=0;t1&&(r.source=d+i[1],d+=i[1],r.originalLine=p+i[2],p=r.originalLine,r.originalLine+=1,r.originalColumn=g+i[3],g=r.originalColumn,i.length>4&&(r.name=m+i[4],m+=i[4])),L.push(r),"number"==typeof r.originalLine&&_.push(r)}u(L,n.compareByGeneratedPositionsDeflated),this.__generatedMappings=L,u(_,n.compareByOriginalPositions),this.__originalMappings=_},c.prototype._findMapping=function(e,t,r,n,i,a){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return o.search(e,t,i,a)},c.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===t.generatedLine){var i=n.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=n.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var a=n.getArg(o,"name",null);return null!==a&&(a=this._names.at(a)),{source:i,line:n.getArg(o,"originalLine",null),column:n.getArg(o,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},c.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e})},c.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var o,i=e;if(null!=this.sourceRoot&&(i=n.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=n.urlParse(this.sourceRoot))){var a=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},c.prototype.generatedPositionFor=function(e){var t=n.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:n.getArg(e,"line"),originalColumn:n.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",n.compareByOriginalPositions,n.getArg(e,"bias",s.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:n.getArg(i,"generatedLine",null),column:n.getArg(i,"generatedColumn",null),lastColumn:n.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},f.prototype=Object.create(s.prototype),f.prototype.constructor=s,f.prototype._version=3,Object.defineProperty(f.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},u.prototype._serializeMappings=function(){for(var e,t,r,i,a=0,u=1,s=0,c=0,l=0,f=0,h="",p=this._mappings.toArray(),g=0,d=p.length;g0){if(!o.compareByGeneratedPositionsInflated(t,p[g-1]))continue;e+=","}e+=n.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=n.encode(i-f),f=i,e+=n.encode(t.originalLine-1-c),c=t.originalLine-1,e+=n.encode(t.originalColumn-s),s=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=n.encode(r-l),l=r)),h+=e}return h},u.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},u.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},u.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.x=u},683(e,t,r){var n=r(41).x,o=r(251),i=/(\r?\n)/,a="$$$isSourceNode$$$";function u(e,t,r,n,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==o?null:o,this[a]=!0,null!=n&&this.add(n)}u.fromStringWithSourceMap=function(e,t,r){var n=new u,a=e.split(i),s=0,c=function(){return e()+(e()||"");function e(){return s=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},u.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r0){for(t=[],r=0;r=0;l--)"."===(a=s[l])?s.splice(l,1):".."===a?c++:c>0&&(""===a?(s.splice(l+1,c),c=0):(s.splice(l,2),c--));return""===(r=s.join("/"))&&(r=u?"/":"."),n?(n.path=r,i(n)):r}function u(e,t){""===e&&(e="."),""===t&&(t=".");var r=o(t),u=o(e);if(u&&(e=u.path||"/"),r&&!r.scheme)return u&&(r.scheme=u.scheme),i(r);if(r||t.match(n))return t;if(u&&!u.host&&!u.path)return u.host=t,i(u);var s="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return u?(u.path=s,i(u)):s}t.urlParse=o,t.urlGenerate=i,t.normalize=a,t.join=u,t.isAbsolute=function(e){return"/"===e.charAt(0)||r.test(e)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var s=!("__proto__"in Object.create(null));function c(e){return e}function l(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function f(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=s?c:function(e){return l(e)?"$"+e:e},t.fromSetString=s?c:function(e){return l(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,r){var n=f(e.source,t.source);return 0!==n||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)||r||0!==(n=e.generatedColumn-t.generatedColumn)||0!==(n=e.generatedLine-t.generatedLine)?n:f(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n||0!==(n=e.generatedColumn-t.generatedColumn)||r||0!==(n=f(e.source,t.source))||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)?n:f(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r||0!==(r=e.generatedColumn-t.generatedColumn)||0!==(r=f(e.source,t.source))||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)?r:f(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},t.computeSourceURL=function(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var n=o(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var s=n.path.lastIndexOf("/");s>=0&&(n.path=n.path.substring(0,s+1))}t=u(i(n),t)}return a(t)}},665(e,t,r){r(41).x,t.SourceMapConsumer=r(446).SourceMapConsumer,r(683)},896(e){"use strict";e.exports=require("fs")},611(e){"use strict";e.exports=require("http")},692(e){"use strict";e.exports=require("https")},928(e){"use strict";e.exports=require("path")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}return r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r(503)})()); +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.GeotabApi=t():e.GeotabApi=t()}(Object("undefined"!=typeof self?self:this),()=>(()=>{var e={319(e,t,r){function n(){"use strict";n=function(){return t};var e,t={},r=Object.prototype,o=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function f(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,r){return e[t]=r}}function h(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,a=Object.create(o.prototype),u=new M(n||[]);return i(a,"_invoke",{value:k(e,r,u)}),a}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var g="suspendedStart",d="suspendedYield",m="executing",v="completed",y={};function w(){}function b(){}function _(){}var L={};f(L,s,function(){return this});var S=Object.getPrototypeOf,x=S&&S(S(R([])));x&&x!==r&&o.call(x,s)&&(L=x);var E=_.prototype=w.prototype=Object.create(L);function C(e){["next","throw","return"].forEach(function(t){f(e,t,function(e){return this._invoke(t,e)})})}function O(e,t){function r(n,i,u,s){var c=p(e[n],e,i);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==a(f)&&o.call(f,"__await")?t.resolve(f.__await).then(function(e){r("next",e,u,s)},function(e){r("throw",e,u,s)}):t.resolve(f).then(function(e){l.value=e,u(l)},function(e){return r("throw",e,u,s)})}s(c.arg)}var n;i(this,"_invoke",{value:function(e,o){function i(){return new t(function(t,n){r(e,o,t,n)})}return n=n?n.then(i,i):i()}})}function k(t,r,n){var o=g;return function(i,a){if(o===m)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=A(u,n);if(s){if(s===y)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===g)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=m;var c=p(t,r,n);if("normal"===c.type){if(o=n.done?v:d,c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=v,n.method="throw",n.arg=c.arg)}}}function A(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=p(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function M(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function R(t){if(t||""===t){var r=t[s];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,i=function r(){for(;++n=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=o.call(a,"catchLoc"),c=o.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&o.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function o(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function i(e){return function(){var t=this,r=arguments;return new Promise(function(n,i){var a=e.apply(t,r);function u(e){o(a,n,i,u,s,"next",e)}function s(e){o(a,n,i,u,s,"throw",e)}u(void 0)})}}function a(e){return a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a(e)}function u(e,t){for(var r=0;r=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function i(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function a(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function u(e){i(a,n,o,u,s,"next",e)}function s(e){i(a,n,o,u,s,"throw",e)}u(void 0)})}}function u(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._helper=new c(t,r),this.authenticate=this.authenticate.bind(this)},t=[{key:"authenticate",value:(f=a(o().mark(function e(t,r){var n,i;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!t||r){e.next=2;break}throw new Error("If callbackSuccess is supplied so must callbackError");case 2:if(n={database:this._helper.database,userName:this._helper.userName,password:this._helper.password},i=this.callimpl("Authenticate",n,t,r),t||r){e.next=6;break}return e.abrupt("return",i);case 6:case"end":return e.stop()}},e,this)})),function(e,t){return f.apply(this,arguments)})},{key:"call",value:(l=a(o().mark(function e(t,r,n,i){var a;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!n||i){e.next=2;break}throw new Error("If callbackSuccess is supplied so must callbackError");case 2:if(a=this.callimpl(t,r,n,i),n||i){e.next=5;break}return e.abrupt("return",a);case 5:case"end":return e.stop()}},e,this)})),function(e,t,r,n){return l.apply(this,arguments)})},{key:"callimpl",value:(s=a(o().mark(function e(t,r,n,i){var a,u;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._helper.sessionId){e.next=4;break}r.credentials={database:this._helper.database,sessionId:this._helper.sessionId,userName:this._helper.userName},e.next=19;break;case 4:if(!this._helper.rememberMe||"Authenticate"===t||this._helper.sessionId){e.next=16;break}return e.next=7,this._helper.getLocalCredentials();case 7:if(!(a=e.sent)){e.next=12;break}r.credentials=a,e.next=14;break;case 12:return e.next=14,this._helper.getAuthentication(this.authenticate,this._helper.rememberMe).then(function(e){r.credentials=e});case 14:e.next=19;break;case 16:if("Authenticate"===t||this._helper.rememberMe||this._helper.sessionId){e.next=19;break}return e.next=19,this._helper.getAuthentication(this.authenticate,this._helper.rememberMe).then(function(e){r.credentials=e});case 19:return u=this._helper.sendHttpCall(t,r,n,i,this.authenticate,this._helper.rememberMe),this._helper.fullResponse||(u=this._helper.errorHandle(u,i),u=this._helper.parseHttpResponse(u)),e.abrupt("return",u);case 22:case"end":return e.stop()}},e,this)})),function(e,t,r,n){return s.apply(this,arguments)})},{key:"multiCall",value:(i=a(o().mark(function e(t,r,n){var i,a;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!r||n){e.next=2;break}throw new Error("If callbackSuccess is supplied so must callbackError");case 2:if(i=t.map(function(e){var t=e[1];return{method:e[0],params:t}}),a=this.callimpl("ExecuteMultiCall",{calls:i},r,n),r||n){e.next=6;break}return e.abrupt("return",a);case 6:case"end":return e.stop()}},e,this)})),function(e,t,r){return i.apply(this,arguments)})},{key:"getSession",value:(n=a(o().mark(function e(t,r){var n,i,a=this;return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._helper.getLocalCredentials();case 2:if(n=e.sent,r||!this._helper.rememberMe){e.next=17;break}if(!n){e.next=14;break}if(i=this._helper.fullResponse?{data:{result:{credentials:n,path:this._helper.server}}}:{credentials:n,path:this._helper.server},!t){e.next=11;break}return 1===t.length?t(i):2===t.length&&t(n.credentials,this._helper.server),e.abrupt("return");case 11:return e.abrupt("return",i);case 12:e.next=15;break;case 14:return e.abrupt("return",this.authenticate(t));case 15:e.next=27;break;case 17:if(n=this.authenticate(),!t){e.next=26;break}return e.next=21,n.then(function(e){return a._helper.fullResponse?e.data.result.credentials:e});case 21:n=e.sent,i=this._helper.fullResponse?{data:{result:{credentials:n,path:this._helper.server}}}:{credentials:n.credentials,path:this._helper.server},1===t.length?t(i):2===t.length&&t(n.credentials,this._helper.server),e.next=27;break;case 26:return e.abrupt("return",n);case 27:case"end":return e.stop()}},e,this)})),function(e,t){return n.apply(this,arguments)})},{key:"forget",value:(r=a(o().mark(function e(){return o().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this._helper.clearLocalCredentials(),e.abrupt("return",this.authenticate());case 2:case"end":return e.stop()}},e,this)})),function(){return r.apply(this,arguments)})}],t&&u(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t,r,n,i,s,l,f}();t.A=l},55(e,t,r){function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function o(){"use strict";o=function(){return t};var e,t={},r=Object.prototype,i=r.hasOwnProperty,a=Object.defineProperty||function(e,t,r){e[t]=r.value},u="function"==typeof Symbol?Symbol:{},s=u.iterator||"@@iterator",c=u.asyncIterator||"@@asyncIterator",l=u.toStringTag||"@@toStringTag";function f(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{f({},"")}catch(e){f=function(e,t,r){return e[t]=r}}function h(e,t,r,n){var o=t&&t.prototype instanceof w?t:w,i=Object.create(o.prototype),u=new M(n||[]);return a(i,"_invoke",{value:k(e,r,u)}),i}function p(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=h;var g="suspendedStart",d="suspendedYield",m="executing",v="completed",y={};function w(){}function b(){}function _(){}var L={};f(L,s,function(){return this});var S=Object.getPrototypeOf,x=S&&S(S(R([])));x&&x!==r&&i.call(x,s)&&(L=x);var E=_.prototype=w.prototype=Object.create(L);function C(e){["next","throw","return"].forEach(function(t){f(e,t,function(e){return this._invoke(t,e)})})}function O(e,t){function r(o,a,u,s){var c=p(e[o],e,a);if("throw"!==c.type){var l=c.arg,f=l.value;return f&&"object"==n(f)&&i.call(f,"__await")?t.resolve(f.__await).then(function(e){r("next",e,u,s)},function(e){r("throw",e,u,s)}):t.resolve(f).then(function(e){l.value=e,u(l)},function(e){return r("throw",e,u,s)})}s(c.arg)}var o;a(this,"_invoke",{value:function(e,n){function i(){return new t(function(t,o){r(e,n,t,o)})}return o=o?o.then(i,i):i()}})}function k(t,r,n){var o=g;return function(i,a){if(o===m)throw Error("Generator is already running");if(o===v){if("throw"===i)throw a;return{value:e,done:!0}}for(n.method=i,n.arg=a;;){var u=n.delegate;if(u){var s=A(u,n);if(s){if(s===y)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===g)throw o=v,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=m;var c=p(t,r,n);if("normal"===c.type){if(o=n.done?v:d,c.arg===y)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(o=v,n.method="throw",n.arg=c.arg)}}}function A(t,r){var n=r.method,o=t.iterator[n];if(o===e)return r.delegate=null,"throw"===n&&t.iterator.return&&(r.method="return",r.arg=e,A(t,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),y;var i=p(o,t.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[t.resultName]=a.value,r.next=t.nextLoc,"return"!==r.method&&(r.method="next",r.arg=e),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function P(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function j(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function M(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(P,this),this.reset(!0)}function R(t){if(t||""===t){var r=t[s];if(r)return r.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var o=-1,a=function r(){for(;++o=0;--o){var a=this.tryEntries[o],u=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var s=i.call(a,"catchLoc"),c=i.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),j(r),y}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;j(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(t,r,n){return this.delegate={iterator:R(t),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=e),y}},t}function i(e,t,r,n,o,i,a){try{var u=e[i](a),s=u.value}catch(e){return void r(e)}u.done?t(s):Promise.resolve(s).then(n,o)}function a(e){return function(){var t=this,r=arguments;return new Promise(function(n,o){var a=e.apply(t,r);function u(e){i(a,n,o,u,s,"next",e)}function s(e){i(a,n,o,u,s,"throw",e)}u(void 0)})}}function u(e,t){for(var r=0;r>>=0;var o=e.byteLength-t;if(o<0)throw new RangeError("'offset' is out of bounds");if(void 0===n)n=o;else if((n>>>=0)>o)throw new RangeError("'length' is out of bounds");return r?Buffer.from(e.slice(t,t+n)):new Buffer(new Uint8Array(e.slice(t,t+n)))}(e,n,o):"string"==typeof e?function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!Buffer.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');return r?Buffer.from(e,t):new Buffer(e,t)}(e,n):r?Buffer.from(e):new Buffer(e);var i}},452(e){var t=function(e){"use strict";var t,r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var i=t&&t.prototype instanceof v?t:v,a=Object.create(i.prototype),u=new P(n||[]);return o(a,"_invoke",{value:C(e,r,u)}),a}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var h="suspendedStart",p="suspendedYield",g="executing",d="completed",m={};function v(){}function y(){}function w(){}var b={};c(b,a,function(){return this});var _=Object.getPrototypeOf,L=_&&_(_(j([])));L&&L!==r&&n.call(L,a)&&(b=L);var S=w.prototype=v.prototype=Object.create(b);function x(e){["next","throw","return"].forEach(function(t){c(e,t,function(e){return this._invoke(t,e)})})}function E(e,t){function r(o,i,a,u){var s=f(e[o],e,i);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then(function(e){r("next",e,a,u)},function(e){r("throw",e,a,u)}):t.resolve(l).then(function(e){c.value=e,a(c)},function(e){return r("throw",e,a,u)})}u(s.arg)}var i;o(this,"_invoke",{value:function(e,n){function o(){return new t(function(t,o){r(e,n,t,o)})}return i=i?i.then(o,o):o()}})}function C(e,t,r){var n=h;return function(o,i){if(n===g)throw new Error("Generator is already running");if(n===d){if("throw"===o)throw i;return M()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var u=O(a,r);if(u){if(u===m)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===h)throw n=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=g;var s=f(e,t,r);if("normal"===s.type){if(n=r.done?d:p,s.arg===m)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=d,r.method="throw",r.arg=s.arg)}}}function O(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,O(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),m;var i=f(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,m;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,m):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,m)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function j(e){if(e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function r(){for(;++o=0;--i){var a=this.tryEntries[i],u=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),c=n.call(a,"finallyLoc");if(s&&c){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),A(r),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;A(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:j(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),m}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}},345(e,t,r){e=r.nmd(e);var n,o=r(665).SourceMapConsumer,i=r(928);try{(n=r(896)).existsSync&&n.readFileSync||(n=null)}catch(e){}var a=r(746);function u(e,t){return e.require(t)}var s=!1,c=!1,l=!1,f="auto",h={},p={},g=/^data:application\/json[^,]+base64,/,d=[],m=[];function v(){return"browser"===f||"node"!==f&&"undefined"!=typeof window&&"function"==typeof XMLHttpRequest&&!(window.require&&window.module&&window.process&&"renderer"===window.process.type)}function y(e){return function(t){for(var r=0;r";var r=this.getLineNumber();if(null!=r){t+=":"+r;var n=this.getColumnNumber();n&&(t+=":"+n)}}var o="",i=this.getFunctionName(),a=!0,u=this.isConstructor();if(this.isToplevel()||u)u?o+="new "+(i||""):i?o+=i:(o+=t,a=!1);else{var s=this.getTypeName();"[object Object]"===s&&(s="null");var c=this.getMethodName();i?(s&&0!=i.indexOf(s)&&(o+=s+"."),o+=i,c&&i.indexOf("."+c)!=i.length-c.length-1&&(o+=" [as "+c+"]")):o+=s+"."+(c||"")}return a&&(o+=" ("+t+")"),o}function E(e){var t={};return Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(function(r){t[r]=/^(?:is|get)/.test(r)?function(){return e[r].call(e)}:e[r]}),t.toString=x,t}function C(e,t){if(void 0===t&&(t={nextPosition:null,curPosition:null}),e.isNative())return t.curPosition=null,e;var r=e.getFileName()||e.getScriptNameOrSourceURL();if(r){var n=e.getLineNumber(),o=e.getColumnNumber()-1,i=/^v(10\.1[6-9]|10\.[2-9][0-9]|10\.[0-9]{3,}|1[2-9]\d*|[2-9]\d|\d{3,}|11\.11)/.test("object"==typeof process&&null!==process?process.version:"")?0:62;1===n&&o>i&&!v()&&!e.isEval()&&(o-=i);var a=L({source:r,line:n,column:o});t.curPosition=a;var u=(e=E(e)).getFunctionName;return e.getFunctionName=function(){return null==t.nextPosition?u():t.nextPosition.name||u()},e.getFileName=function(){return a.source},e.getLineNumber=function(){return a.line},e.getColumnNumber=function(){return a.column+1},e.getScriptNameOrSourceURL=function(){return a.source},e}var s=e.isEval()&&e.getEvalOrigin();return s?(s=S(s),(e=E(e)).getEvalOrigin=function(){return s},e):e}function O(e,t){l&&(h={},p={});for(var r=(e.name||"Error")+": "+(e.message||""),n={nextPosition:null,curPosition:null},o=[],i=t.length-1;i>=0;i--)o.push("\n at "+C(t[i],n)),n.nextPosition=n.curPosition;return n.curPosition=n.nextPosition=null,r+o.reverse().join("")}function k(e){var t=/\n at [^(]+ \((.*):(\d+):(\d+)\)/.exec(e.stack);if(t){var r=t[1],o=+t[2],i=+t[3],a=h[r];if(!a&&n&&n.existsSync(r))try{a=n.readFileSync(r,"utf8")}catch(e){a=""}if(a){var u=a.split(/(?:\r\n|\r|\n)/)[o-1];if(u)return r+":"+o+"\n"+u+"\n"+new Array(i).join(" ")+"^"}}return null}m.push(function(e){var t,r=function(e){var t;if(v())try{var r=new XMLHttpRequest;r.open("GET",e,!1),r.send(null),t=4===r.readyState?r.responseText:null;var n=r.getResponseHeader("SourceMap")||r.getResponseHeader("X-SourceMap");if(n)return n}catch(e){}t=w(e);for(var o,i,a=/(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/gm;i=a.exec(t);)o=i;return o?o[1]:null}(e);if(!r)return null;if(g.test(r)){var n=r.slice(r.indexOf(",")+1);t=a(n,"base64").toString(),r=e}else r=b(e,r),t=w(r);return t?{url:r,map:t}:null});var A=d.slice(0),P=m.slice(0);t.wrapCallSite=C,t.getErrorSource=k,t.mapSourcePosition=L,t.retrieveSourceMap=_,t.install=function(t){if((t=t||{}).environment&&(f=t.environment,-1===["node","browser","auto"].indexOf(f)))throw new Error("environment "+f+" was unknown. Available options are {auto, browser, node}");if(t.retrieveFile&&(t.overrideRetrieveFile&&(d.length=0),d.unshift(t.retrieveFile)),t.retrieveSourceMap&&(t.overrideRetrieveSourceMap&&(m.length=0),m.unshift(t.retrieveSourceMap)),t.hookRequire&&!v()){var r=u(e,"module"),n=r.prototype._compile;n.__sourceMapSupport||(r.prototype._compile=function(e,t){return h[t]=e,p[t]=void 0,n.call(this,e,t)},r.prototype._compile.__sourceMapSupport=!0)}if(l||(l="emptyCacheBetweenOperations"in t&&t.emptyCacheBetweenOperations),s||(s=!0,Error.prepareStackTrace=O),!c){var o=!("handleUncaughtExceptions"in t)||t.handleUncaughtExceptions;try{!1===u(e,"worker_threads").isMainThread&&(o=!1)}catch(e){}o&&"object"==typeof process&&null!==process&&"function"==typeof process.on&&(c=!0,i=process.emit,process.emit=function(e){if("uncaughtException"===e){var t=arguments[1]&&arguments[1].stack,r=this.listeners(e).length>0;if(t&&!r)return o=k(n=arguments[1]),(a=function(){if("object"==typeof process&&null!==process)return process.stderr}())&&a._handle&&a._handle.setBlocking&&a._handle.setBlocking(!0),o&&(console.error(),console.error(o)),console.error(n.stack),void("object"==typeof process&&null!==process&&"function"==typeof process.exit&&process.exit(1))}var n,o,a;return i.apply(this,arguments)})}var i},t.resetRetrieveHandlers=function(){d.length=0,m.length=0,d=A.slice(0),m=P.slice(0),_=y(m),w=y(d)}},735(e,t,r){var n=r(251),o=Object.prototype.hasOwnProperty,i="undefined"!=typeof Map;function a(){this._array=[],this._set=i?new Map:Object.create(null)}a.fromArray=function(e,t){for(var r=new a,n=0,o=e.length;n=0)return t}else{var r=n.toSetString(e);if(o.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},a.prototype.at=function(e){if(e>=0&&e>>=5)>0&&(t|=32),r+=n.encode(t)}while(o>0);return r},t.decode=function(e,t,r){var o,i,a,u,s=e.length,c=0,l=0;do{if(t>=s)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=n.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));o=!!(32&i),c+=(i&=31)<>1,1&~a?u:-u),r.rest=t}},364(e,t){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e0?n-s>1?r(s,n,o,i,a,u):u==t.LEAST_UPPER_BOUND?n1?r(e,s,o,i,a,u):u==t.LEAST_UPPER_BOUND?s:e<0?-1:e}t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,n,o,i){if(0===n.length)return-1;var a=r(-1,n.length,e,n,o,i||t.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===o(n[a],n[a-1],!0);)--a;return a}},302(e,t,r){var n=r(251);function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}o.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},o.prototype.add=function(e){var t,r,o,i,a,u;r=e,o=(t=this._last).generatedLine,i=r.generatedLine,a=t.generatedColumn,u=r.generatedColumn,i>o||i==o&&u>=a||n.compareByGeneratedPositionsInflated(t,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(n.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.P=o},801(e,t){function r(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function n(e,t,o,i){if(o=0){var u=this._originalMappings[a];if(void 0===e.column)for(var s=u.originalLine;u&&u.originalLine===s;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++a];else for(var c=u.originalColumn;u&&u.originalLine===t&&u.originalColumn==c;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++a]}return i},t.SourceMapConsumer=s,c.prototype=Object.create(s.prototype),c.prototype.consumer=s,c.prototype._findSourceIndex=function(e){var t,r=e;if(null!=this.sourceRoot&&(r=n.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(t=0;t1&&(r.source=d+i[1],d+=i[1],r.originalLine=p+i[2],p=r.originalLine,r.originalLine+=1,r.originalColumn=g+i[3],g=r.originalColumn,i.length>4&&(r.name=m+i[4],m+=i[4])),L.push(r),"number"==typeof r.originalLine&&_.push(r)}u(L,n.compareByGeneratedPositionsDeflated),this.__generatedMappings=L,u(_,n.compareByOriginalPositions),this.__originalMappings=_},c.prototype._findMapping=function(e,t,r,n,i,a){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return o.search(e,t,i,a)},c.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===t.generatedLine){var i=n.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=n.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var a=n.getArg(o,"name",null);return null!==a&&(a=this._names.at(a)),{source:i,line:n.getArg(o,"originalLine",null),column:n.getArg(o,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},c.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e})},c.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var o,i=e;if(null!=this.sourceRoot&&(i=n.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=n.urlParse(this.sourceRoot))){var a=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},c.prototype.generatedPositionFor=function(e){var t=n.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:n.getArg(e,"line"),originalColumn:n.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",n.compareByOriginalPositions,n.getArg(e,"bias",s.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:n.getArg(i,"generatedLine",null),column:n.getArg(i,"generatedColumn",null),lastColumn:n.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},f.prototype=Object.create(s.prototype),f.prototype.constructor=s,f.prototype._version=3,Object.defineProperty(f.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},u.prototype._serializeMappings=function(){for(var e,t,r,i,a=0,u=1,s=0,c=0,l=0,f=0,h="",p=this._mappings.toArray(),g=0,d=p.length;g0){if(!o.compareByGeneratedPositionsInflated(t,p[g-1]))continue;e+=","}e+=n.encode(t.generatedColumn-a),a=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=n.encode(i-f),f=i,e+=n.encode(t.originalLine-1-c),c=t.originalLine-1,e+=n.encode(t.originalColumn-s),s=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=n.encode(r-l),l=r)),h+=e}return h},u.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},u.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},u.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.x=u},683(e,t,r){var n=r(41).x,o=r(251),i=/(\r?\n)/,a="$$$isSourceNode$$$";function u(e,t,r,n,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==o?null:o,this[a]=!0,null!=n&&this.add(n)}u.fromStringWithSourceMap=function(e,t,r){var n=new u,a=e.split(i),s=0,c=function(){return e()+(e()||"");function e(){return s=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},u.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r0){for(t=[],r=0;r=0;l--)"."===(a=s[l])?s.splice(l,1):".."===a?c++:c>0&&(""===a?(s.splice(l+1,c),c=0):(s.splice(l,2),c--));return""===(r=s.join("/"))&&(r=u?"/":"."),n?(n.path=r,i(n)):r}function u(e,t){""===e&&(e="."),""===t&&(t=".");var r=o(t),u=o(e);if(u&&(e=u.path||"/"),r&&!r.scheme)return u&&(r.scheme=u.scheme),i(r);if(r||t.match(n))return t;if(u&&!u.host&&!u.path)return u.host=t,i(u);var s="/"===t.charAt(0)?t:a(e.replace(/\/+$/,"")+"/"+t);return u?(u.path=s,i(u)):s}t.urlParse=o,t.urlGenerate=i,t.normalize=a,t.join=u,t.isAbsolute=function(e){return"/"===e.charAt(0)||r.test(e)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var s=!("__proto__"in Object.create(null));function c(e){return e}function l(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function f(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=s?c:function(e){return l(e)?"$"+e:e},t.fromSetString=s?c:function(e){return l(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,r){var n=f(e.source,t.source);return 0!==n||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)||r||0!==(n=e.generatedColumn-t.generatedColumn)||0!==(n=e.generatedLine-t.generatedLine)?n:f(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n||0!==(n=e.generatedColumn-t.generatedColumn)||r||0!==(n=f(e.source,t.source))||0!==(n=e.originalLine-t.originalLine)||0!==(n=e.originalColumn-t.originalColumn)?n:f(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r||0!==(r=e.generatedColumn-t.generatedColumn)||0!==(r=f(e.source,t.source))||0!==(r=e.originalLine-t.originalLine)||0!==(r=e.originalColumn-t.originalColumn)?r:f(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},t.computeSourceURL=function(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var n=o(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var s=n.path.lastIndexOf("/");s>=0&&(n.path=n.path.substring(0,s+1))}t=u(i(n),t)}return a(t)}},665(e,t,r){r(41).x,t.SourceMapConsumer=r(446).SourceMapConsumer,r(683)},896(e){"use strict";e.exports=require("fs")},611(e){"use strict";e.exports=require("http")},692(e){"use strict";e.exports=require("https")},928(e){"use strict";e.exports=require("path")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var i=t[n]={id:n,loaded:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.loaded=!0,i.exports}return r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r(503)})()); //# sourceMappingURL=api.min.js.map \ No newline at end of file diff --git a/dist/api.min.js.LICENSE.txt b/dist/api.min.js.LICENSE.txt index 09a12d9..d772b87 100644 --- a/dist/api.min.js.LICENSE.txt +++ b/dist/api.min.js.LICENSE.txt @@ -1,5 +1,5 @@ -/*! mg-api-js - v2.0.1 - * Release on: 2020-04-27 +/*! mg-api-js - v3.0.2 + * Release on: 2026-04-13 * Copyright (c) 2020 Geotab Inc * Licensed MIT */ diff --git a/dist/api.min.js.map b/dist/api.min.js.map index b1b204d..d36aae8 100644 --- a/dist/api.min.js.map +++ b/dist/api.min.js.map @@ -1 +1 @@ -{"version":3,"file":"api.min.js","mappings":"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","sources":["webpack://GeotabApi/webpack/universalModuleDefinition","webpack://GeotabApi/./lib/ApiHelper.js","webpack://GeotabApi/./lib/GeotabApi.js","webpack://GeotabApi/./lib/HttpCall.js","webpack://GeotabApi/./lib/LocalStorageCredentialStore.js","webpack://GeotabApi/./lib/LocalStorageMock.js","webpack://GeotabApi/./lib/api.js","webpack://GeotabApi/./node_modules/buffer-from/index.js","webpack://GeotabApi/./node_modules/regenerator-runtime/runtime.js","webpack://GeotabApi/./node_modules/source-map-support/source-map-support.js","webpack://GeotabApi/./node_modules/source-map/lib/array-set.js","webpack://GeotabApi/./node_modules/source-map/lib/base64-vlq.js","webpack://GeotabApi/./node_modules/source-map/lib/base64.js","webpack://GeotabApi/./node_modules/source-map/lib/binary-search.js","webpack://GeotabApi/./node_modules/source-map/lib/mapping-list.js","webpack://GeotabApi/./node_modules/source-map/lib/quick-sort.js","webpack://GeotabApi/./node_modules/source-map/lib/source-map-consumer.js","webpack://GeotabApi/./node_modules/source-map/lib/source-map-generator.js","webpack://GeotabApi/./node_modules/source-map/lib/source-node.js","webpack://GeotabApi/./node_modules/source-map/lib/util.js","webpack://GeotabApi/./node_modules/source-map/source-map.js","webpack://GeotabApi/external node-commonjs \"fs\"","webpack://GeotabApi/external node-commonjs \"http\"","webpack://GeotabApi/external node-commonjs \"https\"","webpack://GeotabApi/external node-commonjs \"path\"","webpack://GeotabApi/webpack/bootstrap","webpack://GeotabApi/webpack/runtime/node module decorator","webpack://GeotabApi/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GeotabApi\"] = factory();\n\telse\n\t\troot[\"GeotabApi\"] = factory();\n})(Object(typeof self !== \"undefined\" ? self : this), () => {\nreturn ","const LocalStorageCredentialStore = require('./LocalStorageCredentialStore.js').default;\nconst HttpCall = require('./HttpCall.js').default;\n\n/**\n * Helper method for GeotabApi.\n * Allows logic to remain somewhat encapsulated from the user\n */\nclass ApiHelper {\n\n constructor(authentication, options) {\n if (typeof authentication !== 'object') {\n throw new Error('authentication object not provided - must provide an authentication object to instantiate GeotabApi');\n }\n this.options = {\n fullResponse: typeof options.fullResponse === 'undefined' ? false : options.fullResponse,\n rememberMe: typeof options.rememberMe === 'undefined' ? true : options.rememberMe,\n timeout: typeof options.timeout === 'undefined' ? 180 : options.timeout,\n newCredentialStore: typeof options.newCredentialStore === 'undefined' ? false : options.newCredentialStore\n }\n this.credentialStore = this.createStore(options.newCredentialStore);\n if (authentication.credentials.sessionId) {\n // Throwing an error if path isn't provided when using sessionID\n if (typeof authentication.path === 'undefined') {\n throw new Error('Path not provided - Must provide server path if providing sessionId in authentication object');\n }\n if (this.options.rememberMe) {\n this.credentialStore.set(authentication.credentials, authentication.path);\n }\n }\n this.cred = authentication.credentials;\n this.server = authentication.path;\n }\n\n /**\n * Getters/Setters\n * Helps reduce code when calling from GeotabApi\n */\n get sessionId() {\n return this.cred.sessionId;\n }\n\n get database() {\n return this.cred.database;\n }\n\n get userName() {\n return this.cred.userName;\n }\n\n get password() {\n return this.cred.password;\n }\n\n get rememberMe() {\n return this.options.rememberMe;\n }\n\n get fullResponse() {\n return this.options.fullResponse;\n }\n\n /**\n * Creates the credentialStore. Either an object provided by the user,\n * created as a mock localStorage object (node) or a reference to\n * the actual localStorage (browser)\n * @param {object} newStore an Override credentialStore\n */\n createStore(newStore) {\n return newStore || new LocalStorageCredentialStore();\n }\n\n /**\n * checks the credentialStore for stored credentials\n * @returns false if no store, credentials object if there are credentials\n */\n getLocalCredentials() {\n let store = this.credentialStore.get();\n if (store) {\n if (store.server) {\n this.server = store.server;\n }\n return store.credentials;\n }\n return store;\n }\n\n /**\n * Sets the local credentials\n * @param {object} result credentials object using result of a promise\n */\n setLocalCredentials(result, server) {\n this.credentialStore.set(result.credentials, server);\n }\n\n clearLocalCredentials() {\n this.credentialStore.clear();\n }\n\n /**\n * Gets and stores authentication response using GeotabApi.authenticate()\n * @param {function} authenticate API authentication method - context binded to GeotabApi\n * @param {function} callbackError optional callback error for unsuccessful authentications\n * @param {boolean} rememberMe stores authentication once received\n */\n async getAuthentication(authenticate, rememberMe) {\n return authenticate().then(response => {\n // Response changes based on error handling.\n let data = response.data ? response.data.result : response;\n if (data.path !== 'ThisServer') {\n this.server = data.path;\n }\n // Successful authentication\n if (rememberMe) {\n this.setLocalCredentials(data.credentials, this.server);\n }\n this.cred.sessionId = data.credentials.sessionId;\n return data.credentials;\n });\n }\n\n /**\n * When the user doesn't have fullResposne enabled, we put some promises in front of the call\n * to return only data.result to the user\n * @param {Promise} call Http call\n */\n parseHttpResponse(call) {\n return call\n .then(response => {\n // Error handling has already taken errors out in either errorHandle() or HttpCall.send()\n if (response.data.result) {\n return response.data.result;\n }\n return response;\n });\n }\n\n /**\n * Error handling - only called if fullresponse isn't enabled, and if the user hasn't provided a callback\n * @param {Promise} call Http call\n * @param {function} callbackError Optional callback for unsuccessful calls\n */\n errorHandle(call, callbackError) {\n function dispatchError(message, errorDetails) {\n let error = new Error(message);\n if (callbackError) {\n callbackError(error.toString(), errorDetails || error);\n } else {\n throw error;\n }\n }\n // User hasn't asked for the full http object, so we should error check\n return call\n .then(response => {\n if (response.status && response.status !== 200) {\n dispatchError(`Response ${response.status} - ${response.statusText}`, null);\n }\n // node http/https returns a different response schema\n if (response.statusCode && response.statusCode !== 200) {\n dispatchError(`Response ${response.statusCode} - ${response.statusMessage}`, null);\n }\n return response;\n })\n .then(response => {\n if (response.data && response.data.error) {\n dispatchError(`${response.data.error.data.type}: ${response.data.error.message}`, response.data.error);\n }\n return response;\n });\n }\n\n /**\n * Creates a new HttpCall and returns it to the user. If the call fails,\n * and the call isn't an authentication, the call will attempt to\n * refresh the credentials\n *\n * @param {string} method method name for the API call\n * @param {Object} params method's parameters\n * @param {function} callbackSuccess Optional callback for successful calls\n * @param {function} callbackError Optional callback for unsuccessful calls\n * @param {function} authenticate authentication function. Context binded to GeotabApi\n * @param {boolean} rememberMe should store authentication results\n */\n async sendHttpCall(method, params, callbackSuccess, callbackError, authenticate, rememberMe) {\n let call = new HttpCall(method, this.server, params, callbackSuccess).send(this.options.timeout);\n // We don't want to continue retrying if we fail authentication\n if (method !== 'Authenticate') {\n call = call.then(async response => {\n let data = response.data;\n // Checking for a failed authentication\n if (data.error) {\n if (data.error.data.type === 'InvalidUserException') {\n // Doesn't hurt to clear even if we're not remembering/storing them\n this.clearLocalCredentials();\n // Assuming there was a session timeout, re-running authentication\n await this.getAuthentication(authenticate, rememberMe)\n .then(auth => {\n params.credentials = auth;\n });\n return new HttpCall(method, this.server, params, callbackSuccess).send(this.options.timeout);\n }\n }\n return response;\n })\n } else {\n call = call.then(response => {\n if (response.data.result) {\n let server = response.data.result.path === 'ThisServer' ? this.server : response.data.result.path;\n this.server = server;\n if (this.rememberMe) {\n this.setLocalCredentials(response.data.result, server);\n }\n }\n return response;\n });\n }\n return call;\n }\n}\n\nexports.default = ApiHelper;\n","const ApiHelper = require('./ApiHelper.js').default;\n\n/**\n * Entrypoint to API. Separate class is used to expose \"public\"\n * methods only to the user - Babel currently doesn't support\n * ES10 access modifiers\n */\nclass GeotabApi {\n\n /**\n * Constructor for GeotabApi\n *\n * @param {Object} authentication Holds credentials: {\n * userName: '',\n * password/sessionId: '',\n * database: ''\n * }\n* path: '',\n * @param {*} newOptions overrides default options\n */\n constructor(authentication, newOptions = {}) {\n this._helper = new ApiHelper(authentication, newOptions);\n // Because we send the authenticate method to the helper, we bind it's context here\n this.authenticate = this.authenticate.bind(this);\n }\n\n /**\n * Authenticates the user against the server. Gets the sessionId and other relevant session information\n *\n * @param {function} callbackSuccess optional callback for successful authentications\n * @param {function} callbackError optional callback for unsuccessful authentications\n * @returns {promise} Call promise - result will be either response.data.error or response.data.result\n */\n async authenticate(callbackSuccess, callbackError) {\n if (callbackSuccess && !callbackError) {\n throw new Error(`If callbackSuccess is supplied so must callbackError`);\n }\n // We will never authenticate with a sessionID. Authentication provides the sessionId\n let options = {\n database: this._helper.database,\n userName: this._helper.userName,\n password: this._helper.password\n }\n let result = this.callimpl('Authenticate', options, callbackSuccess, callbackError);\n\n if (!callbackSuccess && !callbackError) {\n return result;\n }\n\n }\n\n /**\n * Constructs an API call to MyGeotab\n *\n * @param {string} method method name for the API call\n * @param {Object} params method's parameters\n * @param {function} callbackSuccess Optional callback for successful calls\n * @param {function} callbackError Optional callback for unsuccessful calls\n * @returns {promise} an http/fetch promise which will resolve to either data.error or data.result\n */\n async call(method, params, callbackSuccess, callbackError) {\n if (callbackSuccess && !callbackError) {\n throw new Error(`If callbackSuccess is supplied so must callbackError`);\n }\n\n let result = this.callimpl(method, params, callbackSuccess, callbackError);\n\n if (!callbackSuccess && !callbackError) {\n return result;\n }\n }\n\n /**\n * Constructs an API call to MyGeotab\n *\n * @param {string} method method name for the API call\n * @param {Object} params method's parameters\n * @param {function} callbackSuccess Optional callback for successful calls\n * @param {function} callbackError Optional callback for unsuccessful calls\n * @returns {promise} an http/fetch promise which will resolve to either data.error or data.result\n */\n async callimpl(method, params, callbackSuccess, callbackError) {\n // Defining our credentials\n if (this._helper.sessionId) {\n params.credentials = {\n database: this._helper.database,\n sessionId: this._helper.sessionId,\n userName: this._helper.userName\n }\n } else if (this._helper.rememberMe && method !== 'Authenticate' && !this._helper.sessionId) {\n // Check store for credentials\n let storedCredentials = await this._helper.getLocalCredentials();\n if (storedCredentials) {\n params.credentials = storedCredentials;\n } else {\n // Send auth request if no store\n await this._helper.getAuthentication(this.authenticate, this._helper.rememberMe)\n .then(auth => {\n params.credentials = auth;\n });\n }\n // assign credentials with session ID from local storage\n } else if (method !== 'Authenticate' && !this._helper.rememberMe && !this._helper.sessionId) {\n // Needs primary authentication\n await this._helper.getAuthentication(this.authenticate, this._helper.rememberMe)\n .then(auth => {\n params.credentials = auth;\n });\n }\n // Creating the actual call\n let call = this._helper.sendHttpCall(method, params, callbackSuccess, callbackError, this.authenticate, this._helper.rememberMe);\n // Seeing if the user wants the full response object, or default error handling\n if (!this._helper.fullResponse) {\n call = this._helper.errorHandle(call, callbackError);\n call = this._helper.parseHttpResponse(call);\n }\n // Returning call to user\n return call;\n }\n\n /**\n * Constructs a multicall to myGeotab\n *\n * @param {array} calls array of calls to be included in the multicall\n * @param {function} callbackSuccess optional callback function for successful multicalls\n * @param {function} callbackError optional callback function for unsuccessful multicalls\n * @returns {promise} returns call promise\n */\n async multiCall(calls, callbackSuccess, callbackError) {\n if (callbackSuccess && !callbackError) {\n throw new Error(`If callbackSuccess is supplied so must callbackError`);\n }\n let formattedCalls = calls.map(call => {\n let params = call[1];\n return {\n method: call[0],\n params: params\n }\n });\n\n\n let result = this.callimpl('ExecuteMultiCall', {\n calls: formattedCalls\n }, callbackSuccess, callbackError);\n\n if (!callbackSuccess && !callbackError) {\n return result;\n }\n }\n\n /**\n * Gets a stored or new session\n * @param {function} callbackSuccess optional callback for successes\n * @param {boolean} newSession override any stored credentials and fetch a new session\n * @returns {promise} returns call promise\n */\n async getSession(callbackSuccess, newSession) {\n let cred = await this._helper.getLocalCredentials();\n let response;\n if (!newSession && this._helper.rememberMe) {\n // If we have a stored session\n if (cred) {\n response = this._helper.fullResponse ? { data: { result: { credentials: cred, path: this._helper.server } } } : { credentials: cred, path: this._helper.server };\n if (callbackSuccess) {\n // New behavior -> Just returning the result\n if (callbackSuccess.length === 1) {\n callbackSuccess(response);\n } else if (callbackSuccess.length === 2) {\n // Legacy behavior -> Return path and credentials\n callbackSuccess(cred.credentials, this._helper.server);\n }\n return;\n } else {\n return response;\n }\n } else {\n return this.authenticate(callbackSuccess);\n }\n // Grabbing new credentials\n } else {\n cred = this.authenticate();\n if (callbackSuccess) {\n cred = await cred.then(response => this._helper.fullResponse ? response.data.result.credentials : response);\n response = this._helper.fullResponse ? { data: { result: { credentials: cred, path: this._helper.server } } } : { credentials: cred.credentials, path: this._helper.server };\n if (callbackSuccess.length === 1) {\n callbackSuccess(response);\n } else if (callbackSuccess.length === 2) {\n // Legacy getSession asks for credentials and server\n callbackSuccess(cred.credentials, this._helper.server);\n }\n } else {\n return cred;\n }\n }\n }\n\n /**\n * Forgets the session in local storage\n * Resets session with already provided credentials\n */\n async forget() {\n this._helper.clearLocalCredentials();\n return this.authenticate();\n }\n}\n\nexports.default = GeotabApi;\n","const http = typeof window === 'undefined' ? require('http') : null;\nconst https = typeof window === 'undefined' ? require('https') : null;\n\nclass HttpCall {\n\n constructor(method, server, params, callbackSuccess) {\n this.config = {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n this.callbackSuccess = callbackSuccess;\n this.server = server;\n this.body = {\n method: method || '',\n params: params\n };\n }\n\n getCallUrl() {\n let server = this.server || 'my.geotab.com';\n let thisServer = server.replace(/\\S*:\\/\\//, '').replace(/\\/$/, '');\n return 'https://' + thisServer + '/apiv1/';\n }\n\n encode(data) {\n let stringBody = JSON.stringify({\n method: data.method || '',\n params: data.params\n })\n return stringBody;\n }\n\n /**\n * Sends http/fetch request depending on environment.\n * @param {int} timeout amount in milliseconds for timeout.\n * options.timeout * 1000 is a good start\n * Defaults to no timeout (0)\n * @returns {Promise} http/fetch response object wrapped in a promise\n */\n async send(timeout) {\n const url = this.getCallUrl();\n const body = this.encode(this.body);\n const headers = this.config.headers;\n\n if (typeof window !== 'undefined' && window.fetch) {\n // Web environment (using fetch)\n let fetchTimeout;\n const fetchPromise = fetch(url, {\n method: 'POST',\n headers: headers,\n body: body\n });\n\n const timeoutPromise = new Promise((_, reject) => {\n fetchTimeout = setTimeout(() => reject(new Error('Request timed out')), timeout * 1000);\n });\n\n return Promise.race([fetchPromise, timeoutPromise])\n .then(async response => {\n clearTimeout(fetchTimeout);\n const data = await response.json();\n response.data = data;\n if (this.callbackSuccess && !data.error) {\n this.callbackSuccess(data.result);\n }\n return response;\n })\n .catch(error => {\n return Promise.reject(error);\n });\n\n } else {\n // Node.js environment (using http/https)\n const urlObj = new URL(url);\n const options = {\n hostname: urlObj.hostname,\n path: urlObj.pathname,\n method: 'POST',\n headers: headers,\n timeout: timeout * 1000\n };\n\n return new Promise((resolve, reject) => {\n const req = (urlObj.protocol === 'https:' ? https : http).request(options, res => {\n let data = '';\n res.on('data', chunk => data += chunk);\n res.on('end', () => {\n try {\n const parsedData = JSON.parse(data);\n res.data = parsedData; // Attach parsed response body to the response object.\n if (this.callbackSuccess && !parsedData.error) {\n this.callbackSuccess(parsedData.result);\n }\n resolve(res);\n } catch (error) {\n reject(error);\n }\n });\n });\n\n req.on('error', reject);\n req.on('timeout', () => {\n req.destroy();\n reject(new Error('Request timed out'));\n });\n\n req.write(body);\n req.end();\n });\n }\n }\n}\n\nexports.default = HttpCall;\n","const LocalStorageMock = require('./LocalStorageMock').default;\n\n/**\n * Object to interact with the localStorage for stored credentials.\n * Can interact with localStorage (browser) or LocalStorageMock (node) \n */\nclass LocalStorageCredentialStore {\n constructor(){\n this.credentials_key = 'geotabAPI_credentials';\n this.server_key = 'geotabAPI_server';\n\n if (typeof localStorage === 'undefined' || localStorage === null || typeof localStorage.getItem !== 'function') {\n // Mocking local storage for nodeJS implementation. \n this.localStorage = new LocalStorageMock();\n } else {\n this.localStorage = localStorage;\n }\n }\n\n get() {\n let storedCredentials = this.localStorage.getItem(this.credentials_key);\n let storedServer = this.localStorage.getItem(this.server_key) || 'my.geotab.com';\n let thisCredentials = false;\n\n if (storedCredentials && storedServer) {\n try {\n thisCredentials = {\n credentials: JSON.parse(storedCredentials),\n server: storedServer\n }\n } catch (e) {\n console.log('error', e);\n // Malformed JSON\n return false;\n }\n }\n return thisCredentials;\n }\n\n set(credentials, server) {\n if(credentials){\n this.localStorage.setItem(this.credentials_key, JSON.stringify(credentials));\n }\n if(server){\n this.localStorage.setItem(this.server_key, server);\n }\n }\n\n clear() {\n this.localStorage.removeItem(this.credentials_key);\n this.localStorage.removeItem(this.server_key);\n }\n}\n\nexports.default = LocalStorageCredentialStore;","/**\n * A local storage mock to be used with node. Intended to \n * be an easy solution to re-working the existing localstorage system\n * and maintaining legacy support.\n * \n * Nodejs has several libraries that create it's own localStorage \n * functionality, but all of these seem to rely on node's filesystem\n * library (fs) to make things work. This turns out to be a significant\n * issue because webpack can't compile the fs library:\n * - No comparable function in the browser\n * - Not supported by their (now depreciated) core module mocks\n * https://www.npmjs.com/package/node-libs-browser\n * \n * Using the localstorage libraries in the api will work provided the\n * end user is also using webpack, and adds\n * \n * node: {\n * fs: 'empty'\n * }\n * \n * to their config file, but that would break legacy support as\n * most legacy api addins will likely use gulp\n */\nclass LocalStorageMock {\n constructor(){\n this._state = {};\n }\n\n getItem(key){\n return this._state[key];\n }\n\n setItem(key, value){\n this._state[key] = value;\n }\n\n removeItem(key){\n delete this._state[key];\n }\n\n clear(){\n this._state = {};\n }\n}\n\nexports.default = LocalStorageMock;","/*! mg-api-js - v2.0.1\n * Release on: 2020-04-27\n * Copyright (c) 2020 Geotab Inc\n * Licensed MIT */\n// UMD Declaration\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function () {\n return (root['GeotabApi'] = factory());\n });\n } else if (typeof module === 'object' && module.exports) {\n // Node does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n root['GeotabApi'] = factory();\n }\n}(this, function () {\n // Sourcemap node support causes browser issues. Checks for browser global before requiring\n if(typeof window !== 'object'){\n require('source-map-support').install();\n }\n // Allowing async for ie10/11 - webpack requirement\n const regeneratorRuntime = require('regenerator-runtime'); \n const GeotabApi = require('./GeotabApi.js').default;\n /**\n * ** NOTE ** This version (uncompiled with webpack) of the API will not work on browsers.\n * This will fail due to the node module dependancies not being shaken/added to the \n * output file\n */\n // Exposing the object - acts like a constructor for browser implementations\n return GeotabApi;\n}));","/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n typeof Buffer !== 'undefined' &&\n typeof Buffer.alloc === 'function' &&\n typeof Buffer.allocUnsafe === 'function' &&\n typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n byteOffset >>>= 0\n\n var maxLength = obj.byteLength - byteOffset\n\n if (maxLength < 0) {\n throw new RangeError(\"'offset' is out of bounds\")\n }\n\n if (length === undefined) {\n length = maxLength\n } else {\n length >>>= 0\n\n if (length > maxLength) {\n throw new RangeError(\"'length' is out of bounds\")\n }\n }\n\n return isModern\n ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n return isModern\n ? Buffer.from(string, encoding)\n : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return isModern\n ? Buffer.from(value)\n : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var SourceMapConsumer = require('source-map').SourceMapConsumer;\nvar path = require('path');\n\nvar fs;\ntry {\n fs = require('fs');\n if (!fs.existsSync || !fs.readFileSync) {\n // fs doesn't have all methods we need\n fs = null;\n }\n} catch (err) {\n /* nop */\n}\n\nvar bufferFrom = require('buffer-from');\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param {NodeModule} mod\n * @param {string} request\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n// Only install once if called multiple times\nvar errorFormatterInstalled = false;\nvar uncaughtShimInstalled = false;\n\n// If true, the caches are reset before a stack trace formatting operation\nvar emptyCacheBetweenOperations = false;\n\n// Supports {browser, node, auto}\nvar environment = \"auto\";\n\n// Maps a file path to a string containing the file contents\nvar fileContentsCache = {};\n\n// Maps a file path to a source map for that file\nvar sourceMapCache = {};\n\n// Regex for detecting source maps\nvar reSourceMap = /^data:application\\/json[^,]+base64,/;\n\n// Priority list of retrieve handlers\nvar retrieveFileHandlers = [];\nvar retrieveMapHandlers = [];\n\nfunction isInBrowser() {\n if (environment === \"browser\")\n return true;\n if (environment === \"node\")\n return false;\n return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function') && !(window.require && window.module && window.process && window.process.type === \"renderer\"));\n}\n\nfunction hasGlobalProcessEventEmitter() {\n return ((typeof process === 'object') && (process !== null) && (typeof process.on === 'function'));\n}\n\nfunction globalProcessVersion() {\n if ((typeof process === 'object') && (process !== null)) {\n return process.version;\n } else {\n return '';\n }\n}\n\nfunction globalProcessStderr() {\n if ((typeof process === 'object') && (process !== null)) {\n return process.stderr;\n }\n}\n\nfunction globalProcessExit(code) {\n if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) {\n return process.exit(code);\n }\n}\n\nfunction handlerExec(list) {\n return function(arg) {\n for (var i = 0; i < list.length; i++) {\n var ret = list[i](arg);\n if (ret) {\n return ret;\n }\n }\n return null;\n };\n}\n\nvar retrieveFile = handlerExec(retrieveFileHandlers);\n\nretrieveFileHandlers.push(function(path) {\n // Trim the path to make sure there is no extra whitespace.\n path = path.trim();\n if (/^file:/.test(path)) {\n // existsSync/readFileSync can't handle file protocol, but once stripped, it works\n path = path.replace(/file:\\/\\/\\/(\\w:)?/, function(protocol, drive) {\n return drive ?\n '' : // file:///C:/dir/file -> C:/dir/file\n '/'; // file:///root-dir/file -> /root-dir/file\n });\n }\n if (path in fileContentsCache) {\n return fileContentsCache[path];\n }\n\n var contents = '';\n try {\n if (!fs) {\n // Use SJAX if we are in the browser\n var xhr = new XMLHttpRequest();\n xhr.open('GET', path, /** async */ false);\n xhr.send(null);\n if (xhr.readyState === 4 && xhr.status === 200) {\n contents = xhr.responseText;\n }\n } else if (fs.existsSync(path)) {\n // Otherwise, use the filesystem\n contents = fs.readFileSync(path, 'utf8');\n }\n } catch (er) {\n /* ignore any errors */\n }\n\n return fileContentsCache[path] = contents;\n});\n\n// Support URLs relative to a directory, but be careful about a protocol prefix\n// in case we are in the browser (i.e. directories may start with \"http://\" or \"file:///\")\nfunction supportRelativeURL(file, url) {\n if (!file) return url;\n var dir = path.dirname(file);\n var match = /^\\w+:\\/\\/[^\\/]*/.exec(dir);\n var protocol = match ? match[0] : '';\n var startPath = dir.slice(protocol.length);\n if (protocol && /^\\/\\w\\:/.test(startPath)) {\n // handle file:///C:/ paths\n protocol += '/';\n return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\\\/g, '/');\n }\n return protocol + path.resolve(dir.slice(protocol.length), url);\n}\n\nfunction retrieveSourceMapURL(source) {\n var fileData;\n\n if (isInBrowser()) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', source, false);\n xhr.send(null);\n fileData = xhr.readyState === 4 ? xhr.responseText : null;\n\n // Support providing a sourceMappingURL via the SourceMap header\n var sourceMapHeader = xhr.getResponseHeader(\"SourceMap\") ||\n xhr.getResponseHeader(\"X-SourceMap\");\n if (sourceMapHeader) {\n return sourceMapHeader;\n }\n } catch (e) {\n }\n }\n\n // Get the URL of the source map\n fileData = retrieveFile(source);\n var re = /(?:\\/\\/[@#][\\s]*sourceMappingURL=([^\\s'\"]+)[\\s]*$)|(?:\\/\\*[@#][\\s]*sourceMappingURL=([^\\s*'\"]+)[\\s]*(?:\\*\\/)[\\s]*$)/mg;\n // Keep executing the search to find the *last* sourceMappingURL to avoid\n // picking up sourceMappingURLs from comments, strings, etc.\n var lastMatch, match;\n while (match = re.exec(fileData)) lastMatch = match;\n if (!lastMatch) return null;\n return lastMatch[1];\n};\n\n// Can be overridden by the retrieveSourceMap option to install. Takes a\n// generated source filename; returns a {map, optional url} object, or null if\n// there is no source map. The map field may be either a string or the parsed\n// JSON object (ie, it must be a valid argument to the SourceMapConsumer\n// constructor).\nvar retrieveSourceMap = handlerExec(retrieveMapHandlers);\nretrieveMapHandlers.push(function(source) {\n var sourceMappingURL = retrieveSourceMapURL(source);\n if (!sourceMappingURL) return null;\n\n // Read the contents of the source map\n var sourceMapData;\n if (reSourceMap.test(sourceMappingURL)) {\n // Support source map URL as a data url\n var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1);\n sourceMapData = bufferFrom(rawData, \"base64\").toString();\n sourceMappingURL = source;\n } else {\n // Support source map URLs relative to the source URL\n sourceMappingURL = supportRelativeURL(source, sourceMappingURL);\n sourceMapData = retrieveFile(sourceMappingURL);\n }\n\n if (!sourceMapData) {\n return null;\n }\n\n return {\n url: sourceMappingURL,\n map: sourceMapData\n };\n});\n\nfunction mapSourcePosition(position) {\n var sourceMap = sourceMapCache[position.source];\n if (!sourceMap) {\n // Call the (overrideable) retrieveSourceMap function to get the source map.\n var urlAndMap = retrieveSourceMap(position.source);\n if (urlAndMap) {\n sourceMap = sourceMapCache[position.source] = {\n url: urlAndMap.url,\n map: new SourceMapConsumer(urlAndMap.map)\n };\n\n // Load all sources stored inline with the source map into the file cache\n // to pretend like they are already loaded. They may not exist on disk.\n if (sourceMap.map.sourcesContent) {\n sourceMap.map.sources.forEach(function(source, i) {\n var contents = sourceMap.map.sourcesContent[i];\n if (contents) {\n var url = supportRelativeURL(sourceMap.url, source);\n fileContentsCache[url] = contents;\n }\n });\n }\n } else {\n sourceMap = sourceMapCache[position.source] = {\n url: null,\n map: null\n };\n }\n }\n\n // Resolve the source URL relative to the URL of the source map\n if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === 'function') {\n var originalPosition = sourceMap.map.originalPositionFor(position);\n\n // Only return the original position if a matching line was found. If no\n // matching line is found then we return position instead, which will cause\n // the stack trace to print the path and line for the compiled file. It is\n // better to give a precise location in the compiled file than a vague\n // location in the original file.\n if (originalPosition.source !== null) {\n originalPosition.source = supportRelativeURL(\n sourceMap.url, originalPosition.source);\n return originalPosition;\n }\n }\n\n return position;\n}\n\n// Parses code generated by FormatEvalOrigin(), a function inside V8:\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js\nfunction mapEvalOrigin(origin) {\n // Most eval() calls are in this format\n var match = /^eval at ([^(]+) \\((.+):(\\d+):(\\d+)\\)$/.exec(origin);\n if (match) {\n var position = mapSourcePosition({\n source: match[2],\n line: +match[3],\n column: match[4] - 1\n });\n return 'eval at ' + match[1] + ' (' + position.source + ':' +\n position.line + ':' + (position.column + 1) + ')';\n }\n\n // Parse nested eval() calls using recursion\n match = /^eval at ([^(]+) \\((.+)\\)$/.exec(origin);\n if (match) {\n return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')';\n }\n\n // Make sure we still return useful information if we didn't find anything\n return origin;\n}\n\n// This is copied almost verbatim from the V8 source code at\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The\n// implementation of wrapCallSite() used to just forward to the actual source\n// code of CallSite.prototype.toString but unfortunately a new release of V8\n// did something to the prototype chain and broke the shim. The only fix I\n// could find was copy/paste.\nfunction CallSiteToString() {\n var fileName;\n var fileLocation = \"\";\n if (this.isNative()) {\n fileLocation = \"native\";\n } else {\n fileName = this.getScriptNameOrSourceURL();\n if (!fileName && this.isEval()) {\n fileLocation = this.getEvalOrigin();\n fileLocation += \", \"; // Expecting source position to follow.\n }\n\n if (fileName) {\n fileLocation += fileName;\n } else {\n // Source code does not originate from a file and is not native, but we\n // can still get the source position inside the source string, e.g. in\n // an eval string.\n fileLocation += \"\";\n }\n var lineNumber = this.getLineNumber();\n if (lineNumber != null) {\n fileLocation += \":\" + lineNumber;\n var columnNumber = this.getColumnNumber();\n if (columnNumber) {\n fileLocation += \":\" + columnNumber;\n }\n }\n }\n\n var line = \"\";\n var functionName = this.getFunctionName();\n var addSuffix = true;\n var isConstructor = this.isConstructor();\n var isMethodCall = !(this.isToplevel() || isConstructor);\n if (isMethodCall) {\n var typeName = this.getTypeName();\n // Fixes shim to be backward compatable with Node v0 to v4\n if (typeName === \"[object Object]\") {\n typeName = \"null\";\n }\n var methodName = this.getMethodName();\n if (functionName) {\n if (typeName && functionName.indexOf(typeName) != 0) {\n line += typeName + \".\";\n }\n line += functionName;\n if (methodName && functionName.indexOf(\".\" + methodName) != functionName.length - methodName.length - 1) {\n line += \" [as \" + methodName + \"]\";\n }\n } else {\n line += typeName + \".\" + (methodName || \"\");\n }\n } else if (isConstructor) {\n line += \"new \" + (functionName || \"\");\n } else if (functionName) {\n line += functionName;\n } else {\n line += fileLocation;\n addSuffix = false;\n }\n if (addSuffix) {\n line += \" (\" + fileLocation + \")\";\n }\n return line;\n}\n\nfunction cloneCallSite(frame) {\n var object = {};\n Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) {\n object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name];\n });\n object.toString = CallSiteToString;\n return object;\n}\n\nfunction wrapCallSite(frame, state) {\n // provides interface backward compatibility\n if (state === undefined) {\n state = { nextPosition: null, curPosition: null }\n }\n if(frame.isNative()) {\n state.curPosition = null;\n return frame;\n }\n\n // Most call sites will return the source file from getFileName(), but code\n // passed to eval() ending in \"//# sourceURL=...\" will return the source file\n // from getScriptNameOrSourceURL() instead\n var source = frame.getFileName() || frame.getScriptNameOrSourceURL();\n if (source) {\n var line = frame.getLineNumber();\n var column = frame.getColumnNumber() - 1;\n\n // Fix position in Node where some (internal) code is prepended.\n // See https://github.com/evanw/node-source-map-support/issues/36\n // Header removed in node at ^10.16 || >=11.11.0\n // v11 is not an LTS candidate, we can just test the one version with it.\n // Test node versions for: 10.16-19, 10.20+, 12-19, 20-99, 100+, or 11.11\n var noHeader = /^v(10\\.1[6-9]|10\\.[2-9][0-9]|10\\.[0-9]{3,}|1[2-9]\\d*|[2-9]\\d|\\d{3,}|11\\.11)/;\n var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62;\n if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) {\n column -= headerLength;\n }\n\n var position = mapSourcePosition({\n source: source,\n line: line,\n column: column\n });\n state.curPosition = position;\n frame = cloneCallSite(frame);\n var originalFunctionName = frame.getFunctionName;\n frame.getFunctionName = function() {\n if (state.nextPosition == null) {\n return originalFunctionName();\n }\n return state.nextPosition.name || originalFunctionName();\n };\n frame.getFileName = function() { return position.source; };\n frame.getLineNumber = function() { return position.line; };\n frame.getColumnNumber = function() { return position.column + 1; };\n frame.getScriptNameOrSourceURL = function() { return position.source; };\n return frame;\n }\n\n // Code called using eval() needs special handling\n var origin = frame.isEval() && frame.getEvalOrigin();\n if (origin) {\n origin = mapEvalOrigin(origin);\n frame = cloneCallSite(frame);\n frame.getEvalOrigin = function() { return origin; };\n return frame;\n }\n\n // If we get here then we were unable to change the source position\n return frame;\n}\n\n// This function is part of the V8 stack trace API, for more info see:\n// https://v8.dev/docs/stack-trace-api\nfunction prepareStackTrace(error, stack) {\n if (emptyCacheBetweenOperations) {\n fileContentsCache = {};\n sourceMapCache = {};\n }\n\n var name = error.name || 'Error';\n var message = error.message || '';\n var errorString = name + \": \" + message;\n\n var state = { nextPosition: null, curPosition: null };\n var processedStack = [];\n for (var i = stack.length - 1; i >= 0; i--) {\n processedStack.push('\\n at ' + wrapCallSite(stack[i], state));\n state.nextPosition = state.curPosition;\n }\n state.curPosition = state.nextPosition = null;\n return errorString + processedStack.reverse().join('');\n}\n\n// Generate position and snippet of original source with pointer\nfunction getErrorSource(error) {\n var match = /\\n at [^(]+ \\((.*):(\\d+):(\\d+)\\)/.exec(error.stack);\n if (match) {\n var source = match[1];\n var line = +match[2];\n var column = +match[3];\n\n // Support the inline sourceContents inside the source map\n var contents = fileContentsCache[source];\n\n // Support files on disk\n if (!contents && fs && fs.existsSync(source)) {\n try {\n contents = fs.readFileSync(source, 'utf8');\n } catch (er) {\n contents = '';\n }\n }\n\n // Format the line from the original source code like node does\n if (contents) {\n var code = contents.split(/(?:\\r\\n|\\r|\\n)/)[line - 1];\n if (code) {\n return source + ':' + line + '\\n' + code + '\\n' +\n new Array(column).join(' ') + '^';\n }\n }\n }\n return null;\n}\n\nfunction printErrorAndExit (error) {\n var source = getErrorSource(error);\n\n // Ensure error is printed synchronously and not truncated\n var stderr = globalProcessStderr();\n if (stderr && stderr._handle && stderr._handle.setBlocking) {\n stderr._handle.setBlocking(true);\n }\n\n if (source) {\n console.error();\n console.error(source);\n }\n\n console.error(error.stack);\n globalProcessExit(1);\n}\n\nfunction shimEmitUncaughtException () {\n var origEmit = process.emit;\n\n process.emit = function (type) {\n if (type === 'uncaughtException') {\n var hasStack = (arguments[1] && arguments[1].stack);\n var hasListeners = (this.listeners(type).length > 0);\n\n if (hasStack && !hasListeners) {\n return printErrorAndExit(arguments[1]);\n }\n }\n\n return origEmit.apply(this, arguments);\n };\n}\n\nvar originalRetrieveFileHandlers = retrieveFileHandlers.slice(0);\nvar originalRetrieveMapHandlers = retrieveMapHandlers.slice(0);\n\nexports.wrapCallSite = wrapCallSite;\nexports.getErrorSource = getErrorSource;\nexports.mapSourcePosition = mapSourcePosition;\nexports.retrieveSourceMap = retrieveSourceMap;\n\nexports.install = function(options) {\n options = options || {};\n\n if (options.environment) {\n environment = options.environment;\n if ([\"node\", \"browser\", \"auto\"].indexOf(environment) === -1) {\n throw new Error(\"environment \" + environment + \" was unknown. Available options are {auto, browser, node}\")\n }\n }\n\n // Allow sources to be found by methods other than reading the files\n // directly from disk.\n if (options.retrieveFile) {\n if (options.overrideRetrieveFile) {\n retrieveFileHandlers.length = 0;\n }\n\n retrieveFileHandlers.unshift(options.retrieveFile);\n }\n\n // Allow source maps to be found by methods other than reading the files\n // directly from disk.\n if (options.retrieveSourceMap) {\n if (options.overrideRetrieveSourceMap) {\n retrieveMapHandlers.length = 0;\n }\n\n retrieveMapHandlers.unshift(options.retrieveSourceMap);\n }\n\n // Support runtime transpilers that include inline source maps\n if (options.hookRequire && !isInBrowser()) {\n // Use dynamicRequire to avoid including in browser bundles\n var Module = dynamicRequire(module, 'module');\n var $compile = Module.prototype._compile;\n\n if (!$compile.__sourceMapSupport) {\n Module.prototype._compile = function(content, filename) {\n fileContentsCache[filename] = content;\n sourceMapCache[filename] = undefined;\n return $compile.call(this, content, filename);\n };\n\n Module.prototype._compile.__sourceMapSupport = true;\n }\n }\n\n // Configure options\n if (!emptyCacheBetweenOperations) {\n emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ?\n options.emptyCacheBetweenOperations : false;\n }\n\n // Install the error reformatter\n if (!errorFormatterInstalled) {\n errorFormatterInstalled = true;\n Error.prepareStackTrace = prepareStackTrace;\n }\n\n if (!uncaughtShimInstalled) {\n var installHandler = 'handleUncaughtExceptions' in options ?\n options.handleUncaughtExceptions : true;\n\n // Do not override 'uncaughtException' with our own handler in Node.js\n // Worker threads. Workers pass the error to the main thread as an event,\n // rather than printing something to stderr and exiting.\n try {\n // We need to use `dynamicRequire` because `require` on it's own will be optimized by WebPack/Browserify.\n var worker_threads = dynamicRequire(module, 'worker_threads');\n if (worker_threads.isMainThread === false) {\n installHandler = false;\n }\n } catch(e) {}\n\n // Provide the option to not install the uncaught exception handler. This is\n // to support other uncaught exception handlers (in test frameworks, for\n // example). If this handler is not installed and there are no other uncaught\n // exception handlers, uncaught exceptions will be caught by node's built-in\n // exception handler and the process will still be terminated. However, the\n // generated JavaScript code will be shown above the stack trace instead of\n // the original source code.\n if (installHandler && hasGlobalProcessEventEmitter()) {\n uncaughtShimInstalled = true;\n shimEmitUncaughtException();\n }\n }\n};\n\nexports.resetRetrieveHandlers = function() {\n retrieveFileHandlers.length = 0;\n retrieveMapHandlers.length = 0;\n\n retrieveFileHandlers = originalRetrieveFileHandlers.slice(0);\n retrieveMapHandlers = originalRetrieveMapHandlers.slice(0);\n\n retrieveSourceMap = handlerExec(retrieveMapHandlers);\n retrieveFile = handlerExec(retrieveFileHandlers);\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"https\");","module.exports = require(\"path\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(503);\n"],"names":["root","factory","exports","module","define","amd","Object","self","this","_regeneratorRuntime","e","t","r","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","key","toPrimitive","String","_toPrimitive","LocalStorageCredentialStore","require","HttpCall","ApiHelper","authentication","options","_classCallCheck","fullResponse","rememberMe","timeout","newCredentialStore","credentialStore","createStore","credentials","sessionId","path","set","cred","server","get","database","userName","password","newStore","store","result","clear","_getAuthentication","_callee","authenticate","_this","_context","response","data","setLocalCredentials","_x","_x2","callbackError","dispatchError","message","errorDetails","error","toString","status","concat","statusText","statusCode","statusMessage","_sendHttpCall","_callee3","params","callbackSuccess","_this2","_context3","send","_ref","_callee2","_context2","clearLocalCredentials","getAuthentication","auth","_x9","_x3","_x4","_x5","_x6","_x7","_x8","GeotabApi","newOptions","undefined","_helper","bind","_authenticate","callimpl","_call","_callimpl","storedCredentials","getLocalCredentials","sendHttpCall","errorHandle","parseHttpResponse","_x10","_multiCall","_callee4","calls","formattedCalls","_context4","map","_x11","_x12","_x13","_getSession","_callee5","newSession","_context5","_x14","_x15","_forget","_callee6","_context6","http","window","https","config","headers","body","replace","JSON","stringify","_send","url","fetchTimeout","fetchPromise","timeoutPromise","urlObj","getCallUrl","encode","fetch","_","reject","setTimeout","race","clearTimeout","json","URL","hostname","pathname","req","protocol","request","res","on","chunk","parsedData","parse","destroy","write","end","LocalStorageMock","credentials_key","server_key","localStorage","getItem","storedServer","thisCredentials","console","log","setItem","removeItem","_state","isModern","Buffer","alloc","allocUnsafe","from","encodingOrOffset","input","obj","byteOffset","maxLength","byteLength","RangeError","Uint8Array","fromArrayBuffer","string","encoding","isEncoding","fromString","runtime","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","err","innerFn","outerFn","tryLocsList","protoGenerator","generator","context","fn","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","PromiseImpl","record","unwrapped","previousPromise","state","doneResult","delegateResult","methodName","info","locs","entry","iterable","iteratorMethod","genFun","ctor","iter","val","object","skipTempReset","rootRecord","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","regeneratorRuntime","accidentalStrictMode","globalThis","Function","fs","SourceMapConsumer","existsSync","readFileSync","bufferFrom","dynamicRequire","mod","errorFormatterInstalled","uncaughtShimInstalled","emptyCacheBetweenOperations","environment","fileContentsCache","sourceMapCache","reSourceMap","retrieveFileHandlers","retrieveMapHandlers","isInBrowser","XMLHttpRequest","process","handlerExec","list","ret","retrieveFile","supportRelativeURL","file","dir","dirname","match","exec","startPath","test","trim","drive","contents","xhr","open","readyState","responseText","er","retrieveSourceMap","mapSourcePosition","position","sourceMap","source","urlAndMap","sourcesContent","sources","originalPositionFor","originalPosition","mapEvalOrigin","origin","line","column","CallSiteToString","fileName","fileLocation","isNative","getScriptNameOrSourceURL","isEval","getEvalOrigin","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","addSuffix","isConstructor","isToplevel","typeName","getTypeName","getMethodName","indexOf","cloneCallSite","frame","getOwnPropertyNames","wrapCallSite","nextPosition","curPosition","getFileName","headerLength","version","originalFunctionName","prepareStackTrace","stack","errorString","processedStack","join","getErrorSource","code","split","Array","sourceMapData","sourceMappingURL","fileData","sourceMapHeader","getResponseHeader","lastMatch","re","retrieveSourceMapURL","rawData","originalRetrieveFileHandlers","originalRetrieveMapHandlers","install","overrideRetrieveFile","unshift","overrideRetrieveSourceMap","hookRequire","Module","$compile","_compile","__sourceMapSupport","content","filename","installHandler","handleUncaughtExceptions","isMainThread","origEmit","emit","hasStack","hasListeners","listeners","stderr","globalProcessStderr","_handle","setBlocking","exit","resetRetrieveHandlers","util","has","hasNativeMap","Map","ArraySet","_array","_set","fromArray","aArray","aAllowDuplicates","len","add","size","aStr","sStr","toSetString","isDuplicate","idx","at","aIdx","toArray","base64","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","shift","charCodeAt","rest","intToCharMap","number","charCode","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","Math","floor","cmp","LEAST_UPPER_BOUND","GREATEST_LOWER_BOUND","search","index","MappingList","_sorted","_last","generatedLine","generatedColumn","unsortedForEach","aCallback","aThisArg","aMapping","mappingA","mappingB","lineA","lineB","columnA","columnB","compareByGeneratedPositionsInflated","sort","swap","ary","x","temp","doQuickSort","comparator","low","high","round","random","pivot","j","q","binarySearch","base64VLQ","quickSort","aSourceMap","aSourceMapURL","parseSourceMapInput","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","getArg","names","sourceRoot","mappings","_version","normalize","isAbsolute","relative","_names","_sources","_absoluteSources","computeSourceURL","_mappings","_sourceMapURL","Mapping","originalLine","originalColumn","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","fromSourceMap","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","aContext","aOrder","_generatedMappings","_originalMappings","mapping","allGeneratedPositionsFor","aArgs","needle","_findSourceIndex","_findMapping","compareByOriginalPositions","lastColumn","aSource","relativeSource","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","str","segment","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","compareByGeneratedPositionsDeflated","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","some","sc","sourceContentFor","nullOnMissing","urlParse","fileUriAbsPath","scheme","generatedPositionFor","sectionIndex","section","bias","every","generatedPosition","sectionMappings","adjustedMapping","SourceMapGenerator","_skipValidation","_sourcesContents","aSourceMapConsumer","newMapping","generated","original","addMapping","sourceFile","sourceRelative","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aName","_serializeMappings","nameIdx","sourceIdx","previousGeneratedLine","aSources","toJSON","REGEX_NEWLINE","isSourceNode","SourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","node","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","substr","addMappingWithCode","splice","aChunk","isArray","prepend","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","fromSetString","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","host","port","urlGenerate","aParsedUrl","aPath","part","parts","up","aRoot","aPathUrl","aRootUrl","joined","level","lastIndexOf","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","onlyCompareOriginal","onlyCompareGenerated","sourceURL","sourceMapURL","parsed","substring","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","nmd","paths"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"api.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAmB,UAAID,IAEvBD,EAAgB,UAAIC,GACrB,CATD,CASGK,OAAuB,oBAATC,KAAuBA,KAAOC,MAAO,I,kDCRtDC,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAAE,EAAAN,OAAAO,UAAAC,EAAAF,EAAAG,eAAAC,EAAAV,OAAAW,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAAM,KAAA,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAtB,EAAAO,EAAAD,EAAAE,GAAA,OAAAN,OAAAW,eAAAN,EAAAD,EAAA,CAAAQ,MAAAN,EAAAe,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAlB,EAAAD,EAAA,KAAAN,EAAA,aAAAO,GAAAP,EAAA,SAAAO,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,CAAA,WAAAkB,EAAAnB,EAAAD,EAAAE,EAAAE,GAAA,IAAAK,EAAAT,GAAAA,EAAAG,qBAAAkB,EAAArB,EAAAqB,EAAAV,EAAAf,OAAA0B,OAAAb,EAAAN,WAAAU,EAAA,IAAAU,EAAAnB,GAAA,WAAAE,EAAAK,EAAA,WAAAH,MAAAgB,EAAAvB,EAAAC,EAAAW,KAAAF,CAAA,UAAAc,EAAAxB,EAAAD,EAAAE,GAAA,WAAAwB,KAAA,SAAAC,IAAA1B,EAAA2B,KAAA5B,EAAAE,GAAA,OAAAD,GAAA,OAAAyB,KAAA,QAAAC,IAAA1B,EAAA,EAAAD,EAAAoB,KAAAA,EAAA,IAAAS,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAZ,IAAA,UAAAa,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAA1C,EAAA0C,EAAAzB,EAAA,6BAAA0B,EAAAzC,OAAA0C,eAAAC,EAAAF,GAAAA,EAAAA,EAAAG,EAAA,MAAAD,GAAAA,IAAArC,GAAAE,EAAAwB,KAAAW,EAAA5B,KAAAyB,EAAAG,GAAA,IAAAE,EAAAN,EAAAhC,UAAAkB,EAAAlB,UAAAP,OAAA0B,OAAAc,GAAA,SAAAM,EAAAzC,GAAA,0BAAA0C,QAAA,SAAA3C,GAAAN,EAAAO,EAAAD,EAAA,SAAAC,GAAA,YAAA2C,QAAA5C,EAAAC,EAAA,cAAA4C,EAAA5C,EAAAD,GAAA,SAAA8C,EAAA5C,EAAAI,EAAAG,EAAAE,GAAA,IAAAE,EAAAY,EAAAxB,EAAAC,GAAAD,EAAAK,GAAA,aAAAO,EAAAa,KAAA,KAAAX,EAAAF,EAAAc,IAAAE,EAAAd,EAAAP,MAAA,OAAAqB,GAAA,UAAAkB,EAAAlB,IAAAzB,EAAAwB,KAAAC,EAAA,WAAA7B,EAAAgD,QAAAnB,EAAAoB,SAAAC,KAAA,SAAAjD,GAAA6C,EAAA,OAAA7C,EAAAQ,EAAAE,EAAA,WAAAV,GAAA6C,EAAA,QAAA7C,EAAAQ,EAAAE,EAAA,GAAAX,EAAAgD,QAAAnB,GAAAqB,KAAA,SAAAjD,GAAAc,EAAAP,MAAAP,EAAAQ,EAAAM,EAAA,WAAAd,GAAA,OAAA6C,EAAA,QAAA7C,EAAAQ,EAAAE,EAAA,GAAAA,EAAAE,EAAAc,IAAA,KAAAzB,EAAAI,EAAA,gBAAAE,MAAA,SAAAP,EAAAG,GAAA,SAAA+C,IAAA,WAAAnD,EAAA,SAAAA,EAAAE,GAAA4C,EAAA7C,EAAAG,EAAAJ,EAAAE,EAAA,UAAAA,EAAAA,EAAAA,EAAAgD,KAAAC,EAAAA,GAAAA,GAAA,aAAA3B,EAAAxB,EAAAE,EAAAE,GAAA,IAAAE,EAAAuB,EAAA,gBAAApB,EAAAE,GAAA,GAAAL,IAAAyB,EAAA,MAAAqB,MAAA,mCAAA9C,IAAA0B,EAAA,cAAAvB,EAAA,MAAAE,EAAA,OAAAH,MAAAP,EAAAoD,MAAA,OAAAjD,EAAAkD,OAAA7C,EAAAL,EAAAuB,IAAAhB,IAAA,KAAAE,EAAAT,EAAAmD,SAAA,GAAA1C,EAAA,KAAAE,EAAAyC,EAAA3C,EAAAT,GAAA,GAAAW,EAAA,IAAAA,IAAAkB,EAAA,gBAAAlB,CAAA,cAAAX,EAAAkD,OAAAlD,EAAAqD,KAAArD,EAAAsD,MAAAtD,EAAAuB,SAAA,aAAAvB,EAAAkD,OAAA,IAAAhD,IAAAuB,EAAA,MAAAvB,EAAA0B,EAAA5B,EAAAuB,IAAAvB,EAAAuD,kBAAAvD,EAAAuB,IAAA,gBAAAvB,EAAAkD,QAAAlD,EAAAwD,OAAA,SAAAxD,EAAAuB,KAAArB,EAAAyB,EAAA,IAAAK,EAAAX,EAAAzB,EAAAE,EAAAE,GAAA,cAAAgC,EAAAV,KAAA,IAAApB,EAAAF,EAAAiD,KAAArB,EAAAF,EAAAM,EAAAT,MAAAM,EAAA,gBAAAzB,MAAA4B,EAAAT,IAAA0B,KAAAjD,EAAAiD,KAAA,WAAAjB,EAAAV,OAAApB,EAAA0B,EAAA5B,EAAAkD,OAAA,QAAAlD,EAAAuB,IAAAS,EAAAT,IAAA,YAAA6B,EAAAxD,EAAAE,GAAA,IAAAE,EAAAF,EAAAoD,OAAAhD,EAAAN,EAAAY,SAAAR,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAAqD,SAAA,eAAAnD,GAAAJ,EAAAY,SAAAiD,SAAA3D,EAAAoD,OAAA,SAAApD,EAAAyB,IAAA1B,EAAAuD,EAAAxD,EAAAE,GAAA,UAAAA,EAAAoD,SAAA,WAAAlD,IAAAF,EAAAoD,OAAA,QAAApD,EAAAyB,IAAA,IAAAmC,UAAA,oCAAA1D,EAAA,aAAA6B,EAAA,IAAAxB,EAAAgB,EAAAnB,EAAAN,EAAAY,SAAAV,EAAAyB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAxB,EAAAoD,OAAA,QAAApD,EAAAyB,IAAAlB,EAAAkB,IAAAzB,EAAAqD,SAAA,KAAAtB,EAAA,IAAAtB,EAAAF,EAAAkB,IAAA,OAAAhB,EAAAA,EAAA0C,MAAAnD,EAAAF,EAAA+D,YAAApD,EAAAH,MAAAN,EAAA8D,KAAAhE,EAAAiE,QAAA,WAAA/D,EAAAoD,SAAApD,EAAAoD,OAAA,OAAApD,EAAAyB,IAAA1B,GAAAC,EAAAqD,SAAA,KAAAtB,GAAAtB,GAAAT,EAAAoD,OAAA,QAAApD,EAAAyB,IAAA,IAAAmC,UAAA,oCAAA5D,EAAAqD,SAAA,KAAAtB,EAAA,UAAAiC,EAAAjE,GAAA,IAAAD,EAAA,CAAAmE,OAAAlE,EAAA,SAAAA,IAAAD,EAAAoE,SAAAnE,EAAA,SAAAA,IAAAD,EAAAqE,WAAApE,EAAA,GAAAD,EAAAsE,SAAArE,EAAA,SAAAsE,WAAAC,KAAAxE,EAAA,UAAAyE,EAAAxE,GAAA,IAAAD,EAAAC,EAAAyE,YAAA,GAAA1E,EAAA0B,KAAA,gBAAA1B,EAAA2B,IAAA1B,EAAAyE,WAAA1E,CAAA,UAAAuB,EAAAtB,GAAA,KAAAsE,WAAA,EAAAJ,OAAA,SAAAlE,EAAA0C,QAAAuB,EAAA,WAAAS,OAAA,YAAAnC,EAAAxC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAAW,GAAA,GAAAT,EAAA,OAAAA,EAAA0B,KAAA5B,GAAA,sBAAAA,EAAAgE,KAAA,OAAAhE,EAAA,IAAA4E,MAAA5E,EAAA6E,QAAA,KAAAvE,GAAA,EAAAG,EAAA,SAAAuD,IAAA,OAAA1D,EAAAN,EAAA6E,QAAA,GAAAzE,EAAAwB,KAAA5B,EAAAM,GAAA,OAAA0D,EAAAxD,MAAAR,EAAAM,GAAA0D,EAAAX,MAAA,EAAAW,EAAA,OAAAA,EAAAxD,MAAAP,EAAA+D,EAAAX,MAAA,EAAAW,CAAA,SAAAvD,EAAAuD,KAAAvD,CAAA,YAAAqD,UAAAf,EAAA/C,GAAA,2BAAAkC,EAAA/B,UAAAgC,EAAA7B,EAAAmC,EAAA,eAAAjC,MAAA2B,EAAAjB,cAAA,IAAAZ,EAAA6B,EAAA,eAAA3B,MAAA0B,EAAAhB,cAAA,IAAAgB,EAAA4C,YAAApF,EAAAyC,EAAApB,EAAA,qBAAAf,EAAA+E,oBAAA,SAAA9E,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAA+E,YAAA,QAAAhF,IAAAA,IAAAkC,GAAA,uBAAAlC,EAAA8E,aAAA9E,EAAAiF,MAAA,EAAAjF,EAAAkF,KAAA,SAAAjF,GAAA,OAAAL,OAAAuF,eAAAvF,OAAAuF,eAAAlF,EAAAkC,IAAAlC,EAAAmF,UAAAjD,EAAAzC,EAAAO,EAAAc,EAAA,sBAAAd,EAAAE,UAAAP,OAAA0B,OAAAmB,GAAAxC,CAAA,EAAAD,EAAAqF,MAAA,SAAApF,GAAA,OAAAgD,QAAAhD,EAAA,EAAAyC,EAAAG,EAAA1C,WAAAT,EAAAmD,EAAA1C,UAAAU,EAAA,yBAAAb,EAAA6C,cAAAA,EAAA7C,EAAAsF,MAAA,SAAArF,EAAAC,EAAAE,EAAAE,EAAAG,QAAA,IAAAA,IAAAA,EAAA8E,SAAA,IAAA5E,EAAA,IAAAkC,EAAAzB,EAAAnB,EAAAC,EAAAE,EAAAE,GAAAG,GAAA,OAAAT,EAAA+E,oBAAA7E,GAAAS,EAAAA,EAAAqD,OAAAd,KAAA,SAAAjD,GAAA,OAAAA,EAAAoD,KAAApD,EAAAO,MAAAG,EAAAqD,MAAA,IAAAtB,EAAAD,GAAA/C,EAAA+C,EAAA1B,EAAA,aAAArB,EAAA+C,EAAA9B,EAAA,yBAAAjB,EAAA+C,EAAA,mDAAAzC,EAAAwF,KAAA,SAAAvF,GAAA,IAAAD,EAAAJ,OAAAK,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAsE,KAAApE,GAAA,OAAAF,EAAAuF,UAAA,SAAAzB,IAAA,KAAA9D,EAAA2E,QAAA,KAAA5E,EAAAC,EAAAwF,MAAA,GAAAzF,KAAAD,EAAA,OAAAgE,EAAAxD,MAAAP,EAAA+D,EAAAX,MAAA,EAAAW,CAAA,QAAAA,EAAAX,MAAA,EAAAW,CAAA,GAAAhE,EAAAwC,OAAAA,EAAAjB,EAAApB,UAAA,CAAA6E,YAAAzD,EAAAoD,MAAA,SAAA3E,GAAA,QAAA2F,KAAA,OAAA3B,KAAA,OAAAP,KAAA,KAAAC,MAAAzD,EAAA,KAAAoD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAA3B,IAAA1B,EAAA,KAAAsE,WAAA5B,QAAA8B,IAAAzE,EAAA,QAAAE,KAAA,WAAAA,EAAA0F,OAAA,IAAAxF,EAAAwB,KAAA,KAAA1B,KAAA0E,OAAA1E,EAAA2F,MAAA,WAAA3F,GAAAD,EAAA,EAAA6F,KAAA,gBAAAzC,MAAA,MAAApD,EAAA,KAAAsE,WAAA,GAAAG,WAAA,aAAAzE,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,YAAAoE,IAAA,EAAApC,kBAAA,SAAA3D,GAAA,QAAAqD,KAAA,MAAArD,EAAA,IAAAE,EAAA,cAAA8F,EAAA5F,EAAAE,GAAA,OAAAK,EAAAe,KAAA,QAAAf,EAAAgB,IAAA3B,EAAAE,EAAA8D,KAAA5D,EAAAE,IAAAJ,EAAAoD,OAAA,OAAApD,EAAAyB,IAAA1B,KAAAK,CAAA,SAAAA,EAAA,KAAAiE,WAAAM,OAAA,EAAAvE,GAAA,IAAAA,EAAA,KAAAG,EAAA,KAAA8D,WAAAjE,GAAAK,EAAAF,EAAAiE,WAAA,YAAAjE,EAAA0D,OAAA,OAAA6B,EAAA,UAAAvF,EAAA0D,QAAA,KAAAwB,KAAA,KAAA9E,EAAAT,EAAAwB,KAAAnB,EAAA,YAAAM,EAAAX,EAAAwB,KAAAnB,EAAA,iBAAAI,GAAAE,EAAA,SAAA4E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,WAAAuB,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,SAAAxD,GAAA,QAAA8E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,YAAArD,EAAA,MAAAqC,MAAA,kDAAAuC,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,KAAAT,OAAA,SAAA3D,EAAAD,GAAA,QAAAE,EAAA,KAAAqE,WAAAM,OAAA,EAAA3E,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAAiE,WAAArE,GAAA,GAAAI,EAAA6D,QAAA,KAAAwB,MAAAvF,EAAAwB,KAAAtB,EAAA,oBAAAqF,KAAArF,EAAA+D,WAAA,KAAA5D,EAAAH,EAAA,OAAAG,IAAA,UAAAR,GAAA,aAAAA,IAAAQ,EAAA0D,QAAAnE,GAAAA,GAAAS,EAAA4D,aAAA5D,EAAA,UAAAE,EAAAF,EAAAA,EAAAiE,WAAA,UAAA/D,EAAAe,KAAAzB,EAAAU,EAAAgB,IAAA3B,EAAAS,GAAA,KAAA6C,OAAA,YAAAU,KAAAvD,EAAA4D,WAAApC,GAAA,KAAAgE,SAAAtF,EAAA,EAAAsF,SAAA,SAAAhG,EAAAD,GAAA,aAAAC,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,gBAAA1B,EAAAyB,MAAA,aAAAzB,EAAAyB,KAAA,KAAAsC,KAAA/D,EAAA0B,IAAA,WAAA1B,EAAAyB,MAAA,KAAAqE,KAAA,KAAApE,IAAA1B,EAAA0B,IAAA,KAAA2B,OAAA,cAAAU,KAAA,kBAAA/D,EAAAyB,MAAA1B,IAAA,KAAAgE,KAAAhE,GAAAiC,CAAA,EAAAiE,OAAA,SAAAjG,GAAA,QAAAD,EAAA,KAAAuE,WAAAM,OAAA,EAAA7E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAqE,WAAAvE,GAAA,GAAAE,EAAAmE,aAAApE,EAAA,YAAAgG,SAAA/F,EAAAwE,WAAAxE,EAAAoE,UAAAG,EAAAvE,GAAA+B,CAAA,GAAAkE,MAAA,SAAAlG,GAAA,QAAAD,EAAA,KAAAuE,WAAAM,OAAA,EAAA7E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAqE,WAAAvE,GAAA,GAAAE,EAAAiE,SAAAlE,EAAA,KAAAG,EAAAF,EAAAwE,WAAA,aAAAtE,EAAAsB,KAAA,KAAApB,EAAAF,EAAAuB,IAAA8C,EAAAvE,EAAA,QAAAI,CAAA,QAAA8C,MAAA,0BAAAgD,cAAA,SAAApG,EAAAE,EAAAE,GAAA,YAAAmD,SAAA,CAAA3C,SAAA4B,EAAAxC,GAAA+D,WAAA7D,EAAA+D,QAAA7D,GAAA,cAAAkD,SAAA,KAAA3B,IAAA1B,GAAAgC,CAAA,GAAAjC,CAAA,UAAAqG,EAAAjG,EAAAH,EAAAD,EAAAE,EAAAI,EAAAK,EAAAE,GAAA,QAAAJ,EAAAL,EAAAO,GAAAE,GAAAE,EAAAN,EAAAD,KAAA,OAAAJ,GAAA,YAAAJ,EAAAI,EAAA,CAAAK,EAAA4C,KAAApD,EAAAc,GAAAwE,QAAAvC,QAAAjC,GAAAmC,KAAAhD,EAAAI,EAAA,UAAAgG,EAAAlG,GAAA,sBAAAH,EAAA,KAAAD,EAAAuG,UAAA,WAAAhB,QAAA,SAAArF,EAAAI,GAAA,IAAAK,EAAAP,EAAAoG,MAAAvG,EAAAD,GAAA,SAAAyG,EAAArG,GAAAiG,EAAA1F,EAAAT,EAAAI,EAAAmG,EAAAC,EAAA,OAAAtG,EAAA,UAAAsG,EAAAtG,GAAAiG,EAAA1F,EAAAT,EAAAI,EAAAmG,EAAAC,EAAA,QAAAtG,EAAA,CAAAqG,OAAA,eAAA1D,EAAAzC,GAAA,OAAAyC,EAAA,mBAAArC,QAAA,iBAAAA,OAAAE,SAAA,SAAAN,GAAA,cAAAA,CAAA,WAAAA,GAAA,OAAAA,GAAA,mBAAAI,QAAAJ,EAAA0E,cAAAtE,QAAAJ,IAAAI,OAAAP,UAAA,gBAAAG,CAAA,EAAAyC,EAAAzC,EAAA,UAAAqG,EAAA3G,EAAAE,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA2E,OAAA5E,IAAA,KAAAK,EAAAJ,EAAAD,GAAAK,EAAAW,WAAAX,EAAAW,aAAA,EAAAX,EAAAY,cAAA,YAAAZ,IAAAA,EAAAa,UAAA,GAAAvB,OAAAW,eAAAP,EAAA4G,EAAAtG,EAAAuG,KAAAvG,EAAA,WAAAsG,EAAA3G,GAAA,IAAAQ,EAAA,SAAAR,GAAA,aAAA8C,EAAA9C,KAAAA,EAAA,OAAAA,EAAA,IAAAD,EAAAC,EAAAS,OAAAoG,aAAA,YAAA9G,EAAA,KAAAS,EAAAT,EAAA4B,KAAA3B,EAAAC,UAAA,aAAA6C,EAAAtC,GAAA,OAAAA,EAAA,UAAAqD,UAAA,uDAAAiD,OAAA9G,EAAA,CAAA+G,CAAA/G,GAAA,gBAAA8C,EAAAtC,GAAAA,EAAAA,EAAA,GADA,IAAMwG,EAA8BC,EAAAA,KAAAA,EAC9BC,EAAWD,EAAAA,IAAAA,EAMXE,EAAS,WA0BX,OAhCJpH,EAQI,SAAAoH,EAAYC,EAAgBC,GACxB,GATR,SAAA3G,EAAAP,GAAA,KAAAO,aAAAP,GAAA,UAAA0D,UAAA,qCAQyCyD,CAAA,KAAAH,GACH,WAA1BrE,EAAOsE,GACP,MAAM,IAAIjE,MAAM,uGASpB,GAPAtD,KAAKwH,QAAU,CACXE,kBAA8C,IAAzBF,EAAQE,cAAuCF,EAAQE,aAC5EC,gBAA0C,IAAvBH,EAAQG,YAAoCH,EAAQG,WACvEC,aAAoC,IAApBJ,EAAQI,QAA0B,IAAMJ,EAAQI,QAChEC,wBAA0D,IAA/BL,EAAQK,oBAA6CL,EAAQK,oBAE5F7H,KAAK8H,gBAAkB9H,KAAK+H,YAAYP,EAAQK,oBAC5CN,EAAeS,YAAYC,UAAW,CAEtC,QAAmC,IAAxBV,EAAeW,KACtB,MAAM,IAAI5E,MAAM,gGAEhBtD,KAAKwH,QAAQG,YACb3H,KAAK8H,gBAAgBK,IAAIZ,EAAeS,YAAaT,EAAeW,KAE5E,CACAlI,KAAKoI,KAAOb,EAAeS,YAC3BhI,KAAKqI,OAASd,EAAeW,IACjC,EA9BJ9H,EAgCI,EAAA2G,IAAA,YAAAuB,IAIA,WACI,OAAOtI,KAAKoI,KAAKH,SACrB,GAAC,CAAAlB,IAAA,WAAAuB,IAED,WACI,OAAOtI,KAAKoI,KAAKG,QACrB,GAAC,CAAAxB,IAAA,WAAAuB,IAED,WACI,OAAOtI,KAAKoI,KAAKI,QACrB,GAAC,CAAAzB,IAAA,WAAAuB,IAED,WACI,OAAOtI,KAAKoI,KAAKK,QACrB,GAAC,CAAA1B,IAAA,aAAAuB,IAED,WACI,OAAOtI,KAAKwH,QAAQG,UACxB,GAAC,CAAAZ,IAAA,eAAAuB,IAED,WACI,OAAOtI,KAAKwH,QAAQE,YACxB,GAEA,CAAAX,IAAA,cAAArG,MAMA,SAAYgI,GACR,OAAOA,GAAY,IAAIvB,CAC3B,GAEA,CAAAJ,IAAA,sBAAArG,MAIA,WACI,IAAIiI,EAAQ3I,KAAK8H,gBAAgBQ,MACjC,OAAIK,GACIA,EAAMN,SACNrI,KAAKqI,OAASM,EAAMN,QAEjBM,EAAMX,aAEVW,CACX,GAEA,CAAA5B,IAAA,sBAAArG,MAIA,SAAoBsH,EAAaK,GAC7BrI,KAAK8H,gBAAgBK,IAAIH,EAAaK,EAC1C,GAAC,CAAAtB,IAAA,wBAAArG,MAED,WACIV,KAAK8H,gBAAgBc,OACzB,GAEA,CAAA7B,IAAA,oBAAArG,OAAAmI,EAAArC,EAAAvG,IAAAmF,KAMA,SAAA0D,EAAwBC,EAAcpB,GAAU,IAAAqB,EAAA,YAAA/I,IAAAqB,KAAA,SAAA2H,GAAA,cAAAA,EAAApD,KAAAoD,EAAA/E,MAAA,cAAA+E,EAAAnF,OAAA,SACrCiF,IAAe3F,KAAK,SAAA8F,GAEvB,IAAIC,EAAOD,EAASC,KAAOD,EAASC,KAAKC,OAASF,EASlD,MARkB,eAAdC,EAAKjB,OACLc,EAAKX,OAASc,EAAKjB,MAGnBP,GACAqB,EAAKK,oBAAoBF,EAAKnB,YAAagB,EAAKX,QAEpDW,EAAKZ,KAAKH,UAAYkB,EAAKnB,YAAYC,UAChCkB,EAAKnB,WAChB,IAAE,wBAAAiB,EAAAjD,OAAA,EAAA8C,EAAA,IACL,SAdsBQ,EAAAC,GAAA,OAAAV,EAAAnC,MAAC,KAADD,UAAA,IAgBvB,CAAAM,IAAA,oBAAArG,MAKA,SAAkBoB,GACd,OAAOA,EACFsB,KAAK,SAAA8F,GAEF,OAAIA,EAASC,KAAKC,OACPF,EAASC,KAAKC,OAElBF,CACX,EACR,GAEA,CAAAnC,IAAA,cAAArG,MAKA,SAAYoB,EAAM0H,GACd,SAASC,EAAcC,EAASC,GAC5B,IAAIC,EAAQ,IAAItG,MAAMoG,GACtB,IAAIF,EAGA,MAAMI,EAFNJ,EAAcI,EAAMC,WAAYF,GAAgBC,EAIxD,CAEA,OAAO9H,EACFsB,KAAK,SAAA8F,GAQF,OAPIA,EAASY,QAA8B,MAApBZ,EAASY,QAC5BL,EAAc,YAADM,OAAab,EAASY,OAAM,OAAAC,OAAMb,EAASc,YAAc,MAGtEd,EAASe,YAAsC,MAAxBf,EAASe,YAChCR,EAAc,YAADM,OAAab,EAASe,WAAU,OAAAF,OAAMb,EAASgB,eAAiB,MAE1EhB,CACX,GACC9F,KAAK,SAAA8F,GAIF,OAHIA,EAASC,MAAQD,EAASC,KAAKS,OAC/BH,EAAc,GAADM,OAAIb,EAASC,KAAKS,MAAMT,KAAKvH,KAAI,MAAAmI,OAAKb,EAASC,KAAKS,MAAMF,SAAWR,EAASC,KAAKS,OAE7FV,CACX,EACR,GAEA,CAAAnC,IAAA,eAAArG,OAAAyJ,EAAA3D,EAAAvG,IAAAmF,KAYA,SAAAgF,EAAmB5G,EAAQ6G,EAAQC,EAAiBd,EAAeT,EAAcpB,GAAU,IAAA7F,EAAAyI,EAAA,YAAAtK,IAAAqB,KAAA,SAAAkJ,GAAA,cAAAA,EAAA3E,KAAA2E,EAAAtG,MAAA,OAgCtF,OA/BGpC,EAAO,IAAIuF,EAAS7D,EAAQxD,KAAKqI,OAAQgC,EAAQC,GAAiBG,KAAKzK,KAAKwH,QAAQI,SAGpF9F,EADW,iBAAX0B,EACO1B,EAAKsB,KAAI,eAAAsH,EAAAlE,EAAAvG,IAAAmF,KAAC,SAAAuF,EAAMzB,GAAQ,IAAAC,EAAA,OAAAlJ,IAAAqB,KAAA,SAAAsJ,GAAA,cAAAA,EAAA/E,KAAA+E,EAAA1G,MAAA,OAE3B,KADIiF,EAAOD,EAASC,MAEXS,MAAO,CAAFgB,EAAA1G,KAAA,WACmB,yBAAzBiF,EAAKS,MAAMT,KAAKvH,KAA+B,CAAAgJ,EAAA1G,KAAA,QAG/C,OADAqG,EAAKM,wBACLD,EAAA1G,KAAA,EACMqG,EAAKO,kBAAkB/B,EAAcpB,GACtCvE,KAAK,SAAA2H,GACFV,EAAOrC,YAAc+C,CACzB,GAAE,cAAAH,EAAA9G,OAAA,SACC,IAAIuD,EAAS7D,EAAQ+G,EAAKlC,OAAQgC,EAAQC,GAAiBG,KAAKF,EAAK/C,QAAQI,UAAQ,cAAAgD,EAAA9G,OAAA,SAG7FoF,GAAQ,wBAAA0B,EAAA5E,OAAA,EAAA2E,EAAA,IAClB,gBAAAK,GAAA,OAAAN,EAAAhE,MAAA,KAAAD,UAAA,EAhBe,IAkBT3E,EAAKsB,KAAK,SAAA8F,GACb,GAAIA,EAASC,KAAKC,OAAQ,CACtB,IAAIf,EAAuC,eAA9Ba,EAASC,KAAKC,OAAOlB,KAAwBqC,EAAKlC,OAASa,EAASC,KAAKC,OAAOlB,KAC7FqC,EAAKlC,OAASA,EACVkC,EAAK5C,YACL4C,EAAKlB,oBAAoBH,EAASC,KAAKC,OAAOpB,YAAaK,EAEnE,CACA,OAAOa,CACX,GACHsB,EAAA1G,OAAA,SACMhC,GAAI,wBAAA0I,EAAAxE,OAAA,EAAAoE,EAAA,SACd,SAlCiBa,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAnB,EAAAzD,MAAC,KAADD,UAAA,KArLtBrG,GAAAyG,EAAA3G,EAAAG,UAAAD,GAAAN,OAAAW,eAAAP,EAAA,aAAAmB,UAAA,IAAAnB,EAAA,IAAAA,EAAAE,EAyKI+J,EAxEAtB,CAoFkB,CA/KP,GAoNfnJ,EAAQ,EAAU4H,C,6QC1NlBrH,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAAE,EAAAN,OAAAO,UAAAC,EAAAF,EAAAG,eAAAC,EAAAV,OAAAW,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAAM,KAAA,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAtB,EAAAO,EAAAD,EAAAE,GAAA,OAAAN,OAAAW,eAAAN,EAAAD,EAAA,CAAAQ,MAAAN,EAAAe,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAlB,EAAAD,EAAA,KAAAN,EAAA,aAAAO,GAAAP,EAAA,SAAAO,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,CAAA,WAAAkB,EAAAnB,EAAAD,EAAAE,EAAAE,GAAA,IAAAK,EAAAT,GAAAA,EAAAG,qBAAAkB,EAAArB,EAAAqB,EAAAV,EAAAf,OAAA0B,OAAAb,EAAAN,WAAAU,EAAA,IAAAU,EAAAnB,GAAA,WAAAE,EAAAK,EAAA,WAAAH,MAAAgB,EAAAvB,EAAAC,EAAAW,KAAAF,CAAA,UAAAc,EAAAxB,EAAAD,EAAAE,GAAA,WAAAwB,KAAA,SAAAC,IAAA1B,EAAA2B,KAAA5B,EAAAE,GAAA,OAAAD,GAAA,OAAAyB,KAAA,QAAAC,IAAA1B,EAAA,EAAAD,EAAAoB,KAAAA,EAAA,IAAAS,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAZ,IAAA,UAAAa,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAA1C,EAAA0C,EAAAzB,EAAA,6BAAA0B,EAAAzC,OAAA0C,eAAAC,EAAAF,GAAAA,EAAAA,EAAAG,EAAA,MAAAD,GAAAA,IAAArC,GAAAE,EAAAwB,KAAAW,EAAA5B,KAAAyB,EAAAG,GAAA,IAAAE,EAAAN,EAAAhC,UAAAkB,EAAAlB,UAAAP,OAAA0B,OAAAc,GAAA,SAAAM,EAAAzC,GAAA,0BAAA0C,QAAA,SAAA3C,GAAAN,EAAAO,EAAAD,EAAA,SAAAC,GAAA,YAAA2C,QAAA5C,EAAAC,EAAA,cAAA4C,EAAA5C,EAAAD,GAAA,SAAA8C,EAAA5C,EAAAI,EAAAG,EAAAE,GAAA,IAAAE,EAAAY,EAAAxB,EAAAC,GAAAD,EAAAK,GAAA,aAAAO,EAAAa,KAAA,KAAAX,EAAAF,EAAAc,IAAAE,EAAAd,EAAAP,MAAA,OAAAqB,GAAA,UAAAkB,EAAAlB,IAAAzB,EAAAwB,KAAAC,EAAA,WAAA7B,EAAAgD,QAAAnB,EAAAoB,SAAAC,KAAA,SAAAjD,GAAA6C,EAAA,OAAA7C,EAAAQ,EAAAE,EAAA,WAAAV,GAAA6C,EAAA,QAAA7C,EAAAQ,EAAAE,EAAA,GAAAX,EAAAgD,QAAAnB,GAAAqB,KAAA,SAAAjD,GAAAc,EAAAP,MAAAP,EAAAQ,EAAAM,EAAA,WAAAd,GAAA,OAAA6C,EAAA,QAAA7C,EAAAQ,EAAAE,EAAA,GAAAA,EAAAE,EAAAc,IAAA,KAAAzB,EAAAI,EAAA,gBAAAE,MAAA,SAAAP,EAAAG,GAAA,SAAA+C,IAAA,WAAAnD,EAAA,SAAAA,EAAAE,GAAA4C,EAAA7C,EAAAG,EAAAJ,EAAAE,EAAA,UAAAA,EAAAA,EAAAA,EAAAgD,KAAAC,EAAAA,GAAAA,GAAA,aAAA3B,EAAAxB,EAAAE,EAAAE,GAAA,IAAAE,EAAAuB,EAAA,gBAAApB,EAAAE,GAAA,GAAAL,IAAAyB,EAAA,MAAAqB,MAAA,mCAAA9C,IAAA0B,EAAA,cAAAvB,EAAA,MAAAE,EAAA,OAAAH,MAAAP,EAAAoD,MAAA,OAAAjD,EAAAkD,OAAA7C,EAAAL,EAAAuB,IAAAhB,IAAA,KAAAE,EAAAT,EAAAmD,SAAA,GAAA1C,EAAA,KAAAE,EAAAyC,EAAA3C,EAAAT,GAAA,GAAAW,EAAA,IAAAA,IAAAkB,EAAA,gBAAAlB,CAAA,cAAAX,EAAAkD,OAAAlD,EAAAqD,KAAArD,EAAAsD,MAAAtD,EAAAuB,SAAA,aAAAvB,EAAAkD,OAAA,IAAAhD,IAAAuB,EAAA,MAAAvB,EAAA0B,EAAA5B,EAAAuB,IAAAvB,EAAAuD,kBAAAvD,EAAAuB,IAAA,gBAAAvB,EAAAkD,QAAAlD,EAAAwD,OAAA,SAAAxD,EAAAuB,KAAArB,EAAAyB,EAAA,IAAAK,EAAAX,EAAAzB,EAAAE,EAAAE,GAAA,cAAAgC,EAAAV,KAAA,IAAApB,EAAAF,EAAAiD,KAAArB,EAAAF,EAAAM,EAAAT,MAAAM,EAAA,gBAAAzB,MAAA4B,EAAAT,IAAA0B,KAAAjD,EAAAiD,KAAA,WAAAjB,EAAAV,OAAApB,EAAA0B,EAAA5B,EAAAkD,OAAA,QAAAlD,EAAAuB,IAAAS,EAAAT,IAAA,YAAA6B,EAAAxD,EAAAE,GAAA,IAAAE,EAAAF,EAAAoD,OAAAhD,EAAAN,EAAAY,SAAAR,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAAqD,SAAA,eAAAnD,GAAAJ,EAAAY,SAAAiD,SAAA3D,EAAAoD,OAAA,SAAApD,EAAAyB,IAAA1B,EAAAuD,EAAAxD,EAAAE,GAAA,UAAAA,EAAAoD,SAAA,WAAAlD,IAAAF,EAAAoD,OAAA,QAAApD,EAAAyB,IAAA,IAAAmC,UAAA,oCAAA1D,EAAA,aAAA6B,EAAA,IAAAxB,EAAAgB,EAAAnB,EAAAN,EAAAY,SAAAV,EAAAyB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAxB,EAAAoD,OAAA,QAAApD,EAAAyB,IAAAlB,EAAAkB,IAAAzB,EAAAqD,SAAA,KAAAtB,EAAA,IAAAtB,EAAAF,EAAAkB,IAAA,OAAAhB,EAAAA,EAAA0C,MAAAnD,EAAAF,EAAA+D,YAAApD,EAAAH,MAAAN,EAAA8D,KAAAhE,EAAAiE,QAAA,WAAA/D,EAAAoD,SAAApD,EAAAoD,OAAA,OAAApD,EAAAyB,IAAA1B,GAAAC,EAAAqD,SAAA,KAAAtB,GAAAtB,GAAAT,EAAAoD,OAAA,QAAApD,EAAAyB,IAAA,IAAAmC,UAAA,oCAAA5D,EAAAqD,SAAA,KAAAtB,EAAA,UAAAiC,EAAAjE,GAAA,IAAAD,EAAA,CAAAmE,OAAAlE,EAAA,SAAAA,IAAAD,EAAAoE,SAAAnE,EAAA,SAAAA,IAAAD,EAAAqE,WAAApE,EAAA,GAAAD,EAAAsE,SAAArE,EAAA,SAAAsE,WAAAC,KAAAxE,EAAA,UAAAyE,EAAAxE,GAAA,IAAAD,EAAAC,EAAAyE,YAAA,GAAA1E,EAAA0B,KAAA,gBAAA1B,EAAA2B,IAAA1B,EAAAyE,WAAA1E,CAAA,UAAAuB,EAAAtB,GAAA,KAAAsE,WAAA,EAAAJ,OAAA,SAAAlE,EAAA0C,QAAAuB,EAAA,WAAAS,OAAA,YAAAnC,EAAAxC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAAW,GAAA,GAAAT,EAAA,OAAAA,EAAA0B,KAAA5B,GAAA,sBAAAA,EAAAgE,KAAA,OAAAhE,EAAA,IAAA4E,MAAA5E,EAAA6E,QAAA,KAAAvE,GAAA,EAAAG,EAAA,SAAAuD,IAAA,OAAA1D,EAAAN,EAAA6E,QAAA,GAAAzE,EAAAwB,KAAA5B,EAAAM,GAAA,OAAA0D,EAAAxD,MAAAR,EAAAM,GAAA0D,EAAAX,MAAA,EAAAW,EAAA,OAAAA,EAAAxD,MAAAP,EAAA+D,EAAAX,MAAA,EAAAW,CAAA,SAAAvD,EAAAuD,KAAAvD,CAAA,YAAAqD,UAAAf,EAAA/C,GAAA,2BAAAkC,EAAA/B,UAAAgC,EAAA7B,EAAAmC,EAAA,eAAAjC,MAAA2B,EAAAjB,cAAA,IAAAZ,EAAA6B,EAAA,eAAA3B,MAAA0B,EAAAhB,cAAA,IAAAgB,EAAA4C,YAAApF,EAAAyC,EAAApB,EAAA,qBAAAf,EAAA+E,oBAAA,SAAA9E,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAA+E,YAAA,QAAAhF,IAAAA,IAAAkC,GAAA,uBAAAlC,EAAA8E,aAAA9E,EAAAiF,MAAA,EAAAjF,EAAAkF,KAAA,SAAAjF,GAAA,OAAAL,OAAAuF,eAAAvF,OAAAuF,eAAAlF,EAAAkC,IAAAlC,EAAAmF,UAAAjD,EAAAzC,EAAAO,EAAAc,EAAA,sBAAAd,EAAAE,UAAAP,OAAA0B,OAAAmB,GAAAxC,CAAA,EAAAD,EAAAqF,MAAA,SAAApF,GAAA,OAAAgD,QAAAhD,EAAA,EAAAyC,EAAAG,EAAA1C,WAAAT,EAAAmD,EAAA1C,UAAAU,EAAA,yBAAAb,EAAA6C,cAAAA,EAAA7C,EAAAsF,MAAA,SAAArF,EAAAC,EAAAE,EAAAE,EAAAG,QAAA,IAAAA,IAAAA,EAAA8E,SAAA,IAAA5E,EAAA,IAAAkC,EAAAzB,EAAAnB,EAAAC,EAAAE,EAAAE,GAAAG,GAAA,OAAAT,EAAA+E,oBAAA7E,GAAAS,EAAAA,EAAAqD,OAAAd,KAAA,SAAAjD,GAAA,OAAAA,EAAAoD,KAAApD,EAAAO,MAAAG,EAAAqD,MAAA,IAAAtB,EAAAD,GAAA/C,EAAA+C,EAAA1B,EAAA,aAAArB,EAAA+C,EAAA9B,EAAA,yBAAAjB,EAAA+C,EAAA,mDAAAzC,EAAAwF,KAAA,SAAAvF,GAAA,IAAAD,EAAAJ,OAAAK,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAsE,KAAApE,GAAA,OAAAF,EAAAuF,UAAA,SAAAzB,IAAA,KAAA9D,EAAA2E,QAAA,KAAA5E,EAAAC,EAAAwF,MAAA,GAAAzF,KAAAD,EAAA,OAAAgE,EAAAxD,MAAAP,EAAA+D,EAAAX,MAAA,EAAAW,CAAA,QAAAA,EAAAX,MAAA,EAAAW,CAAA,GAAAhE,EAAAwC,OAAAA,EAAAjB,EAAApB,UAAA,CAAA6E,YAAAzD,EAAAoD,MAAA,SAAA3E,GAAA,QAAA2F,KAAA,OAAA3B,KAAA,OAAAP,KAAA,KAAAC,MAAAzD,EAAA,KAAAoD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAA3B,IAAA1B,EAAA,KAAAsE,WAAA5B,QAAA8B,IAAAzE,EAAA,QAAAE,KAAA,WAAAA,EAAA0F,OAAA,IAAAxF,EAAAwB,KAAA,KAAA1B,KAAA0E,OAAA1E,EAAA2F,MAAA,WAAA3F,GAAAD,EAAA,EAAA6F,KAAA,gBAAAzC,MAAA,MAAApD,EAAA,KAAAsE,WAAA,GAAAG,WAAA,aAAAzE,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,YAAAoE,IAAA,EAAApC,kBAAA,SAAA3D,GAAA,QAAAqD,KAAA,MAAArD,EAAA,IAAAE,EAAA,cAAA8F,EAAA5F,EAAAE,GAAA,OAAAK,EAAAe,KAAA,QAAAf,EAAAgB,IAAA3B,EAAAE,EAAA8D,KAAA5D,EAAAE,IAAAJ,EAAAoD,OAAA,OAAApD,EAAAyB,IAAA1B,KAAAK,CAAA,SAAAA,EAAA,KAAAiE,WAAAM,OAAA,EAAAvE,GAAA,IAAAA,EAAA,KAAAG,EAAA,KAAA8D,WAAAjE,GAAAK,EAAAF,EAAAiE,WAAA,YAAAjE,EAAA0D,OAAA,OAAA6B,EAAA,UAAAvF,EAAA0D,QAAA,KAAAwB,KAAA,KAAA9E,EAAAT,EAAAwB,KAAAnB,EAAA,YAAAM,EAAAX,EAAAwB,KAAAnB,EAAA,iBAAAI,GAAAE,EAAA,SAAA4E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,WAAAuB,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,SAAAxD,GAAA,QAAA8E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,YAAArD,EAAA,MAAAqC,MAAA,kDAAAuC,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,KAAAT,OAAA,SAAA3D,EAAAD,GAAA,QAAAE,EAAA,KAAAqE,WAAAM,OAAA,EAAA3E,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAAiE,WAAArE,GAAA,GAAAI,EAAA6D,QAAA,KAAAwB,MAAAvF,EAAAwB,KAAAtB,EAAA,oBAAAqF,KAAArF,EAAA+D,WAAA,KAAA5D,EAAAH,EAAA,OAAAG,IAAA,UAAAR,GAAA,aAAAA,IAAAQ,EAAA0D,QAAAnE,GAAAA,GAAAS,EAAA4D,aAAA5D,EAAA,UAAAE,EAAAF,EAAAA,EAAAiE,WAAA,UAAA/D,EAAAe,KAAAzB,EAAAU,EAAAgB,IAAA3B,EAAAS,GAAA,KAAA6C,OAAA,YAAAU,KAAAvD,EAAA4D,WAAApC,GAAA,KAAAgE,SAAAtF,EAAA,EAAAsF,SAAA,SAAAhG,EAAAD,GAAA,aAAAC,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,gBAAA1B,EAAAyB,MAAA,aAAAzB,EAAAyB,KAAA,KAAAsC,KAAA/D,EAAA0B,IAAA,WAAA1B,EAAAyB,MAAA,KAAAqE,KAAA,KAAApE,IAAA1B,EAAA0B,IAAA,KAAA2B,OAAA,cAAAU,KAAA,kBAAA/D,EAAAyB,MAAA1B,IAAA,KAAAgE,KAAAhE,GAAAiC,CAAA,EAAAiE,OAAA,SAAAjG,GAAA,QAAAD,EAAA,KAAAuE,WAAAM,OAAA,EAAA7E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAqE,WAAAvE,GAAA,GAAAE,EAAAmE,aAAApE,EAAA,YAAAgG,SAAA/F,EAAAwE,WAAAxE,EAAAoE,UAAAG,EAAAvE,GAAA+B,CAAA,GAAAkE,MAAA,SAAAlG,GAAA,QAAAD,EAAA,KAAAuE,WAAAM,OAAA,EAAA7E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAqE,WAAAvE,GAAA,GAAAE,EAAAiE,SAAAlE,EAAA,KAAAG,EAAAF,EAAAwE,WAAA,aAAAtE,EAAAsB,KAAA,KAAApB,EAAAF,EAAAuB,IAAA8C,EAAAvE,EAAA,QAAAI,CAAA,QAAA8C,MAAA,0BAAAgD,cAAA,SAAApG,EAAAE,EAAAE,GAAA,YAAAmD,SAAA,CAAA3C,SAAA4B,EAAAxC,GAAA+D,WAAA7D,EAAA+D,QAAA7D,GAAA,cAAAkD,SAAA,KAAA3B,IAAA1B,GAAAgC,CAAA,GAAAjC,CAAA,UAAAqG,EAAAjG,EAAAH,EAAAD,EAAAE,EAAAI,EAAAK,EAAAE,GAAA,QAAAJ,EAAAL,EAAAO,GAAAE,GAAAE,EAAAN,EAAAD,KAAA,OAAAJ,GAAA,YAAAJ,EAAAI,EAAA,CAAAK,EAAA4C,KAAApD,EAAAc,GAAAwE,QAAAvC,QAAAjC,GAAAmC,KAAAhD,EAAAI,EAAA,UAAAgG,EAAAlG,GAAA,sBAAAH,EAAA,KAAAD,EAAAuG,UAAA,WAAAhB,QAAA,SAAArF,EAAAI,GAAA,IAAAK,EAAAP,EAAAoG,MAAAvG,EAAAD,GAAA,SAAAyG,EAAArG,GAAAiG,EAAA1F,EAAAT,EAAAI,EAAAmG,EAAAC,EAAA,OAAAtG,EAAA,UAAAsG,EAAAtG,GAAAiG,EAAA1F,EAAAT,EAAAI,EAAAmG,EAAAC,EAAA,QAAAtG,EAAA,CAAAqG,OAAA,eAAAE,EAAA3G,EAAAE,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA2E,OAAA5E,IAAA,KAAAK,EAAAJ,EAAAD,GAAAK,EAAAW,WAAAX,EAAAW,aAAA,EAAAX,EAAAY,cAAA,YAAAZ,IAAAA,EAAAa,UAAA,GAAAvB,OAAAW,eAAAP,EAAA4G,EAAAtG,EAAAuG,KAAAvG,EAAA,WAAAsG,EAAA3G,GAAA,IAAAQ,EAAA,SAAAR,GAAA,aAAA8C,EAAA9C,KAAAA,EAAA,OAAAA,EAAA,IAAAD,EAAAC,EAAAS,OAAAoG,aAAA,YAAA9G,EAAA,KAAAS,EAAAT,EAAA4B,KAAA3B,EAAAC,UAAA,aAAA6C,EAAAtC,GAAA,OAAAA,EAAA,UAAAqD,UAAA,uDAAAiD,OAAA9G,EAAA,CAAA+G,CAAA/G,GAAA,gBAAA8C,EAAAtC,GAAAA,EAAAA,EAAA,GADA,IAAM2G,EAAYF,EAAAA,KAAAA,EAOZmE,EAAS,WAmBX,OAzBJrL,EAmBI,SAAAqL,EAAYhE,GAAiC,IAAjBiE,EAAU/E,UAAA1B,OAAA,QAAA0G,IAAAhF,UAAA,GAAAA,UAAA,GAAG,CAAC,GAnB9C,SAAA5F,EAAAP,GAAA,KAAAO,aAAAP,GAAA,UAAA0D,UAAA,qCAmB+CyD,CAAA,KAAA8D,GACvCvL,KAAK0L,QAAU,IAAIpE,EAAUC,EAAgBiE,GAE7CxL,KAAK+I,aAAe/I,KAAK+I,aAAa4C,KAAK3L,KAC/C,EAvBJI,EAyBI,EAAA2G,IAAA,eAAArG,OAAAkL,EAAApF,EAAAvG,IAAAmF,KAOA,SAAA0D,EAAmBwB,EAAiBd,GAAa,IAAAhC,EAAA4B,EAAA,OAAAnJ,IAAAqB,KAAA,SAAA2H,GAAA,cAAAA,EAAApD,KAAAoD,EAAA/E,MAAA,WACzCoG,GAAoBd,EAAa,CAAAP,EAAA/E,KAAA,cAC3B,IAAIZ,MAAM,wDAAuD,OAQQ,GAL/EkE,EAAU,CACVe,SAAUvI,KAAK0L,QAAQnD,SACvBC,SAAUxI,KAAK0L,QAAQlD,SACvBC,SAAUzI,KAAK0L,QAAQjD,UAEvBW,EAASpJ,KAAK6L,SAAS,eAAgBrE,EAAS8C,EAAiBd,GAEhEc,GAAoBd,EAAa,CAAAP,EAAA/E,KAAA,eAAA+E,EAAAnF,OAAA,SAC3BsF,GAAM,wBAAAH,EAAAjD,OAAA,EAAA8C,EAAA,SAGpB,SAhBiBQ,EAAAC,GAAA,OAAAqC,EAAAlF,MAAC,KAADD,UAAA,IAkBlB,CAAAM,IAAA,OAAArG,OAAAoL,EAAAtF,EAAAvG,IAAAmF,KASA,SAAAuF,EAAWnH,EAAQ6G,EAAQC,EAAiBd,GAAa,IAAAJ,EAAA,OAAAnJ,IAAAqB,KAAA,SAAAsJ,GAAA,cAAAA,EAAA/E,KAAA+E,EAAA1G,MAAA,WACjDoG,GAAoBd,EAAa,CAAAoB,EAAA1G,KAAA,cAC3B,IAAIZ,MAAM,wDAAuD,OAGD,GAAtE8F,EAASpJ,KAAK6L,SAASrI,EAAQ6G,EAAQC,EAAiBd,GAEvDc,GAAoBd,EAAa,CAAAoB,EAAA1G,KAAA,eAAA0G,EAAA9G,OAAA,SAC3BsF,GAAM,wBAAAwB,EAAA5E,OAAA,EAAA2E,EAAA,SAEpB,SAVSM,EAAAC,EAAAC,EAAAC,GAAA,OAAAU,EAAApF,MAAC,KAADD,UAAA,IAYV,CAAAM,IAAA,WAAArG,OAAAqL,EAAAvF,EAAAvG,IAAAmF,KASA,SAAAgF,EAAe5G,EAAQ6G,EAAQC,EAAiBd,GAAa,IAAAwC,EAAAlK,EAAA,OAAA7B,IAAAqB,KAAA,SAAAkJ,GAAA,cAAAA,EAAA3E,KAAA2E,EAAAtG,MAAA,WAErDlE,KAAK0L,QAAQzD,UAAW,CAAFuC,EAAAtG,KAAA,QACtBmG,EAAOrC,YAAc,CACjBO,SAAUvI,KAAK0L,QAAQnD,SACvBN,UAAWjI,KAAK0L,QAAQzD,UACxBO,SAAUxI,KAAK0L,QAAQlD,UAC1BgC,EAAAtG,KAAA,oBACMlE,KAAK0L,QAAQ/D,YAAyB,iBAAXnE,GAA8BxD,KAAK0L,QAAQzD,UAAS,CAAAuC,EAAAtG,KAAA,gBAAAsG,EAAAtG,KAAA,EAExDlE,KAAK0L,QAAQO,sBAAqB,OAA3C,KAAjBD,EAAiBxB,EAAA7G,MACE,CAAF6G,EAAAtG,KAAA,SACjBmG,EAAOrC,YAAcgE,EAAkBxB,EAAAtG,KAAA,wBAAAsG,EAAAtG,KAAA,GAGjClE,KAAK0L,QAAQZ,kBAAkB9K,KAAK+I,aAAc/I,KAAK0L,QAAQ/D,YAChEvE,KAAK,SAAA2H,GACFV,EAAOrC,YAAc+C,CACzB,GAAE,QAAAP,EAAAtG,KAAA,oBAGQ,iBAAXV,GAA8BxD,KAAK0L,QAAQ/D,YAAe3H,KAAK0L,QAAQzD,UAAS,CAAAuC,EAAAtG,KAAA,gBAAAsG,EAAAtG,KAAA,GAEjFlE,KAAK0L,QAAQZ,kBAAkB9K,KAAK+I,aAAc/I,KAAK0L,QAAQ/D,YAChEvE,KAAK,SAAA2H,GACFV,EAAOrC,YAAc+C,CACzB,GAAE,QASV,OANIjJ,EAAO9B,KAAK0L,QAAQQ,aAAa1I,EAAQ6G,EAAQC,EAAiBd,EAAexJ,KAAK+I,aAAc/I,KAAK0L,QAAQ/D,YAEhH3H,KAAK0L,QAAQhE,eACd5F,EAAO9B,KAAK0L,QAAQS,YAAYrK,EAAM0H,GACtC1H,EAAO9B,KAAK0L,QAAQU,kBAAkBtK,IAE1C0I,EAAA1G,OAAA,SACOhC,GAAI,yBAAA0I,EAAAxE,OAAA,EAAAoE,EAAA,SACd,SArCaiB,EAAAC,EAAAN,EAAAqB,GAAA,OAAAN,EAAArF,MAAC,KAADD,UAAA,IAuCd,CAAAM,IAAA,YAAArG,OAAA4L,EAAA9F,EAAAvG,IAAAmF,KAQA,SAAAmH,EAAgBC,EAAOlC,EAAiBd,GAAa,IAAAiD,EAAArD,EAAA,OAAAnJ,IAAAqB,KAAA,SAAAoL,GAAA,cAAAA,EAAA7G,KAAA6G,EAAAxI,MAAA,WAC7CoG,GAAoBd,EAAa,CAAAkD,EAAAxI,KAAA,cAC3B,IAAIZ,MAAM,wDAAuD,OAazC,GAX9BmJ,EAAiBD,EAAMG,IAAI,SAAA7K,GAC3B,IAAIuI,EAASvI,EAAK,GAClB,MAAO,CACH0B,OAAQ1B,EAAK,GACbuI,OAAQA,EAEhB,GAGIjB,EAASpJ,KAAK6L,SAAS,mBAAoB,CAC3CW,MAAOC,GACRnC,EAAiBd,GAEfc,GAAoBd,EAAa,CAAAkD,EAAAxI,KAAA,eAAAwI,EAAA5I,OAAA,SAC3BsF,GAAM,wBAAAsD,EAAA1G,OAAA,EAAAuG,EAAA,SAEpB,SApBcK,EAAAC,EAAAC,GAAA,OAAAR,EAAA5F,MAAC,KAADD,UAAA,IAsBf,CAAAM,IAAA,aAAArG,OAAAqM,EAAAvG,EAAAvG,IAAAmF,KAMA,SAAA4H,EAAiB1C,EAAiB2C,GAAU,IAAA7E,EAAAc,EAAAF,EAAA,YAAA/I,IAAAqB,KAAA,SAAA4L,GAAA,cAAAA,EAAArH,KAAAqH,EAAAhJ,MAAA,cAAAgJ,EAAAhJ,KAAA,EACvBlE,KAAK0L,QAAQO,sBAAqB,OAA3C,GAAJ7D,EAAI8E,EAAAvJ,KAEHsJ,IAAcjN,KAAK0L,QAAQ/D,WAAU,CAAAuF,EAAAhJ,KAAA,aAElCkE,EAAM,CAAF8E,EAAAhJ,KAAA,SAC6J,GAAjKgF,EAAWlJ,KAAK0L,QAAQhE,aAAe,CAAEyB,KAAM,CAAEC,OAAQ,CAAEpB,YAAaI,EAAMF,KAAMlI,KAAK0L,QAAQrD,UAAe,CAAEL,YAAaI,EAAMF,KAAMlI,KAAK0L,QAAQrD,SACpJiC,EAAiB,CAAF4C,EAAAhJ,KAAA,SAOd,OAL8B,IAA3BoG,EAAgBvF,OAChBuF,EAAgBpB,GACkB,IAA3BoB,EAAgBvF,QAEvBuF,EAAgBlC,EAAKJ,YAAahI,KAAK0L,QAAQrD,QAClD6E,EAAApJ,OAAA,yBAAAoJ,EAAApJ,OAAA,SAGMoF,GAAQ,QAAAgE,EAAAhJ,KAAA,wBAAAgJ,EAAApJ,OAAA,SAGZ9D,KAAK+I,aAAauB,IAAgB,QAAA4C,EAAAhJ,KAAA,iBAIlB,GAA3BkE,EAAOpI,KAAK+I,gBACRuB,EAAiB,CAAF4C,EAAAhJ,KAAA,gBAAAgJ,EAAAhJ,KAAA,GACFkE,EAAKhF,KAAK,SAAA8F,GAAQ,OAAIF,EAAK0C,QAAQhE,aAAewB,EAASC,KAAKC,OAAOpB,YAAckB,CAAQ,GAAC,QAA3Gd,EAAI8E,EAAAvJ,KACJuF,EAAWlJ,KAAK0L,QAAQhE,aAAe,CAAEyB,KAAM,CAAEC,OAAQ,CAAEpB,YAAaI,EAAMF,KAAMlI,KAAK0L,QAAQrD,UAAe,CAAEL,YAAaI,EAAKJ,YAAaE,KAAMlI,KAAK0L,QAAQrD,QACrI,IAA3BiC,EAAgBvF,OAChBuF,EAAgBpB,GACkB,IAA3BoB,EAAgBvF,QAEvBuF,EAAgBlC,EAAKJ,YAAahI,KAAK0L,QAAQrD,QAClD6E,EAAAhJ,KAAA,wBAAAgJ,EAAApJ,OAAA,SAEMsE,GAAI,yBAAA8E,EAAAlH,OAAA,EAAAgH,EAAA,SAGtB,SAtCeG,EAAAC,GAAA,OAAAL,EAAArG,MAAC,KAADD,UAAA,IAwChB,CAAAM,IAAA,SAAArG,OAAA2M,EAAA7G,EAAAvG,IAAAmF,KAIA,SAAAkI,IAAA,OAAArN,IAAAqB,KAAA,SAAAiM,GAAA,cAAAA,EAAA1H,KAAA0H,EAAArJ,MAAA,OACyC,OAArClE,KAAK0L,QAAQb,wBAAwB0C,EAAAzJ,OAAA,SAC9B9D,KAAK+I,gBAAc,wBAAAwE,EAAAvH,OAAA,EAAAsH,EAAA,SAC7B,WAHW,OAAAD,EAAA3G,MAAC,KAADD,UAAA,KAvMhBrG,GAAAyG,EAAA3G,EAAAG,UAAAD,GAAAN,OAAAW,eAAAP,EAAA,aAAAmB,UAAA,IAAAnB,EAAA,IAAAA,EAAAE,EAmMIiN,EA9CAN,EA9BAT,EAhDAP,EArBAD,EAzBAF,CA8KY,CAjMD,GAuMflM,EAAQ,EAAU6L,C,4QC7MlBtL,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAAE,EAAAN,OAAAO,UAAAC,EAAAF,EAAAG,eAAAC,EAAAV,OAAAW,gBAAA,SAAAN,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAAM,KAAA,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAtB,EAAAO,EAAAD,EAAAE,GAAA,OAAAN,OAAAW,eAAAN,EAAAD,EAAA,CAAAQ,MAAAN,EAAAe,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAlB,EAAAD,EAAA,KAAAN,EAAA,aAAAO,GAAAP,EAAA,SAAAO,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,CAAA,WAAAkB,EAAAnB,EAAAD,EAAAE,EAAAE,GAAA,IAAAK,EAAAT,GAAAA,EAAAG,qBAAAkB,EAAArB,EAAAqB,EAAAV,EAAAf,OAAA0B,OAAAb,EAAAN,WAAAU,EAAA,IAAAU,EAAAnB,GAAA,WAAAE,EAAAK,EAAA,WAAAH,MAAAgB,EAAAvB,EAAAC,EAAAW,KAAAF,CAAA,UAAAc,EAAAxB,EAAAD,EAAAE,GAAA,WAAAwB,KAAA,SAAAC,IAAA1B,EAAA2B,KAAA5B,EAAAE,GAAA,OAAAD,GAAA,OAAAyB,KAAA,QAAAC,IAAA1B,EAAA,EAAAD,EAAAoB,KAAAA,EAAA,IAAAS,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAZ,IAAA,UAAAa,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAA1C,EAAA0C,EAAAzB,EAAA,6BAAA0B,EAAAzC,OAAA0C,eAAAC,EAAAF,GAAAA,EAAAA,EAAAG,EAAA,MAAAD,GAAAA,IAAArC,GAAAE,EAAAwB,KAAAW,EAAA5B,KAAAyB,EAAAG,GAAA,IAAAE,EAAAN,EAAAhC,UAAAkB,EAAAlB,UAAAP,OAAA0B,OAAAc,GAAA,SAAAM,EAAAzC,GAAA,0BAAA0C,QAAA,SAAA3C,GAAAN,EAAAO,EAAAD,EAAA,SAAAC,GAAA,YAAA2C,QAAA5C,EAAAC,EAAA,cAAA4C,EAAA5C,EAAAD,GAAA,SAAA8C,EAAA5C,EAAAI,EAAAG,EAAAE,GAAA,IAAAE,EAAAY,EAAAxB,EAAAC,GAAAD,EAAAK,GAAA,aAAAO,EAAAa,KAAA,KAAAX,EAAAF,EAAAc,IAAAE,EAAAd,EAAAP,MAAA,OAAAqB,GAAA,UAAAkB,EAAAlB,IAAAzB,EAAAwB,KAAAC,EAAA,WAAA7B,EAAAgD,QAAAnB,EAAAoB,SAAAC,KAAA,SAAAjD,GAAA6C,EAAA,OAAA7C,EAAAQ,EAAAE,EAAA,WAAAV,GAAA6C,EAAA,QAAA7C,EAAAQ,EAAAE,EAAA,GAAAX,EAAAgD,QAAAnB,GAAAqB,KAAA,SAAAjD,GAAAc,EAAAP,MAAAP,EAAAQ,EAAAM,EAAA,WAAAd,GAAA,OAAA6C,EAAA,QAAA7C,EAAAQ,EAAAE,EAAA,GAAAA,EAAAE,EAAAc,IAAA,KAAAzB,EAAAI,EAAA,gBAAAE,MAAA,SAAAP,EAAAG,GAAA,SAAA+C,IAAA,WAAAnD,EAAA,SAAAA,EAAAE,GAAA4C,EAAA7C,EAAAG,EAAAJ,EAAAE,EAAA,UAAAA,EAAAA,EAAAA,EAAAgD,KAAAC,EAAAA,GAAAA,GAAA,aAAA3B,EAAAxB,EAAAE,EAAAE,GAAA,IAAAE,EAAAuB,EAAA,gBAAApB,EAAAE,GAAA,GAAAL,IAAAyB,EAAA,MAAAqB,MAAA,mCAAA9C,IAAA0B,EAAA,cAAAvB,EAAA,MAAAE,EAAA,OAAAH,MAAAP,EAAAoD,MAAA,OAAAjD,EAAAkD,OAAA7C,EAAAL,EAAAuB,IAAAhB,IAAA,KAAAE,EAAAT,EAAAmD,SAAA,GAAA1C,EAAA,KAAAE,EAAAyC,EAAA3C,EAAAT,GAAA,GAAAW,EAAA,IAAAA,IAAAkB,EAAA,gBAAAlB,CAAA,cAAAX,EAAAkD,OAAAlD,EAAAqD,KAAArD,EAAAsD,MAAAtD,EAAAuB,SAAA,aAAAvB,EAAAkD,OAAA,IAAAhD,IAAAuB,EAAA,MAAAvB,EAAA0B,EAAA5B,EAAAuB,IAAAvB,EAAAuD,kBAAAvD,EAAAuB,IAAA,gBAAAvB,EAAAkD,QAAAlD,EAAAwD,OAAA,SAAAxD,EAAAuB,KAAArB,EAAAyB,EAAA,IAAAK,EAAAX,EAAAzB,EAAAE,EAAAE,GAAA,cAAAgC,EAAAV,KAAA,IAAApB,EAAAF,EAAAiD,KAAArB,EAAAF,EAAAM,EAAAT,MAAAM,EAAA,gBAAAzB,MAAA4B,EAAAT,IAAA0B,KAAAjD,EAAAiD,KAAA,WAAAjB,EAAAV,OAAApB,EAAA0B,EAAA5B,EAAAkD,OAAA,QAAAlD,EAAAuB,IAAAS,EAAAT,IAAA,YAAA6B,EAAAxD,EAAAE,GAAA,IAAAE,EAAAF,EAAAoD,OAAAhD,EAAAN,EAAAY,SAAAR,GAAA,GAAAE,IAAAL,EAAA,OAAAC,EAAAqD,SAAA,eAAAnD,GAAAJ,EAAAY,SAAAiD,SAAA3D,EAAAoD,OAAA,SAAApD,EAAAyB,IAAA1B,EAAAuD,EAAAxD,EAAAE,GAAA,UAAAA,EAAAoD,SAAA,WAAAlD,IAAAF,EAAAoD,OAAA,QAAApD,EAAAyB,IAAA,IAAAmC,UAAA,oCAAA1D,EAAA,aAAA6B,EAAA,IAAAxB,EAAAgB,EAAAnB,EAAAN,EAAAY,SAAAV,EAAAyB,KAAA,aAAAlB,EAAAiB,KAAA,OAAAxB,EAAAoD,OAAA,QAAApD,EAAAyB,IAAAlB,EAAAkB,IAAAzB,EAAAqD,SAAA,KAAAtB,EAAA,IAAAtB,EAAAF,EAAAkB,IAAA,OAAAhB,EAAAA,EAAA0C,MAAAnD,EAAAF,EAAA+D,YAAApD,EAAAH,MAAAN,EAAA8D,KAAAhE,EAAAiE,QAAA,WAAA/D,EAAAoD,SAAApD,EAAAoD,OAAA,OAAApD,EAAAyB,IAAA1B,GAAAC,EAAAqD,SAAA,KAAAtB,GAAAtB,GAAAT,EAAAoD,OAAA,QAAApD,EAAAyB,IAAA,IAAAmC,UAAA,oCAAA5D,EAAAqD,SAAA,KAAAtB,EAAA,UAAAiC,EAAAjE,GAAA,IAAAD,EAAA,CAAAmE,OAAAlE,EAAA,SAAAA,IAAAD,EAAAoE,SAAAnE,EAAA,SAAAA,IAAAD,EAAAqE,WAAApE,EAAA,GAAAD,EAAAsE,SAAArE,EAAA,SAAAsE,WAAAC,KAAAxE,EAAA,UAAAyE,EAAAxE,GAAA,IAAAD,EAAAC,EAAAyE,YAAA,GAAA1E,EAAA0B,KAAA,gBAAA1B,EAAA2B,IAAA1B,EAAAyE,WAAA1E,CAAA,UAAAuB,EAAAtB,GAAA,KAAAsE,WAAA,EAAAJ,OAAA,SAAAlE,EAAA0C,QAAAuB,EAAA,WAAAS,OAAA,YAAAnC,EAAAxC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAAW,GAAA,GAAAT,EAAA,OAAAA,EAAA0B,KAAA5B,GAAA,sBAAAA,EAAAgE,KAAA,OAAAhE,EAAA,IAAA4E,MAAA5E,EAAA6E,QAAA,KAAAvE,GAAA,EAAAG,EAAA,SAAAuD,IAAA,OAAA1D,EAAAN,EAAA6E,QAAA,GAAAzE,EAAAwB,KAAA5B,EAAAM,GAAA,OAAA0D,EAAAxD,MAAAR,EAAAM,GAAA0D,EAAAX,MAAA,EAAAW,EAAA,OAAAA,EAAAxD,MAAAP,EAAA+D,EAAAX,MAAA,EAAAW,CAAA,SAAAvD,EAAAuD,KAAAvD,CAAA,YAAAqD,UAAAf,EAAA/C,GAAA,2BAAAkC,EAAA/B,UAAAgC,EAAA7B,EAAAmC,EAAA,eAAAjC,MAAA2B,EAAAjB,cAAA,IAAAZ,EAAA6B,EAAA,eAAA3B,MAAA0B,EAAAhB,cAAA,IAAAgB,EAAA4C,YAAApF,EAAAyC,EAAApB,EAAA,qBAAAf,EAAA+E,oBAAA,SAAA9E,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAA+E,YAAA,QAAAhF,IAAAA,IAAAkC,GAAA,uBAAAlC,EAAA8E,aAAA9E,EAAAiF,MAAA,EAAAjF,EAAAkF,KAAA,SAAAjF,GAAA,OAAAL,OAAAuF,eAAAvF,OAAAuF,eAAAlF,EAAAkC,IAAAlC,EAAAmF,UAAAjD,EAAAzC,EAAAO,EAAAc,EAAA,sBAAAd,EAAAE,UAAAP,OAAA0B,OAAAmB,GAAAxC,CAAA,EAAAD,EAAAqF,MAAA,SAAApF,GAAA,OAAAgD,QAAAhD,EAAA,EAAAyC,EAAAG,EAAA1C,WAAAT,EAAAmD,EAAA1C,UAAAU,EAAA,yBAAAb,EAAA6C,cAAAA,EAAA7C,EAAAsF,MAAA,SAAArF,EAAAC,EAAAE,EAAAE,EAAAG,QAAA,IAAAA,IAAAA,EAAA8E,SAAA,IAAA5E,EAAA,IAAAkC,EAAAzB,EAAAnB,EAAAC,EAAAE,EAAAE,GAAAG,GAAA,OAAAT,EAAA+E,oBAAA7E,GAAAS,EAAAA,EAAAqD,OAAAd,KAAA,SAAAjD,GAAA,OAAAA,EAAAoD,KAAApD,EAAAO,MAAAG,EAAAqD,MAAA,IAAAtB,EAAAD,GAAA/C,EAAA+C,EAAA1B,EAAA,aAAArB,EAAA+C,EAAA9B,EAAA,yBAAAjB,EAAA+C,EAAA,mDAAAzC,EAAAwF,KAAA,SAAAvF,GAAA,IAAAD,EAAAJ,OAAAK,GAAAC,EAAA,WAAAE,KAAAJ,EAAAE,EAAAsE,KAAApE,GAAA,OAAAF,EAAAuF,UAAA,SAAAzB,IAAA,KAAA9D,EAAA2E,QAAA,KAAA5E,EAAAC,EAAAwF,MAAA,GAAAzF,KAAAD,EAAA,OAAAgE,EAAAxD,MAAAP,EAAA+D,EAAAX,MAAA,EAAAW,CAAA,QAAAA,EAAAX,MAAA,EAAAW,CAAA,GAAAhE,EAAAwC,OAAAA,EAAAjB,EAAApB,UAAA,CAAA6E,YAAAzD,EAAAoD,MAAA,SAAA3E,GAAA,QAAA2F,KAAA,OAAA3B,KAAA,OAAAP,KAAA,KAAAC,MAAAzD,EAAA,KAAAoD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAA3B,IAAA1B,EAAA,KAAAsE,WAAA5B,QAAA8B,IAAAzE,EAAA,QAAAE,KAAA,WAAAA,EAAA0F,OAAA,IAAAxF,EAAAwB,KAAA,KAAA1B,KAAA0E,OAAA1E,EAAA2F,MAAA,WAAA3F,GAAAD,EAAA,EAAA6F,KAAA,gBAAAzC,MAAA,MAAApD,EAAA,KAAAsE,WAAA,GAAAG,WAAA,aAAAzE,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,YAAAoE,IAAA,EAAApC,kBAAA,SAAA3D,GAAA,QAAAqD,KAAA,MAAArD,EAAA,IAAAE,EAAA,cAAA8F,EAAA5F,EAAAE,GAAA,OAAAK,EAAAe,KAAA,QAAAf,EAAAgB,IAAA3B,EAAAE,EAAA8D,KAAA5D,EAAAE,IAAAJ,EAAAoD,OAAA,OAAApD,EAAAyB,IAAA1B,KAAAK,CAAA,SAAAA,EAAA,KAAAiE,WAAAM,OAAA,EAAAvE,GAAA,IAAAA,EAAA,KAAAG,EAAA,KAAA8D,WAAAjE,GAAAK,EAAAF,EAAAiE,WAAA,YAAAjE,EAAA0D,OAAA,OAAA6B,EAAA,UAAAvF,EAAA0D,QAAA,KAAAwB,KAAA,KAAA9E,EAAAT,EAAAwB,KAAAnB,EAAA,YAAAM,EAAAX,EAAAwB,KAAAnB,EAAA,iBAAAI,GAAAE,EAAA,SAAA4E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,WAAAuB,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,SAAAxD,GAAA,QAAA8E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,YAAArD,EAAA,MAAAqC,MAAA,kDAAAuC,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,KAAAT,OAAA,SAAA3D,EAAAD,GAAA,QAAAE,EAAA,KAAAqE,WAAAM,OAAA,EAAA3E,GAAA,IAAAA,EAAA,KAAAI,EAAA,KAAAiE,WAAArE,GAAA,GAAAI,EAAA6D,QAAA,KAAAwB,MAAAvF,EAAAwB,KAAAtB,EAAA,oBAAAqF,KAAArF,EAAA+D,WAAA,KAAA5D,EAAAH,EAAA,OAAAG,IAAA,UAAAR,GAAA,aAAAA,IAAAQ,EAAA0D,QAAAnE,GAAAA,GAAAS,EAAA4D,aAAA5D,EAAA,UAAAE,EAAAF,EAAAA,EAAAiE,WAAA,UAAA/D,EAAAe,KAAAzB,EAAAU,EAAAgB,IAAA3B,EAAAS,GAAA,KAAA6C,OAAA,YAAAU,KAAAvD,EAAA4D,WAAApC,GAAA,KAAAgE,SAAAtF,EAAA,EAAAsF,SAAA,SAAAhG,EAAAD,GAAA,aAAAC,EAAAyB,KAAA,MAAAzB,EAAA0B,IAAA,gBAAA1B,EAAAyB,MAAA,aAAAzB,EAAAyB,KAAA,KAAAsC,KAAA/D,EAAA0B,IAAA,WAAA1B,EAAAyB,MAAA,KAAAqE,KAAA,KAAApE,IAAA1B,EAAA0B,IAAA,KAAA2B,OAAA,cAAAU,KAAA,kBAAA/D,EAAAyB,MAAA1B,IAAA,KAAAgE,KAAAhE,GAAAiC,CAAA,EAAAiE,OAAA,SAAAjG,GAAA,QAAAD,EAAA,KAAAuE,WAAAM,OAAA,EAAA7E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAqE,WAAAvE,GAAA,GAAAE,EAAAmE,aAAApE,EAAA,YAAAgG,SAAA/F,EAAAwE,WAAAxE,EAAAoE,UAAAG,EAAAvE,GAAA+B,CAAA,GAAAkE,MAAA,SAAAlG,GAAA,QAAAD,EAAA,KAAAuE,WAAAM,OAAA,EAAA7E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAqE,WAAAvE,GAAA,GAAAE,EAAAiE,SAAAlE,EAAA,KAAAG,EAAAF,EAAAwE,WAAA,aAAAtE,EAAAsB,KAAA,KAAApB,EAAAF,EAAAuB,IAAA8C,EAAAvE,EAAA,QAAAI,CAAA,QAAA8C,MAAA,0BAAAgD,cAAA,SAAApG,EAAAE,EAAAE,GAAA,YAAAmD,SAAA,CAAA3C,SAAA4B,EAAAxC,GAAA+D,WAAA7D,EAAA+D,QAAA7D,GAAA,cAAAkD,SAAA,KAAA3B,IAAA1B,GAAAgC,CAAA,GAAAjC,CAAA,UAAAqG,EAAAjG,EAAAH,EAAAD,EAAAE,EAAAI,EAAAK,EAAAE,GAAA,QAAAJ,EAAAL,EAAAO,GAAAE,GAAAE,EAAAN,EAAAD,KAAA,OAAAJ,GAAA,YAAAJ,EAAAI,EAAA,CAAAK,EAAA4C,KAAApD,EAAAc,GAAAwE,QAAAvC,QAAAjC,GAAAmC,KAAAhD,EAAAI,EAAA,UAAAgG,EAAAlG,GAAA,sBAAAH,EAAA,KAAAD,EAAAuG,UAAA,WAAAhB,QAAA,SAAArF,EAAAI,GAAA,IAAAK,EAAAP,EAAAoG,MAAAvG,EAAAD,GAAA,SAAAyG,EAAArG,GAAAiG,EAAA1F,EAAAT,EAAAI,EAAAmG,EAAAC,EAAA,OAAAtG,EAAA,UAAAsG,EAAAtG,GAAAiG,EAAA1F,EAAAT,EAAAI,EAAAmG,EAAAC,EAAA,QAAAtG,EAAA,CAAAqG,OAAA,eAAAE,EAAA3G,EAAAE,GAAA,QAAAD,EAAA,EAAAA,EAAAC,EAAA2E,OAAA5E,IAAA,KAAAK,EAAAJ,EAAAD,GAAAK,EAAAW,WAAAX,EAAAW,aAAA,EAAAX,EAAAY,cAAA,YAAAZ,IAAAA,EAAAa,UAAA,GAAAvB,OAAAW,eAAAP,EAAA4G,EAAAtG,EAAAuG,KAAAvG,EAAA,WAAAsG,EAAA3G,GAAA,IAAAQ,EAAA,SAAAR,GAAA,aAAA8C,EAAA9C,KAAAA,EAAA,OAAAA,EAAA,IAAAD,EAAAC,EAAAS,OAAAoG,aAAA,YAAA9G,EAAA,KAAAS,EAAAT,EAAA4B,KAAA3B,EAAAC,UAAA,aAAA6C,EAAAtC,GAAA,OAAAA,EAAA,UAAAqD,UAAA,uDAAAiD,OAAA9G,EAAA,CAAA+G,CAAA/G,GAAA,gBAAA8C,EAAAtC,GAAAA,EAAAA,EAAA,GADA,IAAM6M,EAAyB,oBAAXC,OAAyBrG,EAAQ,KAAU,KACzDsG,EAA0B,oBAAXD,OAAyBrG,EAAQ,KAAW,KAE3DC,EAAQ,WAcT,OAhBLnH,EAII,SAAAmH,EAAY7D,EAAQ6E,EAAQgC,EAAQC,IAJxC,SAAAzJ,EAAAP,GAAA,KAAAO,aAAAP,GAAA,UAAA0D,UAAA,qCAIyDyD,CAAA,KAAAJ,GACjDrH,KAAK2N,OAAS,CACVC,QAAS,CACL,eAAgB,qBAGxB5N,KAAKsK,gBAAkBA,EACvBtK,KAAKqI,OAASA,EACdrI,KAAK6N,KAAO,CACRrK,OAAQA,GAAU,GAClB6G,OAAQA,EAEhB,EAhBJjK,EAgBK,EAAA2G,IAAA,aAAArG,MAED,WAGI,MAAO,YAFMV,KAAKqI,QAAU,iBACJyF,QAAQ,WAAY,IAAIA,QAAQ,MAAO,IAC9B,SACrC,GAAC,CAAA/G,IAAA,SAAArG,MAED,SAAOyI,GAKH,OAJiB4E,KAAKC,UAAU,CAC5BxK,OAAQ2F,EAAK3F,QAAU,GACvB6G,OAAQlB,EAAKkB,QAGrB,GAEA,CAAAtD,IAAA,OAAArG,OAAAuN,EAAAzH,EAAAvG,IAAAmF,KAOA,SAAAuF,EAAW/C,GAAO,IAAAsG,EAAAL,EAAAD,EAAAO,EAAAC,EAAAC,EAAAC,EAAA9G,EAAAwB,EAAA,YAAA/I,IAAAqB,KAAA,SAAAsJ,GAAA,cAAAA,EAAA/E,KAAA+E,EAAA1G,MAAA,OAGqB,GAF7BgK,EAAMlO,KAAKuO,aACXV,EAAO7N,KAAKwO,OAAOxO,KAAK6N,MACxBD,EAAU5N,KAAK2N,OAAOC,QAEN,oBAAXH,SAA0BA,OAAOgB,MAAK,CAAA7D,EAAA1G,KAAA,QAW3C,OARIkK,EAAeK,MAAMP,EAAK,CAC5B1K,OAAQ,OACRoK,QAASA,EACTC,KAAMA,IAGJQ,EAAiB,IAAI5I,QAAQ,SAACiJ,EAAGC,GACnCR,EAAeS,WAAW,kBAAMD,EAAO,IAAIrL,MAAM,qBAAqB,EAAY,IAAVsE,EAC5E,GAAEgD,EAAA9G,OAAA,SAEK2B,QAAQoJ,KAAK,CAACT,EAAcC,IAC9BjL,KAAI,eAAAsH,EAAAlE,EAAAvG,IAAAmF,KAAC,SAAA0D,EAAMI,GAAQ,IAAAC,EAAA,OAAAlJ,IAAAqB,KAAA,SAAA2H,GAAA,cAAAA,EAAApD,KAAAoD,EAAA/E,MAAA,OACW,OAA3B4K,aAAaX,GAAclF,EAAA/E,KAAA,EACRgF,EAAS6F,OAAM,OAIjC,OAJK5F,EAAIF,EAAAtF,KACVuF,EAASC,KAAOA,EACZH,EAAKsB,kBAAoBnB,EAAKS,OAC9BZ,EAAKsB,gBAAgBnB,EAAKC,QAC7BH,EAAAnF,OAAA,SACMoF,GAAQ,wBAAAD,EAAAjD,OAAA,EAAA8C,EAAA,IAClB,gBAAAS,GAAA,OAAAmB,EAAAhE,MAAA,KAAAD,UAAA,EARI,IASJJ,MAAM,SAAAuD,GACH,OAAOnE,QAAQkJ,OAAO/E,EAC1B,IAAE,OAWL,OAPK0E,EAAS,IAAIU,IAAId,GACjB1G,EAAU,CACZyH,SAAUX,EAAOW,SACjB/G,KAAMoG,EAAOY,SACb1L,OAAQ,OACRoK,QAASA,EACThG,QAAmB,IAAVA,GACZgD,EAAA9G,OAAA,SAEM,IAAI2B,QAAQ,SAACvC,EAASyL,GACzB,IAAMQ,GAA2B,WAApBb,EAAOc,SAAwB1B,EAAQF,GAAM6B,QAAQ7H,EAAS,SAAA8H,GACvE,IAAInG,EAAO,GACXmG,EAAIC,GAAG,OAAQ,SAAAC,GAAK,OAAIrG,GAAQqG,CAAK,GACrCF,EAAIC,GAAG,MAAO,WACV,IACI,IAAME,EAAa1B,KAAK2B,MAAMvG,GAC9BmG,EAAInG,KAAOsG,EACPzG,EAAKsB,kBAAoBmF,EAAW7F,OACpCZ,EAAKsB,gBAAgBmF,EAAWrG,QAEpClG,EAAQoM,EACZ,CAAE,MAAO1F,GACL+E,EAAO/E,EACX,CACJ,EACJ,GAEAuF,EAAII,GAAG,QAASZ,GAChBQ,EAAII,GAAG,UAAW,WACdJ,EAAIQ,UACJhB,EAAO,IAAIrL,MAAM,qBACrB,GAEA6L,EAAIS,MAAM/B,GACVsB,EAAIU,KACR,IAAE,yBAAAjF,EAAA5E,OAAA,EAAA2E,EAAA,SAET,SAvESrB,GAAA,OAAA2E,EAAAvH,MAAC,KAADD,UAAA,KAvCdrG,GAAAyG,EAAA3G,EAAAG,UAAAD,GAAAN,OAAAW,eAAAP,EAAA,aAAAmB,UAAA,IAAAnB,EAAA,IAAAA,EAAAE,EAgCI6N,CAOU,CArCA,GA+GdvO,EAAQ,EAAU2H,C,+qBClHlB,IAAMyI,EAAmB1I,EAAAA,KAAAA,EAMnBD,EAA2B,WAW5B,O,EAVD,SAAAA,K,4FAAaM,CAAA,KAAAN,GACTnH,KAAK+P,gBAAkB,wBACvB/P,KAAKgQ,WAAa,mBAEU,oBAAjBC,cAAiD,OAAjBA,cAAyD,mBAAzBA,aAAaC,QAEpFlQ,KAAKiQ,aAAe,IAAIH,EAExB9P,KAAKiQ,aAAeA,YAE5B,E,EAAC,EAAAlJ,IAAA,MAAArG,MAED,WACI,IAAIsL,EAAsBhM,KAAKiQ,aAAaC,QAAQlQ,KAAK+P,iBACrDI,EAAsBnQ,KAAKiQ,aAAaC,QAAQlQ,KAAKgQ,aAAe,gBACpEI,GAAsB,EAE1B,GAAIpE,GAAqBmE,EACrB,IACIC,EAAkB,CACdpI,YAAa+F,KAAK2B,MAAM1D,GACxB3D,OAAQ8H,EAEhB,CAAE,MAAOjQ,GAGL,OAFAmQ,QAAQC,IAAI,QAASpQ,IAEd,CACX,CAEJ,OAAOkQ,CACX,GAAC,CAAArJ,IAAA,MAAArG,MAED,SAAIsH,EAAaK,GACVL,GACChI,KAAKiQ,aAAaM,QAAQvQ,KAAK+P,gBAAiBhC,KAAKC,UAAUhG,IAEhEK,GACCrI,KAAKiQ,aAAaM,QAAQvQ,KAAKgQ,WAAY3H,EAEnD,GAAC,CAAAtB,IAAA,QAAArG,MAED,WACIV,KAAKiQ,aAAaO,WAAWxQ,KAAK+P,iBAClC/P,KAAKiQ,aAAaO,WAAWxQ,KAAKgQ,WACtC,I,gFAAC,CA7C4B,GAgDjCtQ,EAAQ,EAAUyH,C,6qBCtDlB,IAuBM2I,EAAgB,WAGjB,O,EAFD,SAAAA,K,4FAAarI,CAAA,KAAAqI,GACT9P,KAAKyQ,OAAS,CAAC,CACnB,G,EAAC,EAAA1J,IAAA,UAAArG,MAED,SAAQqG,GACJ,OAAO/G,KAAKyQ,OAAO1J,EACvB,GAAC,CAAAA,IAAA,UAAArG,MAED,SAAQqG,EAAKrG,GACTV,KAAKyQ,OAAO1J,GAAOrG,CACvB,GAAC,CAAAqG,IAAA,aAAArG,MAED,SAAWqG,UACA/G,KAAKyQ,OAAO1J,EACvB,GAAC,CAAAA,IAAA,QAAArG,MAED,WACIV,KAAKyQ,OAAS,CAAC,CACnB,M,6EAAC,CAnBiB,GAsBtB/Q,EAAQ,EAAUoQ,C,mBCxCPtQ,E,sOAAAA,EAcTQ,UATG,KAFU,EAAF,WACP,OAAQR,EAAgB,WAYP,YAAL,oBAANiO,OAAM,YAAAxK,EAANwK,UACRrG,EAAAA,KAAAA,UAGyBA,EAAQ,KACjBA,EAAAA,KAAAA,EAhBf,UAFM,OAEN,Y,SCRL,IAAIyC,EAAW/J,OAAOO,UAAUwJ,SAE5B6G,EACgB,oBAAXC,QACiB,mBAAjBA,OAAOC,OACgB,mBAAvBD,OAAOE,aACS,mBAAhBF,OAAOG,KA+DhBnR,EAAOD,QAlBP,SAAqBgB,EAAOqQ,EAAkBhM,GAC5C,GAAqB,iBAAVrE,EACT,MAAM,IAAIsD,UAAU,yCAGtB,OA/CsBgN,EA+CJtQ,EA9C2B,gBAAtCmJ,EAAS/H,KAAKkP,GAAOjL,MAAM,GAAI,GAGxC,SAA0BkL,EAAKC,EAAYnM,GACzCmM,KAAgB,EAEhB,IAAIC,EAAYF,EAAIG,WAAaF,EAEjC,GAAIC,EAAY,EACd,MAAM,IAAIE,WAAW,6BAGvB,QAAe5F,IAAX1G,EACFA,EAASoM,OAIT,IAFApM,KAAY,GAECoM,EACX,MAAM,IAAIE,WAAW,6BAIzB,OAAOX,EACHC,OAAOG,KAAKG,EAAIlL,MAAMmL,EAAYA,EAAanM,IAC/C,IAAI4L,OAAO,IAAIW,WAAWL,EAAIlL,MAAMmL,EAAYA,EAAanM,IACnE,CAsBWwM,CAAgB7Q,EAAOqQ,EAAkBhM,GAG7B,iBAAVrE,EAvBb,SAAqB8Q,EAAQC,GAK3B,GAJwB,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,SAGRd,OAAOe,WAAWD,GACrB,MAAM,IAAIzN,UAAU,8CAGtB,OAAO0M,EACHC,OAAOG,KAAKU,EAAQC,GACpB,IAAId,OAAOa,EAAQC,EACzB,CAYWE,CAAWjR,EAAOqQ,GAGpBL,EACHC,OAAOG,KAAKpQ,GACZ,IAAIiQ,OAAOjQ,GAzDjB,IAAwBsQ,CA0DxB,C,SC9DA,IAAIY,EAAW,SAAUlS,GACvB,aAEA,IAGI+L,EAHAoG,EAAK/R,OAAOO,UACZyR,EAASD,EAAGtR,eACZE,EAAiBX,OAAOW,gBAAkB,SAAUwQ,EAAKlK,EAAKgL,GAAQd,EAAIlK,GAAOgL,EAAKrR,KAAO,EAE7FsR,EAA4B,mBAAXpR,OAAwBA,OAAS,CAAC,EACnDqR,EAAiBD,EAAQlR,UAAY,aACrCoR,EAAsBF,EAAQhR,eAAiB,kBAC/CmR,EAAoBH,EAAQ9Q,aAAe,gBAE/C,SAAStB,EAAOqR,EAAKlK,EAAKrG,GAOxB,OANAZ,OAAOW,eAAewQ,EAAKlK,EAAK,CAC9BrG,MAAOA,EACPS,YAAY,EACZC,cAAc,EACdC,UAAU,IAEL4P,EAAIlK,EACb,CACA,IAEEnH,EAAO,CAAC,EAAG,GACb,CAAE,MAAOwS,GACPxS,EAAS,SAASqR,EAAKlK,EAAKrG,GAC1B,OAAOuQ,EAAIlK,GAAOrG,CACpB,CACF,CAEA,SAASY,EAAK+Q,EAASC,EAASvS,EAAMwS,GAEpC,IAAIC,EAAiBF,GAAWA,EAAQjS,qBAAqBkB,EAAY+Q,EAAU/Q,EAC/EkR,EAAY3S,OAAO0B,OAAOgR,EAAenS,WACzCqS,EAAU,IAAIjR,EAAQ8Q,GAAe,IAMzC,OAFA9R,EAAegS,EAAW,UAAW,CAAE/R,MAAOgB,EAAiB2Q,EAAStS,EAAM2S,KAEvED,CACT,CAaA,SAAS9Q,EAASgR,EAAI1B,EAAKpP,GACzB,IACE,MAAO,CAAED,KAAM,SAAUC,IAAK8Q,EAAG7Q,KAAKmP,EAAKpP,GAC7C,CAAE,MAAOuQ,GACP,MAAO,CAAExQ,KAAM,QAASC,IAAKuQ,EAC/B,CACF,CAlBA1S,EAAQ4B,KAAOA,EAoBf,IAAIsR,EAAyB,iBACzBC,EAAyB,iBACzBC,EAAoB,YACpBC,EAAoB,YAIpBC,EAAmB,CAAC,EAMxB,SAASzR,IAAa,CACtB,SAASa,IAAqB,CAC9B,SAASC,IAA8B,CAIvC,IAAI4Q,EAAoB,CAAC,EACzBrT,EAAOqT,EAAmBhB,EAAgB,WACxC,OAAOjS,IACT,GAEA,IAAIkT,EAAWpT,OAAO0C,eAClB2Q,EAA0BD,GAAYA,EAASA,EAASxQ,EAAO,MAC/DyQ,GACAA,IAA4BtB,GAC5BC,EAAOhQ,KAAKqR,EAAyBlB,KAGvCgB,EAAoBE,GAGtB,IAAIC,EAAK/Q,EAA2BhC,UAClCkB,EAAUlB,UAAYP,OAAO0B,OAAOyR,GAgBtC,SAASrQ,EAAsBvC,GAC7B,CAAC,OAAQ,QAAS,UAAUwC,QAAQ,SAASW,GAC3C5D,EAAOS,EAAWmD,EAAQ,SAAS3B,GACjC,OAAO7B,KAAK8C,QAAQU,EAAQ3B,EAC9B,EACF,EACF,CA+BA,SAASkB,EAAc0P,EAAWY,GAChC,SAASrQ,EAAOQ,EAAQ3B,EAAKqB,EAASyL,GACpC,IAAI2E,EAAS3R,EAAS8Q,EAAUjP,GAASiP,EAAW5Q,GACpD,GAAoB,UAAhByR,EAAO1R,KAEJ,CACL,IAAIwH,EAASkK,EAAOzR,IAChBnB,EAAQ0I,EAAO1I,MACnB,OAAIA,GACiB,iBAAVA,GACPoR,EAAOhQ,KAAKpB,EAAO,WACd2S,EAAYnQ,QAAQxC,EAAMyC,SAASC,KAAK,SAAS1C,GACtDsC,EAAO,OAAQtC,EAAOwC,EAASyL,EACjC,EAAG,SAASyD,GACVpP,EAAO,QAASoP,EAAKlP,EAASyL,EAChC,GAGK0E,EAAYnQ,QAAQxC,GAAO0C,KAAK,SAASmQ,GAI9CnK,EAAO1I,MAAQ6S,EACfrQ,EAAQkG,EACV,EAAG,SAASQ,GAGV,OAAO5G,EAAO,QAAS4G,EAAO1G,EAASyL,EACzC,EACF,CAzBEA,EAAO2E,EAAOzR,IA0BlB,CAEA,IAAI2R,EAgCJ/S,EAAeT,KAAM,UAAW,CAAEU,MA9BlC,SAAiB8C,EAAQ3B,GACvB,SAASwB,IACP,OAAO,IAAIgQ,EAAY,SAASnQ,EAASyL,GACvC3L,EAAOQ,EAAQ3B,EAAKqB,EAASyL,EAC/B,EACF,CAEA,OAAO6E,EAaLA,EAAkBA,EAAgBpQ,KAChCC,EAGAA,GACEA,GACR,GAKF,CA0BA,SAAS3B,EAAiB2Q,EAAStS,EAAM2S,GACvC,IAAIe,EAAQb,EAEZ,OAAO,SAAgBpP,EAAQ3B,GAC7B,GAAI4R,IAAUX,EACZ,MAAM,IAAIxP,MAAM,gCAGlB,GAAImQ,IAAUV,EAAmB,CAC/B,GAAe,UAAXvP,EACF,MAAM3B,EAKR,OAAO6R,GACT,CAKA,IAHAhB,EAAQlP,OAASA,EACjBkP,EAAQ7Q,IAAMA,IAED,CACX,IAAI4B,EAAWiP,EAAQjP,SACvB,GAAIA,EAAU,CACZ,IAAIkQ,EAAiBjQ,EAAoBD,EAAUiP,GACnD,GAAIiB,EAAgB,CAClB,GAAIA,IAAmBX,EAAkB,SACzC,OAAOW,CACT,CACF,CAEA,GAAuB,SAAnBjB,EAAQlP,OAGVkP,EAAQ/O,KAAO+O,EAAQ9O,MAAQ8O,EAAQ7Q,SAElC,GAAuB,UAAnB6Q,EAAQlP,OAAoB,CACrC,GAAIiQ,IAAUb,EAEZ,MADAa,EAAQV,EACFL,EAAQ7Q,IAGhB6Q,EAAQ7O,kBAAkB6O,EAAQ7Q,IAEpC,KAA8B,WAAnB6Q,EAAQlP,QACjBkP,EAAQ5O,OAAO,SAAU4O,EAAQ7Q,KAGnC4R,EAAQX,EAER,IAAIQ,EAAS3R,EAAS0Q,EAAStS,EAAM2S,GACrC,GAAoB,WAAhBY,EAAO1R,KAAmB,CAO5B,GAJA6R,EAAQf,EAAQnP,KACZwP,EACAF,EAEAS,EAAOzR,MAAQmR,EACjB,SAGF,MAAO,CACLtS,MAAO4S,EAAOzR,IACd0B,KAAMmP,EAAQnP,KAGlB,CAA2B,UAAhB+P,EAAO1R,OAChB6R,EAAQV,EAGRL,EAAQlP,OAAS,QACjBkP,EAAQ7Q,IAAMyR,EAAOzR,IAEzB,CACF,CACF,CAMA,SAAS6B,EAAoBD,EAAUiP,GACrC,IAAIkB,EAAalB,EAAQlP,OACrBA,EAASC,EAAS3C,SAAS8S,GAC/B,GAAIpQ,IAAWiI,EAOb,OAHAiH,EAAQjP,SAAW,KAGA,UAAfmQ,GAA0BnQ,EAAS3C,SAAiB,SAGtD4R,EAAQlP,OAAS,SACjBkP,EAAQ7Q,IAAM4J,EACd/H,EAAoBD,EAAUiP,GAEP,UAAnBA,EAAQlP,SAMK,WAAfoQ,IACFlB,EAAQlP,OAAS,QACjBkP,EAAQ7Q,IAAM,IAAImC,UAChB,oCAAsC4P,EAAa,aAN5CZ,EAYb,IAAIM,EAAS3R,EAAS6B,EAAQC,EAAS3C,SAAU4R,EAAQ7Q,KAEzD,GAAoB,UAAhByR,EAAO1R,KAIT,OAHA8Q,EAAQlP,OAAS,QACjBkP,EAAQ7Q,IAAMyR,EAAOzR,IACrB6Q,EAAQjP,SAAW,KACZuP,EAGT,IAAIa,EAAOP,EAAOzR,IAElB,OAAMgS,EAOFA,EAAKtQ,MAGPmP,EAAQjP,EAASQ,YAAc4P,EAAKnT,MAGpCgS,EAAQxO,KAAOT,EAASU,QAQD,WAAnBuO,EAAQlP,SACVkP,EAAQlP,OAAS,OACjBkP,EAAQ7Q,IAAM4J,GAUlBiH,EAAQjP,SAAW,KACZuP,GANEa,GA3BPnB,EAAQlP,OAAS,QACjBkP,EAAQ7Q,IAAM,IAAImC,UAAU,oCAC5B0O,EAAQjP,SAAW,KACZuP,EA+BX,CAqBA,SAAS5O,EAAa0P,GACpB,IAAIC,EAAQ,CAAE1P,OAAQyP,EAAK,IAEvB,KAAKA,IACPC,EAAMzP,SAAWwP,EAAK,IAGpB,KAAKA,IACPC,EAAMxP,WAAauP,EAAK,GACxBC,EAAMvP,SAAWsP,EAAK,IAGxB9T,KAAKyE,WAAWC,KAAKqP,EACvB,CAEA,SAASpP,EAAcoP,GACrB,IAAIT,EAASS,EAAMnP,YAAc,CAAC,EAClC0O,EAAO1R,KAAO,gBACP0R,EAAOzR,IACdkS,EAAMnP,WAAa0O,CACrB,CAEA,SAAS7R,EAAQ8Q,GAIfvS,KAAKyE,WAAa,CAAC,CAAEJ,OAAQ,SAC7BkO,EAAY1P,QAAQuB,EAAcpE,MAClCA,KAAK6E,OAAM,EACb,CA8BA,SAASnC,EAAOsR,GACd,GAAIA,EAAU,CACZ,IAAIC,EAAiBD,EAAS/B,GAC9B,GAAIgC,EACF,OAAOA,EAAenS,KAAKkS,GAG7B,GAA6B,mBAAlBA,EAAS9P,KAClB,OAAO8P,EAGT,IAAKlP,MAAMkP,EAASjP,QAAS,CAC3B,IAAIpE,GAAK,EAAGuD,EAAO,SAASA,IAC1B,OAASvD,EAAIqT,EAASjP,QACpB,GAAI+M,EAAOhQ,KAAKkS,EAAUrT,GAGxB,OAFAuD,EAAKxD,MAAQsT,EAASrT,GACtBuD,EAAKX,MAAO,EACLW,EAOX,OAHAA,EAAKxD,MAAQ+K,EACbvH,EAAKX,MAAO,EAELW,CACT,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAGA,MAAO,CAAEA,KAAMwP,EACjB,CAGA,SAASA,IACP,MAAO,CAAEhT,MAAO+K,EAAWlI,MAAM,EACnC,CA8MA,OAnnBAnB,EAAkB/B,UAAYgC,EAC9B5B,EAAe2S,EAAI,cAAe,CAAE1S,MAAO2B,EAA4BjB,cAAc,IACrFX,EACE4B,EACA,cACA,CAAE3B,MAAO0B,EAAmBhB,cAAc,IAE5CgB,EAAkB4C,YAAcpF,EAC9ByC,EACA8P,EACA,qBAaFzS,EAAQuF,oBAAsB,SAASiP,GACrC,IAAIC,EAAyB,mBAAXD,GAAyBA,EAAOhP,YAClD,QAAOiP,IACHA,IAAS/R,GAG2B,uBAAnC+R,EAAKnP,aAAemP,EAAKhP,MAEhC,EAEAzF,EAAQ0F,KAAO,SAAS8O,GAQtB,OAPIpU,OAAOuF,eACTvF,OAAOuF,eAAe6O,EAAQ7R,IAE9B6R,EAAO5O,UAAYjD,EACnBzC,EAAOsU,EAAQ/B,EAAmB,sBAEpC+B,EAAO7T,UAAYP,OAAO0B,OAAO4R,GAC1Bc,CACT,EAMAxU,EAAQ6F,MAAQ,SAAS1D,GACvB,MAAO,CAAEsB,QAAStB,EACpB,EAqEAe,EAAsBG,EAAc1C,WACpCT,EAAOmD,EAAc1C,UAAW6R,EAAqB,WACnD,OAAOlS,IACT,GACAN,EAAQqD,cAAgBA,EAKxBrD,EAAQ8F,MAAQ,SAAS6M,EAASC,EAASvS,EAAMwS,EAAac,QACnC,IAArBA,IAAwBA,EAAc5N,SAE1C,IAAI2O,EAAO,IAAIrR,EACbzB,EAAK+Q,EAASC,EAASvS,EAAMwS,GAC7Bc,GAGF,OAAO3T,EAAQuF,oBAAoBqN,GAC/B8B,EACAA,EAAKlQ,OAAOd,KAAK,SAASgG,GACxB,OAAOA,EAAO7F,KAAO6F,EAAO1I,MAAQ0T,EAAKlQ,MAC3C,EACN,EAsKAtB,EAAsBwQ,GAEtBxT,EAAOwT,EAAIjB,EAAmB,aAO9BvS,EAAOwT,EAAInB,EAAgB,WACzB,OAAOjS,IACT,GAEAJ,EAAOwT,EAAI,WAAY,WACrB,MAAO,oBACT,GAiCA1T,EAAQgG,KAAO,SAAS2O,GACtB,IAAIC,EAASxU,OAAOuU,GAChB3O,EAAO,GACX,IAAK,IAAIqB,KAAOuN,EACd5O,EAAKhB,KAAKqC,GAMZ,OAJArB,EAAKC,UAIE,SAASzB,IACd,KAAOwB,EAAKX,QAAQ,CAClB,IAAIgC,EAAMrB,EAAKE,MACf,GAAImB,KAAOuN,EAGT,OAFApQ,EAAKxD,MAAQqG,EACb7C,EAAKX,MAAO,EACLW,CAEX,CAMA,OADAA,EAAKX,MAAO,EACLW,CACT,CACF,EAoCAxE,EAAQgD,OAASA,EAMjBjB,EAAQpB,UAAY,CAClB6E,YAAazD,EAEboD,MAAO,SAAS0P,GAcd,GAbAvU,KAAK6F,KAAO,EACZ7F,KAAKkE,KAAO,EAGZlE,KAAK2D,KAAO3D,KAAK4D,MAAQ6H,EACzBzL,KAAKuD,MAAO,EACZvD,KAAKyD,SAAW,KAEhBzD,KAAKwD,OAAS,OACdxD,KAAK6B,IAAM4J,EAEXzL,KAAKyE,WAAW5B,QAAQ8B,IAEnB4P,EACH,IAAK,IAAIpP,KAAQnF,KAEQ,MAAnBmF,EAAKW,OAAO,IACZgM,EAAOhQ,KAAK9B,KAAMmF,KACjBL,OAAOK,EAAKY,MAAM,MACrB/F,KAAKmF,GAAQsG,EAIrB,EAEAzF,KAAM,WACJhG,KAAKuD,MAAO,EAEZ,IACIiR,EADYxU,KAAKyE,WAAW,GACLG,WAC3B,GAAwB,UAApB4P,EAAW5S,KACb,MAAM4S,EAAW3S,IAGnB,OAAO7B,KAAKiG,IACd,EAEApC,kBAAmB,SAAS4Q,GAC1B,GAAIzU,KAAKuD,KACP,MAAMkR,EAGR,IAAI/B,EAAU1S,KACd,SAASkG,EAAOwO,EAAKC,GAYnB,OAXArB,EAAO1R,KAAO,QACd0R,EAAOzR,IAAM4S,EACb/B,EAAQxO,KAAOwQ,EAEXC,IAGFjC,EAAQlP,OAAS,OACjBkP,EAAQ7Q,IAAM4J,KAGNkJ,CACZ,CAEA,IAAK,IAAIhU,EAAIX,KAAKyE,WAAWM,OAAS,EAAGpE,GAAK,IAAKA,EAAG,CACpD,IAAIoT,EAAQ/T,KAAKyE,WAAW9D,GACxB2S,EAASS,EAAMnP,WAEnB,GAAqB,SAAjBmP,EAAM1P,OAIR,OAAO6B,EAAO,OAGhB,GAAI6N,EAAM1P,QAAUrE,KAAK6F,KAAM,CAC7B,IAAI+O,EAAW9C,EAAOhQ,KAAKiS,EAAO,YAC9Bc,EAAa/C,EAAOhQ,KAAKiS,EAAO,cAEpC,GAAIa,GAAYC,EAAY,CAC1B,GAAI7U,KAAK6F,KAAOkO,EAAMzP,SACpB,OAAO4B,EAAO6N,EAAMzP,UAAU,GACzB,GAAItE,KAAK6F,KAAOkO,EAAMxP,WAC3B,OAAO2B,EAAO6N,EAAMxP,WAGxB,MAAO,GAAIqQ,GACT,GAAI5U,KAAK6F,KAAOkO,EAAMzP,SACpB,OAAO4B,EAAO6N,EAAMzP,UAAU,OAG3B,KAAIuQ,EAMT,MAAM,IAAIvR,MAAM,0CALhB,GAAItD,KAAK6F,KAAOkO,EAAMxP,WACpB,OAAO2B,EAAO6N,EAAMxP,WAKxB,CACF,CACF,CACF,EAEAT,OAAQ,SAASlC,EAAMC,GACrB,IAAK,IAAIlB,EAAIX,KAAKyE,WAAWM,OAAS,EAAGpE,GAAK,IAAKA,EAAG,CACpD,IAAIoT,EAAQ/T,KAAKyE,WAAW9D,GAC5B,GAAIoT,EAAM1P,QAAUrE,KAAK6F,MACrBiM,EAAOhQ,KAAKiS,EAAO,eACnB/T,KAAK6F,KAAOkO,EAAMxP,WAAY,CAChC,IAAIuQ,EAAef,EACnB,KACF,CACF,CAEIe,IACU,UAATlT,GACS,aAATA,IACDkT,EAAazQ,QAAUxC,GACvBA,GAAOiT,EAAavQ,aAGtBuQ,EAAe,MAGjB,IAAIxB,EAASwB,EAAeA,EAAalQ,WAAa,CAAC,EAIvD,OAHA0O,EAAO1R,KAAOA,EACd0R,EAAOzR,IAAMA,EAETiT,GACF9U,KAAKwD,OAAS,OACdxD,KAAKkE,KAAO4Q,EAAavQ,WAClByO,GAGFhT,KAAKmG,SAASmN,EACvB,EAEAnN,SAAU,SAASmN,EAAQ9O,GACzB,GAAoB,UAAhB8O,EAAO1R,KACT,MAAM0R,EAAOzR,IAcf,MAXoB,UAAhByR,EAAO1R,MACS,aAAhB0R,EAAO1R,KACT5B,KAAKkE,KAAOoP,EAAOzR,IACM,WAAhByR,EAAO1R,MAChB5B,KAAKiG,KAAOjG,KAAK6B,IAAMyR,EAAOzR,IAC9B7B,KAAKwD,OAAS,SACdxD,KAAKkE,KAAO,OACa,WAAhBoP,EAAO1R,MAAqB4C,IACrCxE,KAAKkE,KAAOM,GAGPwO,CACT,EAEA5M,OAAQ,SAAS7B,GACf,IAAK,IAAI5D,EAAIX,KAAKyE,WAAWM,OAAS,EAAGpE,GAAK,IAAKA,EAAG,CACpD,IAAIoT,EAAQ/T,KAAKyE,WAAW9D,GAC5B,GAAIoT,EAAMxP,aAAeA,EAGvB,OAFAvE,KAAKmG,SAAS4N,EAAMnP,WAAYmP,EAAMvP,UACtCG,EAAcoP,GACPf,CAEX,CACF,EAEA,MAAS,SAAS3O,GAChB,IAAK,IAAI1D,EAAIX,KAAKyE,WAAWM,OAAS,EAAGpE,GAAK,IAAKA,EAAG,CACpD,IAAIoT,EAAQ/T,KAAKyE,WAAW9D,GAC5B,GAAIoT,EAAM1P,SAAWA,EAAQ,CAC3B,IAAIiP,EAASS,EAAMnP,WACnB,GAAoB,UAAhB0O,EAAO1R,KAAkB,CAC3B,IAAImT,EAASzB,EAAOzR,IACpB8C,EAAcoP,EAChB,CACA,OAAOgB,CACT,CACF,CAIA,MAAM,IAAIzR,MAAM,wBAClB,EAEAgD,cAAe,SAAS0N,EAAU/P,EAAYE,GAa5C,OAZAnE,KAAKyD,SAAW,CACd3C,SAAU4B,EAAOsR,GACjB/P,WAAYA,EACZE,QAASA,GAGS,SAAhBnE,KAAKwD,SAGPxD,KAAK6B,IAAM4J,GAGNuH,CACT,GAOKtT,CAET,CAvtBc,CA4tBiBC,EAAOD,SAGtC,IACEsV,mBAAqBpD,CACvB,CAAE,MAAOqD,GAWmB,iBAAfC,WACTA,WAAWF,mBAAqBpD,EAEhCuD,SAAS,IAAK,yBAAdA,CAAwCvD,EAE5C,C,wBCxvBA,IAGIwD,EAHAC,EAAoB,yBACpBnN,EAAO,EAAQ,KAGnB,KACEkN,EAAK,EAAQ,MACLE,YAAeF,EAAGG,eAExBH,EAAK,KAET,CAAE,MAAOhD,GAET,CAEA,IAAIoD,EAAa,EAAQ,KAQzB,SAASC,EAAeC,EAAKrG,GAC3B,OAAOqG,EAAItO,QAAQiI,EACrB,CAGA,IAAIsG,GAA0B,EAC1BC,GAAwB,EAGxBC,GAA8B,EAG9BC,EAAc,OAGdC,EAAoB,CAAC,EAGrBC,EAAiB,CAAC,EAGlBC,EAAc,sCAGdC,EAAuB,GACvBC,EAAsB,GAE1B,SAASC,IACP,MAAoB,YAAhBN,GAEgB,SAAhBA,GAEuB,oBAAXrI,QAAsD,mBAAnB4I,kBAAoC5I,OAAOrG,SAAWqG,OAAO9N,QAAU8N,OAAO6I,SAAmC,aAAxB7I,OAAO6I,QAAQ1U,KAC7J,CA0BA,SAAS2U,EAAYC,GACnB,OAAO,SAAS3U,GACd,IAAK,IAAIlB,EAAI,EAAGA,EAAI6V,EAAKzR,OAAQpE,IAAK,CACpC,IAAI8V,EAAMD,EAAK7V,GAAGkB,GAClB,GAAI4U,EACF,OAAOA,CAEX,CACA,OAAO,IACT,CACF,CAEA,IAAIC,EAAeH,EAAYL,GAwC/B,SAASS,EAAmBC,EAAM1I,GAChC,IAAK0I,EAAM,OAAO1I,EAClB,IAAI2I,EAAM3O,EAAK4O,QAAQF,GACnBG,EAAQ,kBAAkBC,KAAKH,GAC/BzH,EAAW2H,EAAQA,EAAM,GAAK,GAC9BE,EAAYJ,EAAI9Q,MAAMqJ,EAASrK,QACnC,OAAIqK,GAAY,UAAU8H,KAAKD,IAE7B7H,GAAY,KACMlH,EAAKhF,QAAQ2T,EAAI9Q,MAAMqJ,EAASrK,QAASmJ,GAAKJ,QAAQ,MAAO,KAE1EsB,EAAWlH,EAAKhF,QAAQ2T,EAAI9Q,MAAMqJ,EAASrK,QAASmJ,EAC7D,CAlDAgI,EAAqBxR,KAAK,SAASwD,GAWjC,GATAA,EAAOA,EAAKiP,OACR,SAASD,KAAKhP,KAEhBA,EAAOA,EAAK4F,QAAQ,oBAAqB,SAASsB,EAAUgI,GAC1D,OAAOA,EACL,GACA,GACJ,IAEElP,KAAQ6N,EACV,OAAOA,EAAkB7N,GAG3B,IAAImP,EAAW,GACf,IACE,GAAKjC,EAQMA,EAAGE,WAAWpN,KAEvBmP,EAAWjC,EAAGG,aAAarN,EAAM,aAV1B,CAEP,IAAIoP,EAAM,IAAIjB,eACdiB,EAAIC,KAAK,MAAOrP,GAAmB,GACnCoP,EAAI7M,KAAK,MACc,IAAnB6M,EAAIE,YAAmC,MAAfF,EAAIxN,SAC9BuN,EAAWC,EAAIG,aAEnB,CAIF,CAAE,MAAOC,GAET,CAEA,OAAO3B,EAAkB7N,GAAQmP,CACnC,GAsDA,IAAIM,EAAoBpB,EAAYJ,GA4BpC,SAASyB,EAAkBC,GACzB,IAAIC,EAAY9B,EAAe6B,EAASE,QACxC,IAAKD,EAAW,CAEd,IAAIE,EAAYL,EAAkBE,EAASE,QACvCC,GACFF,EAAY9B,EAAe6B,EAASE,QAAU,CAC5C7J,IAAK8J,EAAU9J,IACfvB,IAAK,IAAI0I,EAAkB2C,EAAUrL,OAKzBA,IAAIsL,gBAChBH,EAAUnL,IAAIuL,QAAQrV,QAAQ,SAASkV,EAAQpX,GAC7C,IAAI0W,EAAWS,EAAUnL,IAAIsL,eAAetX,GAC5C,GAAI0W,EAAU,CACZ,IAAInJ,EAAMyI,EAAmBmB,EAAU5J,IAAK6J,GAC5ChC,EAAkB7H,GAAOmJ,CAC3B,CACF,GAGFS,EAAY9B,EAAe6B,EAASE,QAAU,CAC5C7J,IAAK,KACLvB,IAAK,KAGX,CAGA,GAAImL,GAAaA,EAAUnL,KAAoD,mBAAtCmL,EAAUnL,IAAIwL,oBAAoC,CACzF,IAAIC,EAAmBN,EAAUnL,IAAIwL,oBAAoBN,GAOzD,GAAgC,OAA5BO,EAAiBL,OAGnB,OAFAK,EAAiBL,OAASpB,EACxBmB,EAAU5J,IAAKkK,EAAiBL,QAC3BK,CAEX,CAEA,OAAOP,CACT,CAIA,SAASQ,EAAcC,GAErB,IAAIvB,EAAQ,yCAAyCC,KAAKsB,GAC1D,GAAIvB,EAAO,CACT,IAAIc,EAAWD,EAAkB,CAC/BG,OAAQhB,EAAM,GACdwB,MAAOxB,EAAM,GACbyB,OAAQzB,EAAM,GAAK,IAErB,MAAO,WAAaA,EAAM,GAAK,KAAOc,EAASE,OAAS,IACtDF,EAASU,KAAO,KAAOV,EAASW,OAAS,GAAK,GAClD,CAIA,OADAzB,EAAQ,6BAA6BC,KAAKsB,IAEjC,WAAavB,EAAM,GAAK,KAAOsB,EAActB,EAAM,IAAM,IAI3DuB,CACT,CAQA,SAASG,IACP,IAAIC,EACAC,EAAe,GACnB,GAAI3Y,KAAK4Y,WACPD,EAAe,aACV,GACLD,EAAW1Y,KAAK6Y,6BACC7Y,KAAK8Y,WACpBH,EAAe3Y,KAAK+Y,gBACpBJ,GAAgB,MAIhBA,GADED,GAMc,cAElB,IAAIM,EAAahZ,KAAKiZ,gBACtB,GAAkB,MAAdD,EAAoB,CACtBL,GAAgB,IAAMK,EACtB,IAAIE,EAAelZ,KAAKmZ,kBACpBD,IACFP,GAAgB,IAAMO,EAE1B,CACF,CAEA,IAAIX,EAAO,GACPa,EAAepZ,KAAKqZ,kBACpBC,GAAY,EACZC,EAAgBvZ,KAAKuZ,gBAEzB,GADqBvZ,KAAKwZ,cAAgBD,EAmB/BA,EACThB,GAAQ,QAAUa,GAAgB,eACzBA,EACTb,GAAQa,GAERb,GAAQI,EACRW,GAAY,OAxBI,CAChB,IAAIG,EAAWzZ,KAAK0Z,cAEH,oBAAbD,IACFA,EAAW,QAEb,IAAI7F,EAAa5T,KAAK2Z,gBAClBP,GACEK,GAA8C,GAAlCL,EAAaQ,QAAQH,KACnClB,GAAQkB,EAAW,KAErBlB,GAAQa,EACJxF,GAAcwF,EAAaQ,QAAQ,IAAMhG,IAAewF,EAAarU,OAAS6O,EAAW7O,OAAS,IACpGwT,GAAQ,QAAU3E,EAAa,MAGjC2E,GAAQkB,EAAW,KAAO7F,GAAc,cAE5C,CAWA,OAHI0F,IACFf,GAAQ,KAAOI,EAAe,KAEzBJ,CACT,CAEA,SAASsB,EAAcC,GACrB,IAAIxF,EAAS,CAAC,EAKd,OAJAxU,OAAOia,oBAAoBja,OAAO0C,eAAesX,IAAQjX,QAAQ,SAASsC,GACxEmP,EAAOnP,GAAQ,cAAc+R,KAAK/R,GAAQ,WAAa,OAAO2U,EAAM3U,GAAMrD,KAAKgY,EAAQ,EAAIA,EAAM3U,EACnG,GACAmP,EAAOzK,SAAW4O,EACXnE,CACT,CAEA,SAAS0F,EAAaF,EAAOrG,GAK3B,QAHchI,IAAVgI,IACFA,EAAQ,CAAEwG,aAAc,KAAMC,YAAa,OAE1CJ,EAAMlB,WAEP,OADAnF,EAAMyG,YAAc,KACbJ,EAMT,IAAI/B,EAAS+B,EAAMK,eAAiBL,EAAMjB,2BAC1C,GAAId,EAAQ,CACV,IAAIQ,EAAOuB,EAAMb,gBACbT,EAASsB,EAAMX,kBAAoB,EAQnCiB,EADW,8EACalD,KAzUN,iBAAZZ,SAAsC,OAAZA,QAC7BA,QAAQ+D,QAER,IAsUoD,EAAI,GAClD,IAAT9B,GAAcC,EAAS4B,IAAiBhE,MAAkB0D,EAAMhB,WAClEN,GAAU4B,GAGZ,IAAIvC,EAAWD,EAAkB,CAC/BG,OAAQA,EACRQ,KAAMA,EACNC,OAAQA,IAEV/E,EAAMyG,YAAcrC,EAEpB,IAAIyC,GADJR,EAAQD,EAAcC,IACWT,gBAWjC,OAVAS,EAAMT,gBAAkB,WACtB,OAA0B,MAAtB5F,EAAMwG,aACDK,IAEF7G,EAAMwG,aAAa9U,MAAQmV,GACpC,EACAR,EAAMK,YAAc,WAAa,OAAOtC,EAASE,MAAQ,EACzD+B,EAAMb,cAAgB,WAAa,OAAOpB,EAASU,IAAM,EACzDuB,EAAMX,gBAAkB,WAAa,OAAOtB,EAASW,OAAS,CAAG,EACjEsB,EAAMjB,yBAA2B,WAAa,OAAOhB,EAASE,MAAQ,EAC/D+B,CACT,CAGA,IAAIxB,EAASwB,EAAMhB,UAAYgB,EAAMf,gBACrC,OAAIT,GACFA,EAASD,EAAcC,IACvBwB,EAAQD,EAAcC,IAChBf,cAAgB,WAAa,OAAOT,CAAQ,EAC3CwB,GAIFA,CACT,CAIA,SAASS,EAAkB3Q,EAAO4Q,GAC5B3E,IACFE,EAAoB,CAAC,EACrBC,EAAiB,CAAC,GASpB,IANA,IAEIyE,GAFO7Q,EAAMzE,MAAQ,SAEA,MADXyE,EAAMF,SAAW,IAG3B+J,EAAQ,CAAEwG,aAAc,KAAMC,YAAa,MAC3CQ,EAAiB,GACZ/Z,EAAI6Z,EAAMzV,OAAS,EAAGpE,GAAK,EAAGA,IACrC+Z,EAAehW,KAAK,YAAcsV,EAAaQ,EAAM7Z,GAAI8S,IACzDA,EAAMwG,aAAexG,EAAMyG,YAG7B,OADAzG,EAAMyG,YAAczG,EAAMwG,aAAe,KAClCQ,EAAcC,EAAe/U,UAAUgV,KAAK,GACrD,CAGA,SAASC,EAAehR,GACtB,IAAImN,EAAQ,sCAAsCC,KAAKpN,EAAM4Q,OAC7D,GAAIzD,EAAO,CACT,IAAIgB,EAAShB,EAAM,GACfwB,GAAQxB,EAAM,GACdyB,GAAUzB,EAAM,GAGhBM,EAAWtB,EAAkBgC,GAGjC,IAAKV,GAAYjC,GAAMA,EAAGE,WAAWyC,GACnC,IACEV,EAAWjC,EAAGG,aAAawC,EAAQ,OACrC,CAAE,MAAOL,GACPL,EAAW,EACb,CAIF,GAAIA,EAAU,CACZ,IAAIwD,EAAOxD,EAASyD,MAAM,kBAAkBvC,EAAO,GACnD,GAAIsC,EACF,OAAO9C,EAAS,IAAMQ,EAAO,KAAOsC,EAAO,KACzC,IAAIE,MAAMvC,GAAQmC,KAAK,KAAO,GAEpC,CACF,CACA,OAAO,IACT,CA1SAxE,EAAoBzR,KAAK,SAASqT,GAChC,IAIIiD,EAJAC,EAtCN,SAA8BlD,GAC5B,IAAImD,EAEJ,GAAI9E,IACD,IACE,IAAIkB,EAAM,IAAIjB,eACdiB,EAAIC,KAAK,MAAOQ,GAAQ,GACxBT,EAAI7M,KAAK,MACTyQ,EAA8B,IAAnB5D,EAAIE,WAAmBF,EAAIG,aAAe,KAGrD,IAAI0D,EAAkB7D,EAAI8D,kBAAkB,cACtB9D,EAAI8D,kBAAkB,eAC5C,GAAID,EACF,OAAOA,CAEX,CAAE,MAAOjb,GACT,CAIHgb,EAAWxE,EAAaqB,GAKxB,IAJA,IAGIsD,EAAWtE,EAHXuE,EAAK,wHAIFvE,EAAQuE,EAAGtE,KAAKkE,IAAWG,EAAYtE,EAC9C,OAAKsE,EACEA,EAAU,GADM,IAEzB,CASyBE,CAAqBxD,GAC5C,IAAKkD,EAAkB,OAAO,KAI9B,GAAIhF,EAAYiB,KAAK+D,GAAmB,CAEtC,IAAIO,EAAUP,EAAiBlV,MAAMkV,EAAiBrB,QAAQ,KAAO,GACrEoB,EAAgBxF,EAAWgG,EAAS,UAAU3R,WAC9CoR,EAAmBlD,CACrB,MAEEkD,EAAmBtE,EAAmBoB,EAAQkD,GAC9CD,EAAgBtE,EAAauE,GAG/B,OAAKD,EAIE,CACL9M,IAAK+M,EACLtO,IAAKqO,GALE,IAOX,GAsTA,IAAIS,EAA+BvF,EAAqBnQ,MAAM,GAC1D2V,EAA8BvF,EAAoBpQ,MAAM,GAE5DrG,EAAQsa,aAAeA,EACvBta,EAAQkb,eAAiBA,EACzBlb,EAAQkY,kBAAoBA,EAC5BlY,EAAQiY,kBAAoBA,EAE5BjY,EAAQic,QAAU,SAASnU,GAGzB,IAFAA,EAAUA,GAAW,CAAC,GAEVsO,cACVA,EAActO,EAAQsO,aACoC,IAAtD,CAAC,OAAQ,UAAW,QAAQ8D,QAAQ9D,IACtC,MAAM,IAAIxS,MAAM,eAAiBwS,EAAc,6DAyBnD,GAnBItO,EAAQkP,eACNlP,EAAQoU,uBACV1F,EAAqBnR,OAAS,GAGhCmR,EAAqB2F,QAAQrU,EAAQkP,eAKnClP,EAAQmQ,oBACNnQ,EAAQsU,4BACV3F,EAAoBpR,OAAS,GAG/BoR,EAAoB0F,QAAQrU,EAAQmQ,oBAIlCnQ,EAAQuU,cAAgB3F,IAAe,CAEzC,IAAI4F,EAASvG,EAAe9V,EAAQ,UAChCsc,EAAWD,EAAO3b,UAAU6b,SAE3BD,EAASE,qBACZH,EAAO3b,UAAU6b,SAAW,SAASE,EAASC,GAG5C,OAFAtG,EAAkBsG,GAAYD,EAC9BpG,EAAeqG,QAAY5Q,EACpBwQ,EAASna,KAAK9B,KAAMoc,EAASC,EACtC,EAEAL,EAAO3b,UAAU6b,SAASC,oBAAqB,EAEnD,CAcA,GAXKtG,IACHA,EAA8B,gCAAiCrO,GAC7DA,EAAQqO,6BAIPF,IACHA,GAA0B,EAC1BrS,MAAMiX,kBAAoBA,IAGvB3E,EAAuB,CAC1B,IAAI0G,IAAiB,6BAA8B9U,IACjDA,EAAQ+U,yBAKV,KAGsC,IADf9G,EAAe9V,EAAQ,kBACzB6c,eACjBF,GAAiB,EAErB,CAAE,MAAMpc,GAAI,CASRoc,GAtiBsB,iBAAZhG,SAAsC,OAAZA,SAA4C,mBAAfA,QAAQ/G,KAuiB3EqG,GAAwB,EA1GxB6G,EAAWnG,QAAQoG,KAEvBpG,QAAQoG,KAAO,SAAU9a,GACvB,GAAa,sBAATA,EAA8B,CAChC,IAAI+a,EAAYlW,UAAU,IAAMA,UAAU,GAAG+T,MACzCoC,EAAgB5c,KAAK6c,UAAUjb,GAAMmD,OAAS,EAElD,GAAI4X,IAAaC,EACf,OA1BF7E,EAAS6C,EADahR,EA2BKnD,UAAU,KAvBrCqW,EAnaN,WACE,GAAwB,iBAAZxG,SAAsC,OAAZA,QACpC,OAAOA,QAAQwG,MAEnB,CA+ZeC,KACCD,EAAOE,SAAWF,EAAOE,QAAQC,aAC7CH,EAAOE,QAAQC,aAAY,GAGzBlF,IACF1H,QAAQzG,QACRyG,QAAQzG,MAAMmO,IAGhB1H,QAAQzG,MAAMA,EAAM4Q,YAtaI,iBAAZlE,SAAsC,OAAZA,SAA8C,mBAAjBA,QAAQ4G,MAClE5G,QAAQ4G,KAsaC,GAchB,CA7BJ,IAA4BtT,EACtBmO,EAGA+E,EA2BF,OAAOL,EAAS/V,MAAM1G,KAAMyG,UAC9B,EAgGA,CA9GF,IACMgW,CA8GN,EAEA/c,EAAQyd,sBAAwB,WAC9BjH,EAAqBnR,OAAS,EAC9BoR,EAAoBpR,OAAS,EAE7BmR,EAAuBuF,EAA6B1V,MAAM,GAC1DoQ,EAAsBuF,EAA4B3V,MAAM,GAExD4R,EAAoBpB,EAAYJ,GAChCO,EAAeH,EAAYL,EAC7B,C,aCzmBA,IAAIkH,EAAO,EAAQ,KACfC,EAAMvd,OAAOO,UAAUE,eACvB+c,EAA8B,oBAARC,IAQ1B,SAASC,IACPxd,KAAKyd,OAAS,GACdzd,KAAK0d,KAAOJ,EAAe,IAAIC,IAAQzd,OAAO0B,OAAO,KACvD,CAKAgc,EAASG,UAAY,SAA4BC,EAAQC,GAEvD,IADA,IAAI1V,EAAM,IAAIqV,EACL7c,EAAI,EAAGmd,EAAMF,EAAO7Y,OAAQpE,EAAImd,EAAKnd,IAC5CwH,EAAI4V,IAAIH,EAAOjd,GAAIkd,GAErB,OAAO1V,CACT,EAQAqV,EAASnd,UAAU2d,KAAO,WACxB,OAAOV,EAAetd,KAAK0d,KAAKM,KAAOle,OAAOia,oBAAoB/Z,KAAK0d,MAAM3Y,MAC/E,EAOAyY,EAASnd,UAAU0d,IAAM,SAAsBE,EAAMJ,GACnD,IAAIK,EAAOZ,EAAeW,EAAOb,EAAKe,YAAYF,GAC9CG,EAAcd,EAAetd,KAAKqd,IAAIY,GAAQZ,EAAIvb,KAAK9B,KAAK0d,KAAMQ,GAClEG,EAAMre,KAAKyd,OAAO1Y,OACjBqZ,IAAeP,GAClB7d,KAAKyd,OAAO/Y,KAAKuZ,GAEdG,IACCd,EACFtd,KAAK0d,KAAKvV,IAAI8V,EAAMI,GAEpBre,KAAK0d,KAAKQ,GAAQG,EAGxB,EAOAb,EAASnd,UAAUgd,IAAM,SAAsBY,GAC7C,GAAIX,EACF,OAAOtd,KAAK0d,KAAKL,IAAIY,GAErB,IAAIC,EAAOd,EAAKe,YAAYF,GAC5B,OAAOZ,EAAIvb,KAAK9B,KAAK0d,KAAMQ,EAE/B,EAOAV,EAASnd,UAAUuZ,QAAU,SAA0BqE,GACrD,GAAIX,EAAc,CAChB,IAAIe,EAAMre,KAAK0d,KAAKpV,IAAI2V,GACxB,GAAII,GAAO,EACP,OAAOA,CAEb,KAAO,CACL,IAAIH,EAAOd,EAAKe,YAAYF,GAC5B,GAAIZ,EAAIvb,KAAK9B,KAAK0d,KAAMQ,GACtB,OAAOle,KAAK0d,KAAKQ,EAErB,CAEA,MAAM,IAAI5a,MAAM,IAAM2a,EAAO,uBAC/B,EAOAT,EAASnd,UAAUie,GAAK,SAAqBC,GAC3C,GAAIA,GAAQ,GAAKA,EAAOve,KAAKyd,OAAO1Y,OAClC,OAAO/E,KAAKyd,OAAOc,GAErB,MAAM,IAAIjb,MAAM,yBAA2Bib,EAC7C,EAOAf,EAASnd,UAAUme,QAAU,WAC3B,OAAOxe,KAAKyd,OAAO1X,OACrB,EAEArG,EAAQ,EAAW8d,C,YCnFnB,IAAIiB,EAAS,EAAQ,KAsDrB/e,EAAQ8O,OAAS,SAA0BkQ,GACzC,IACIC,EADAC,EAAU,GAGVC,EA3BN,SAAqBH,GACnB,OAAOA,EAAS,EACO,IAAhBA,GAAW,GACE,GAAfA,GAAU,EACjB,CAuBYI,CAAYJ,GAEtB,GACEC,EAzCgBI,GAyCRF,GACRA,KAhDiB,GAiDP,IAGRF,GAjDS,IAmDXC,GAAWH,EAAOjQ,OAAOmQ,SAClBE,EAAM,GAEf,OAAOD,CACT,EAMAlf,EAAQsf,OAAS,SAA0Bf,EAAMgB,EAAQC,GACvD,IAGIC,EAAcR,EAvCGD,EAEjBU,EAkCAC,EAASpB,EAAKlZ,OACdqE,EAAS,EACTkW,EAAQ,EAGZ,EAAG,CACD,GAAIL,GAAUI,EACZ,MAAM,IAAI/b,MAAM,8CAIlB,IAAe,KADfqb,EAAQF,EAAOO,OAAOf,EAAKsB,WAAWN,OAEpC,MAAM,IAAI3b,MAAM,yBAA2B2a,EAAKnY,OAAOmZ,EAAS,IAGlEE,KA7EW,GA6EOR,GAElBvV,IADAuV,GA3EgBI,KA4EYO,EAC5BA,GAnFiB,CAoFnB,OAASH,GAETD,EAAUxe,OAvDN0e,GAFiBV,EAyDWtV,IAvDR,EADU,GAAhBsV,EAIdU,GADCA,GAsDLF,EAAUM,KAAOP,CACnB,C,WCpIA,IAAIQ,EAAe,mEAAmE3E,MAAM,IAK5Fpb,EAAQ8O,OAAS,SAAUkR,GACzB,GAAI,GAAKA,GAAUA,EAASD,EAAa1a,OACvC,OAAO0a,EAAaC,GAEtB,MAAM,IAAI1b,UAAU,6BAA+B0b,EACrD,EAMAhgB,EAAQsf,OAAS,SAAUW,GAiBzB,OAhBW,IAgBCA,GAAYA,GAfb,GAgBDA,EAjBC,GAGG,IAkBCA,GAAYA,GAjBb,IAkBJA,EAnBI,GASK,GANR,IAoBCA,GAAYA,GAnBb,GAoBDA,EArBC,GAOQ,GAJR,IAsBPA,EACK,GAtBG,IA0BRA,EACK,IAID,CACV,C,WC3CA,SAASC,EAAgBC,EAAMC,EAAOC,EAASC,EAAWC,EAAUC,GAUlE,IAAIC,EAAMC,KAAKC,OAAOP,EAAQD,GAAQ,GAAKA,EACvCS,EAAML,EAASF,EAASC,EAAUG,IAAM,GAC5C,OAAY,IAARG,EAEKH,EAEAG,EAAM,EAETR,EAAQK,EAAM,EAETP,EAAgBO,EAAKL,EAAOC,EAASC,EAAWC,EAAUC,GAK/DA,GAASxgB,EAAQ6gB,kBACZT,EAAQE,EAAUjb,OAAS+a,GAAS,EAEpCK,EAKLA,EAAMN,EAAO,EAERD,EAAgBC,EAAMM,EAAKJ,EAASC,EAAWC,EAAUC,GAI9DA,GAASxgB,EAAQ6gB,kBACZJ,EAEAN,EAAO,GAAK,EAAIA,CAG7B,CA7DAngB,EAAQ8gB,qBAAuB,EAC/B9gB,EAAQ6gB,kBAAoB,EAgF5B7gB,EAAQ+gB,OAAS,SAAgBV,EAASC,EAAWC,EAAUC,GAC7D,GAAyB,IAArBF,EAAUjb,OACZ,OAAQ,EAGV,IAAI2b,EAAQd,GAAiB,EAAGI,EAAUjb,OAAQgb,EAASC,EAC/BC,EAAUC,GAASxgB,EAAQ8gB,sBACvD,GAAIE,EAAQ,EACV,OAAQ,EAMV,KAAOA,EAAQ,GAAK,GAC6C,IAA3DT,EAASD,EAAUU,GAAQV,EAAUU,EAAQ,IAAI,MAGnDA,EAGJ,OAAOA,CACT,C,aCvGA,IAAItD,EAAO,EAAQ,KAqBnB,SAASuD,IACP3gB,KAAKyd,OAAS,GACdzd,KAAK4gB,SAAU,EAEf5gB,KAAK6gB,MAAQ,CAACC,eAAgB,EAAGC,gBAAiB,EACpD,CAQAJ,EAAYtgB,UAAU2gB,gBACpB,SAA6BC,EAAWC,GACtClhB,KAAKyd,OAAO5a,QAAQoe,EAAWC,EACjC,EAOFP,EAAYtgB,UAAU0d,IAAM,SAAyBoD,GAtCrD,IAAgCC,EAAUC,EAEpCC,EACAC,EACAC,EACAC,EALoCJ,EAuCDF,EArCnCG,GAF0BF,EAuCHphB,KAAK6gB,OArCXC,cACjBS,EAAQF,EAASP,cACjBU,EAAUJ,EAASL,gBACnBU,EAAUJ,EAASN,gBAChBQ,EAAQD,GAASC,GAASD,GAASG,GAAWD,GAC9CpE,EAAKsE,oCAAoCN,EAAUC,IAAa,GAiCrErhB,KAAK6gB,MAAQM,EACbnhB,KAAKyd,OAAO/Y,KAAKyc,KAEjBnhB,KAAK4gB,SAAU,EACf5gB,KAAKyd,OAAO/Y,KAAKyc,GAErB,EAWAR,EAAYtgB,UAAUme,QAAU,WAK9B,OAJKxe,KAAK4gB,UACR5gB,KAAKyd,OAAOkE,KAAKvE,EAAKsE,qCACtB1hB,KAAK4gB,SAAU,GAEV5gB,KAAKyd,MACd,EAEA/d,EAAQ,EAAcihB,C,WCnDtB,SAASiB,EAAKC,EAAKC,EAAG3f,GACpB,IAAI4f,EAAOF,EAAIC,GACfD,EAAIC,GAAKD,EAAI1f,GACb0f,EAAI1f,GAAK4f,CACX,CA0BA,SAASC,EAAYH,EAAKI,EAAY3f,EAAGlC,GAKvC,GAAIkC,EAAIlC,EAAG,CAYT,IACIO,EAAI2B,EAAI,EAEZsf,EAAKC,GApCiBK,EAiCY5f,EAjCP6f,EAiCU/hB,EAhChCggB,KAAKgC,MAAMF,EAAO9B,KAAKiC,UAAYF,EAAOD,KAmCzB9hB,GAStB,IARA,IAAIkiB,EAAQT,EAAIzhB,GAQPmiB,EAAIjgB,EAAGigB,EAAIniB,EAAGmiB,IACjBN,EAAWJ,EAAIU,GAAID,IAAU,GAE/BV,EAAKC,EADLlhB,GAAK,EACQ4hB,GAIjBX,EAAKC,EAAKlhB,EAAI,EAAG4hB,GACjB,IAAIC,EAAI7hB,EAAI,EAIZqhB,EAAYH,EAAKI,EAAY3f,EAAGkgB,EAAI,GACpCR,EAAYH,EAAKI,EAAYO,EAAI,EAAGpiB,EACtC,CA3DF,IAA0B8hB,EAAKC,CA4D/B,CAUAziB,EAAQ,EAAY,SAAUmiB,EAAKI,GACjCD,EAAYH,EAAKI,EAAY,EAAGJ,EAAI9c,OAAS,EAC/C,C,iBC1GIqY,EAAO,EAAQ,KACfqF,EAAe,EAAQ,KACvBjF,EAAW,SACXkF,EAAY,EAAQ,IACpBC,EAAY,SAEhB,SAAStN,EAAkBuN,EAAYC,GACrC,IAAI/K,EAAY8K,EAKhB,MAJ0B,iBAAfA,IACT9K,EAAYsF,EAAK0F,oBAAoBF,IAGV,MAAtB9K,EAAUiL,SACb,IAAIC,EAAyBlL,EAAW+K,GACxC,IAAII,EAAuBnL,EAAW+K,EAC5C,CAyQA,SAASI,EAAuBL,EAAYC,GAC1C,IAAI/K,EAAY8K,EACU,iBAAfA,IACT9K,EAAYsF,EAAK0F,oBAAoBF,IAGvC,IAAIvI,EAAU+C,EAAK8F,OAAOpL,EAAW,WACjCI,EAAUkF,EAAK8F,OAAOpL,EAAW,WAGjCqL,EAAQ/F,EAAK8F,OAAOpL,EAAW,QAAS,IACxCsL,EAAahG,EAAK8F,OAAOpL,EAAW,aAAc,MAClDG,EAAiBmF,EAAK8F,OAAOpL,EAAW,iBAAkB,MAC1DuL,EAAWjG,EAAK8F,OAAOpL,EAAW,YAClClB,EAAOwG,EAAK8F,OAAOpL,EAAW,OAAQ,MAI1C,GAAIuC,GAAWra,KAAKsjB,SAClB,MAAM,IAAIhgB,MAAM,wBAA0B+W,GAGxC+I,IACFA,EAAahG,EAAKmG,UAAUH,IAG9BlL,EAAUA,EACPvL,IAAI1F,QAIJ0F,IAAIyQ,EAAKmG,WAKT5W,IAAI,SAAUoL,GACb,OAAOqL,GAAchG,EAAKoG,WAAWJ,IAAehG,EAAKoG,WAAWzL,GAChEqF,EAAKqG,SAASL,EAAYrL,GAC1BA,CACN,GAMF/X,KAAK0jB,OAASlG,EAASG,UAAUwF,EAAMxW,IAAI1F,SAAS,GACpDjH,KAAK2jB,SAAWnG,EAASG,UAAUzF,GAAS,GAE5ClY,KAAK4jB,iBAAmB5jB,KAAK2jB,SAASnF,UAAU7R,IAAI,SAAUzK,GAC5D,OAAOkb,EAAKyG,iBAAiBT,EAAYlhB,EAAG2gB,EAC9C,GAEA7iB,KAAKojB,WAAaA,EAClBpjB,KAAKiY,eAAiBA,EACtBjY,KAAK8jB,UAAYT,EACjBrjB,KAAK+jB,cAAgBlB,EACrB7iB,KAAK4W,KAAOA,CACd,CA2GA,SAASoN,IACPhkB,KAAK8gB,cAAgB,EACrB9gB,KAAK+gB,gBAAkB,EACvB/gB,KAAK+X,OAAS,KACd/X,KAAKikB,aAAe,KACpBjkB,KAAKkkB,eAAiB,KACtBlkB,KAAKmF,KAAO,IACd,CAiaA,SAAS6d,EAAyBJ,EAAYC,GAC5C,IAAI/K,EAAY8K,EACU,iBAAfA,IACT9K,EAAYsF,EAAK0F,oBAAoBF,IAGvC,IAAIvI,EAAU+C,EAAK8F,OAAOpL,EAAW,WACjCiL,EAAW3F,EAAK8F,OAAOpL,EAAW,YAEtC,GAAIuC,GAAWra,KAAKsjB,SAClB,MAAM,IAAIhgB,MAAM,wBAA0B+W,GAG5Cra,KAAK2jB,SAAW,IAAInG,EACpBxd,KAAK0jB,OAAS,IAAIlG,EAElB,IAAI2G,EAAa,CACf5L,MAAO,EACPC,OAAQ,GAEVxY,KAAKokB,UAAYrB,EAASpW,IAAI,SAAUzK,GACtC,GAAIA,EAAEgM,IAGJ,MAAM,IAAI5K,MAAM,sDAElB,IAAI+gB,EAASjH,EAAK8F,OAAOhhB,EAAG,UACxBoiB,EAAalH,EAAK8F,OAAOmB,EAAQ,QACjCE,EAAenH,EAAK8F,OAAOmB,EAAQ,UAEvC,GAAIC,EAAaH,EAAW5L,MACvB+L,IAAeH,EAAW5L,MAAQgM,EAAeJ,EAAW3L,OAC/D,MAAM,IAAIlV,MAAM,wDAIlB,OAFA6gB,EAAaE,EAEN,CACLG,gBAAiB,CAGf1D,cAAewD,EAAa,EAC5BvD,gBAAiBwD,EAAe,GAElCE,SAAU,IAAIpP,EAAkB+H,EAAK8F,OAAOhhB,EAAG,OAAQ2gB,GAE3D,EACF,CAl4BAxN,EAAkBqP,cAAgB,SAAS9B,EAAYC,GACrD,OAAOI,EAAuByB,cAAc9B,EAAYC,EAC1D,EAKAxN,EAAkBhV,UAAUijB,SAAW,EAgCvCjO,EAAkBhV,UAAUskB,oBAAsB,KAClD7kB,OAAOW,eAAe4U,EAAkBhV,UAAW,qBAAsB,CACvEe,cAAc,EACdD,YAAY,EACZmH,IAAK,WAKH,OAJKtI,KAAK2kB,qBACR3kB,KAAK4kB,eAAe5kB,KAAK8jB,UAAW9jB,KAAKojB,YAGpCpjB,KAAK2kB,mBACd,IAGFtP,EAAkBhV,UAAUwkB,mBAAqB,KACjD/kB,OAAOW,eAAe4U,EAAkBhV,UAAW,oBAAqB,CACtEe,cAAc,EACdD,YAAY,EACZmH,IAAK,WAKH,OAJKtI,KAAK6kB,oBACR7kB,KAAK4kB,eAAe5kB,KAAK8jB,UAAW9jB,KAAKojB,YAGpCpjB,KAAK6kB,kBACd,IAGFxP,EAAkBhV,UAAUykB,wBAC1B,SAAkD7G,EAAMyC,GACtD,IAAI3f,EAAIkd,EAAKnY,OAAO4a,GACpB,MAAa,MAAN3f,GAAmB,MAANA,CACtB,EAOFsU,EAAkBhV,UAAUukB,eAC1B,SAAyC3G,EAAM8G,GAC7C,MAAM,IAAIzhB,MAAM,2CAClB,EAEF+R,EAAkB2P,gBAAkB,EACpC3P,EAAkB4P,eAAiB,EAEnC5P,EAAkBmL,qBAAuB,EACzCnL,EAAkBkL,kBAAoB,EAkBtClL,EAAkBhV,UAAU6kB,YAC1B,SAAuCjE,EAAWkE,EAAUC,GAC1D,IAGI/B,EAHA3Q,EAAUyS,GAAY,KAI1B,OAHYC,GAAU/P,EAAkB2P,iBAIxC,KAAK3P,EAAkB2P,gBACrB3B,EAAWrjB,KAAKqlB,mBAChB,MACF,KAAKhQ,EAAkB4P,eACrB5B,EAAWrjB,KAAKslB,kBAChB,MACF,QACE,MAAM,IAAIhiB,MAAM,+BAGlB,IAAI8f,EAAapjB,KAAKojB,WACtBC,EAAS1W,IAAI,SAAU4Y,GACrB,IAAIxN,EAA4B,OAAnBwN,EAAQxN,OAAkB,KAAO/X,KAAK2jB,SAASrF,GAAGiH,EAAQxN,QAEvE,MAAO,CACLA,OAFFA,EAASqF,EAAKyG,iBAAiBT,EAAYrL,EAAQ/X,KAAK+jB,eAGtDjD,cAAeyE,EAAQzE,cACvBC,gBAAiBwE,EAAQxE,gBACzBkD,aAAcsB,EAAQtB,aACtBC,eAAgBqB,EAAQrB,eACxB/e,KAAuB,OAAjBogB,EAAQpgB,KAAgB,KAAOnF,KAAK0jB,OAAOpF,GAAGiH,EAAQpgB,MAEhE,EAAGnF,MAAM6C,QAAQoe,EAAWvO,EAC9B,EAwBF2C,EAAkBhV,UAAUmlB,yBAC1B,SAAoDC,GAClD,IAAIlN,EAAO6E,EAAK8F,OAAOuC,EAAO,QAM1BC,EAAS,CACX3N,OAAQqF,EAAK8F,OAAOuC,EAAO,UAC3BxB,aAAc1L,EACd2L,eAAgB9G,EAAK8F,OAAOuC,EAAO,SAAU,IAI/C,GADAC,EAAO3N,OAAS/X,KAAK2lB,iBAAiBD,EAAO3N,QACzC2N,EAAO3N,OAAS,EAClB,MAAO,GAGT,IAAIsL,EAAW,GAEX3C,EAAQ1gB,KAAK4lB,aAAaF,EACA1lB,KAAKslB,kBACL,eACA,iBACAlI,EAAKyI,2BACLpD,EAAalC,mBAC3C,GAAIG,GAAS,EAAG,CACd,IAAI6E,EAAUvlB,KAAKslB,kBAAkB5E,GAErC,QAAqBjV,IAAjBga,EAAMjN,OAOR,IANA,IAAIyL,EAAesB,EAAQtB,aAMpBsB,GAAWA,EAAQtB,eAAiBA,GACzCZ,EAAS3e,KAAK,CACZ6T,KAAM6E,EAAK8F,OAAOqC,EAAS,gBAAiB,MAC5C/M,OAAQ4E,EAAK8F,OAAOqC,EAAS,kBAAmB,MAChDO,WAAY1I,EAAK8F,OAAOqC,EAAS,sBAAuB,QAG1DA,EAAUvlB,KAAKslB,oBAAoB5E,QASrC,IANA,IAAIwD,EAAiBqB,EAAQrB,eAMtBqB,GACAA,EAAQtB,eAAiB1L,GACzBgN,EAAQrB,gBAAkBA,GAC/Bb,EAAS3e,KAAK,CACZ6T,KAAM6E,EAAK8F,OAAOqC,EAAS,gBAAiB,MAC5C/M,OAAQ4E,EAAK8F,OAAOqC,EAAS,kBAAmB,MAChDO,WAAY1I,EAAK8F,OAAOqC,EAAS,sBAAuB,QAG1DA,EAAUvlB,KAAKslB,oBAAoB5E,EAGzC,CAEA,OAAO2C,CACT,EAEF3jB,EAAQ2V,kBAAoBA,EAgG5B4N,EAAuB5iB,UAAYP,OAAO0B,OAAO6T,EAAkBhV,WACnE4iB,EAAuB5iB,UAAUokB,SAAWpP,EAM5C4N,EAAuB5iB,UAAUslB,iBAAmB,SAASI,GAC3D,IAWIplB,EAXAqlB,EAAiBD,EAKrB,GAJuB,MAAnB/lB,KAAKojB,aACP4C,EAAiB5I,EAAKqG,SAASzjB,KAAKojB,WAAY4C,IAG9ChmB,KAAK2jB,SAAStG,IAAI2I,GACpB,OAAOhmB,KAAK2jB,SAAS/J,QAAQoM,GAM/B,IAAKrlB,EAAI,EAAGA,EAAIX,KAAK4jB,iBAAiB7e,SAAUpE,EAC9C,GAAIX,KAAK4jB,iBAAiBjjB,IAAMolB,EAC9B,OAAOplB,EAIX,OAAQ,CACV,EAWAsiB,EAAuByB,cACrB,SAAyC9B,EAAYC,GACnD,IAAIoD,EAAMnmB,OAAO0B,OAAOyhB,EAAuB5iB,WAE3C8iB,EAAQ8C,EAAIvC,OAASlG,EAASG,UAAUiF,EAAWc,OAAOlF,WAAW,GACrEtG,EAAU+N,EAAItC,SAAWnG,EAASG,UAAUiF,EAAWe,SAASnF,WAAW,GAC/EyH,EAAI7C,WAAaR,EAAWsD,YAC5BD,EAAIhO,eAAiB2K,EAAWuD,wBAAwBF,EAAItC,SAASnF,UACbyH,EAAI7C,YAC5D6C,EAAIrP,KAAOgM,EAAWwD,MACtBH,EAAIlC,cAAgBlB,EACpBoD,EAAIrC,iBAAmBqC,EAAItC,SAASnF,UAAU7R,IAAI,SAAUzK,GAC1D,OAAOkb,EAAKyG,iBAAiBoC,EAAI7C,WAAYlhB,EAAG2gB,EAClD,GAWA,IAJA,IAAIwD,EAAoBzD,EAAWkB,UAAUtF,UAAUzY,QACnDugB,EAAwBL,EAAItB,oBAAsB,GAClD4B,EAAuBN,EAAIpB,mBAAqB,GAE3ClkB,EAAI,EAAGoE,EAASshB,EAAkBthB,OAAQpE,EAAIoE,EAAQpE,IAAK,CAClE,IAAI6lB,EAAaH,EAAkB1lB,GAC/B8lB,EAAc,IAAIzC,EACtByC,EAAY3F,cAAgB0F,EAAW1F,cACvC2F,EAAY1F,gBAAkByF,EAAWzF,gBAErCyF,EAAWzO,SACb0O,EAAY1O,OAASG,EAAQ0B,QAAQ4M,EAAWzO,QAChD0O,EAAYxC,aAAeuC,EAAWvC,aACtCwC,EAAYvC,eAAiBsC,EAAWtC,eAEpCsC,EAAWrhB,OACbshB,EAAYthB,KAAOge,EAAMvJ,QAAQ4M,EAAWrhB,OAG9CohB,EAAqB7hB,KAAK+hB,IAG5BH,EAAsB5hB,KAAK+hB,EAC7B,CAIA,OAFA9D,EAAUsD,EAAIpB,mBAAoBzH,EAAKyI,4BAEhCI,CACT,EAKFhD,EAAuB5iB,UAAUijB,SAAW,EAK5CxjB,OAAOW,eAAewiB,EAAuB5iB,UAAW,UAAW,CACjEiI,IAAK,WACH,OAAOtI,KAAK4jB,iBAAiB7d,OAC/B,IAoBFkd,EAAuB5iB,UAAUukB,eAC/B,SAAyC3G,EAAM8G,GAe7C,IAdA,IAYIQ,EAASmB,EAAKC,EAAS9W,EAAKnP,EAZ5BogB,EAAgB,EAChB8F,EAA0B,EAC1BC,EAAuB,EACvBC,EAAyB,EACzBC,EAAiB,EACjBC,EAAe,EACfjiB,EAASkZ,EAAKlZ,OACd2b,EAAQ,EACRuG,EAAiB,CAAC,EAClBlF,EAAO,CAAC,EACRmF,EAAmB,GACnBb,EAAoB,GAGjB3F,EAAQ3b,GACb,GAA2B,MAAvBkZ,EAAKnY,OAAO4a,GACdI,IACAJ,IACAkG,EAA0B,OAEvB,GAA2B,MAAvB3I,EAAKnY,OAAO4a,GACnBA,QAEG,CASH,KARA6E,EAAU,IAAIvB,GACNlD,cAAgBA,EAOnBjR,EAAM6Q,EAAO7Q,EAAM9K,IAClB/E,KAAK8kB,wBAAwB7G,EAAMpO,GADTA,KAQhC,GADA8W,EAAUM,EAFVP,EAAMzI,EAAKlY,MAAM2a,EAAO7Q,IAItB6Q,GAASgG,EAAI3hB,WACR,CAEL,IADA4hB,EAAU,GACHjG,EAAQ7Q,GACb6S,EAAU1D,OAAOf,EAAMyC,EAAOqB,GAC9BrhB,EAAQqhB,EAAKrhB,MACbggB,EAAQqB,EAAKvC,KACbmH,EAAQjiB,KAAKhE,GAGf,GAAuB,IAAnBimB,EAAQ5hB,OACV,MAAM,IAAIzB,MAAM,0CAGlB,GAAuB,IAAnBqjB,EAAQ5hB,OACV,MAAM,IAAIzB,MAAM,0CAGlB2jB,EAAeP,GAAOC,CACxB,CAGApB,EAAQxE,gBAAkB6F,EAA0BD,EAAQ,GAC5DC,EAA0BrB,EAAQxE,gBAE9B4F,EAAQ5hB,OAAS,IAEnBwgB,EAAQxN,OAASgP,EAAiBJ,EAAQ,GAC1CI,GAAkBJ,EAAQ,GAG1BpB,EAAQtB,aAAe4C,EAAuBF,EAAQ,GACtDE,EAAuBtB,EAAQtB,aAE/BsB,EAAQtB,cAAgB,EAGxBsB,EAAQrB,eAAiB4C,EAAyBH,EAAQ,GAC1DG,EAAyBvB,EAAQrB,eAE7ByC,EAAQ5hB,OAAS,IAEnBwgB,EAAQpgB,KAAO6hB,EAAeL,EAAQ,GACtCK,GAAgBL,EAAQ,KAI5BN,EAAkB3hB,KAAK6gB,GACa,iBAAzBA,EAAQtB,cACjBiD,EAAiBxiB,KAAK6gB,EAE1B,CAGF5C,EAAU0D,EAAmBjJ,EAAK+J,qCAClCnnB,KAAK2kB,oBAAsB0B,EAE3B1D,EAAUuE,EAAkB9J,EAAKyI,4BACjC7lB,KAAK6kB,mBAAqBqC,CAC5B,EAMFjE,EAAuB5iB,UAAUulB,aAC/B,SAAuC7F,EAASqH,EAAWC,EACpBC,EAAaC,EAAarH,GAM/D,GAAIH,EAAQsH,IAAc,EACxB,MAAM,IAAIrjB,UAAU,gDACE+b,EAAQsH,IAEhC,GAAItH,EAAQuH,GAAe,EACzB,MAAM,IAAItjB,UAAU,kDACE+b,EAAQuH,IAGhC,OAAO7E,EAAahC,OAAOV,EAASqH,EAAWG,EAAarH,EAC9D,EAMF+C,EAAuB5iB,UAAUmnB,mBAC/B,WACE,IAAK,IAAI9G,EAAQ,EAAGA,EAAQ1gB,KAAKqlB,mBAAmBtgB,SAAU2b,EAAO,CACnE,IAAI6E,EAAUvlB,KAAKqlB,mBAAmB3E,GAMtC,GAAIA,EAAQ,EAAI1gB,KAAKqlB,mBAAmBtgB,OAAQ,CAC9C,IAAI0iB,EAAcznB,KAAKqlB,mBAAmB3E,EAAQ,GAElD,GAAI6E,EAAQzE,gBAAkB2G,EAAY3G,cAAe,CACvDyE,EAAQmC,oBAAsBD,EAAY1G,gBAAkB,EAC5D,QACF,CACF,CAGAwE,EAAQmC,oBAAsBC,GAChC,CACF,EA0BF1E,EAAuB5iB,UAAU8X,oBAC/B,SAA+CsN,GAC7C,IAAIC,EAAS,CACX5E,cAAe1D,EAAK8F,OAAOuC,EAAO,QAClC1E,gBAAiB3D,EAAK8F,OAAOuC,EAAO,WAGlC/E,EAAQ1gB,KAAK4lB,aACfF,EACA1lB,KAAKqlB,mBACL,gBACA,kBACAjI,EAAK+J,oCACL/J,EAAK8F,OAAOuC,EAAO,OAAQpQ,EAAkBmL,uBAG/C,GAAIE,GAAS,EAAG,CACd,IAAI6E,EAAUvlB,KAAKqlB,mBAAmB3E,GAEtC,GAAI6E,EAAQzE,gBAAkB4E,EAAO5E,cAAe,CAClD,IAAI/I,EAASqF,EAAK8F,OAAOqC,EAAS,SAAU,MAC7B,OAAXxN,IACFA,EAAS/X,KAAK2jB,SAASrF,GAAGvG,GAC1BA,EAASqF,EAAKyG,iBAAiB7jB,KAAKojB,WAAYrL,EAAQ/X,KAAK+jB,gBAE/D,IAAI5e,EAAOiY,EAAK8F,OAAOqC,EAAS,OAAQ,MAIxC,OAHa,OAATpgB,IACFA,EAAOnF,KAAK0jB,OAAOpF,GAAGnZ,IAEjB,CACL4S,OAAQA,EACRQ,KAAM6E,EAAK8F,OAAOqC,EAAS,eAAgB,MAC3C/M,OAAQ4E,EAAK8F,OAAOqC,EAAS,iBAAkB,MAC/CpgB,KAAMA,EAEV,CACF,CAEA,MAAO,CACL4S,OAAQ,KACRQ,KAAM,KACNC,OAAQ,KACRrT,KAAM,KAEV,EAMF8d,EAAuB5iB,UAAUunB,wBAC/B,WACE,QAAK5nB,KAAKiY,gBAGHjY,KAAKiY,eAAelT,QAAU/E,KAAK2jB,SAAS3F,SAChDhe,KAAKiY,eAAe4P,KAAK,SAAUC,GAAM,OAAa,MAANA,CAAY,EACjE,EAOF7E,EAAuB5iB,UAAU0nB,iBAC/B,SAA4ChC,EAASiC,GACnD,IAAKhoB,KAAKiY,eACR,OAAO,KAGT,IAAIyI,EAAQ1gB,KAAK2lB,iBAAiBI,GAClC,GAAIrF,GAAS,EACX,OAAO1gB,KAAKiY,eAAeyI,GAG7B,IAKIxS,EALA8X,EAAiBD,EAMrB,GALuB,MAAnB/lB,KAAKojB,aACP4C,EAAiB5I,EAAKqG,SAASzjB,KAAKojB,WAAY4C,IAI3B,MAAnBhmB,KAAKojB,aACDlV,EAAMkP,EAAK6K,SAASjoB,KAAKojB,aAAc,CAK7C,IAAI8E,EAAiBlC,EAAelY,QAAQ,aAAc,IAC1D,GAAkB,QAAdI,EAAIia,QACDnoB,KAAK2jB,SAAStG,IAAI6K,GACvB,OAAOloB,KAAKiY,eAAejY,KAAK2jB,SAAS/J,QAAQsO,IAGnD,KAAMha,EAAIhG,MAAoB,KAAZgG,EAAIhG,OACflI,KAAK2jB,SAAStG,IAAI,IAAM2I,GAC7B,OAAOhmB,KAAKiY,eAAejY,KAAK2jB,SAAS/J,QAAQ,IAAMoM,GAE3D,CAMA,GAAIgC,EACF,OAAO,KAGP,MAAM,IAAI1kB,MAAM,IAAM0iB,EAAiB,6BAE3C,EAyBF/C,EAAuB5iB,UAAU+nB,qBAC/B,SAAgD3C,GAC9C,IAAI1N,EAASqF,EAAK8F,OAAOuC,EAAO,UAEhC,IADA1N,EAAS/X,KAAK2lB,iBAAiB5N,IAClB,EACX,MAAO,CACLQ,KAAM,KACNC,OAAQ,KACRsN,WAAY,MAIhB,IAAIJ,EAAS,CACX3N,OAAQA,EACRkM,aAAc7G,EAAK8F,OAAOuC,EAAO,QACjCvB,eAAgB9G,EAAK8F,OAAOuC,EAAO,WAGjC/E,EAAQ1gB,KAAK4lB,aACfF,EACA1lB,KAAKslB,kBACL,eACA,iBACAlI,EAAKyI,2BACLzI,EAAK8F,OAAOuC,EAAO,OAAQpQ,EAAkBmL,uBAG/C,GAAIE,GAAS,EAAG,CACd,IAAI6E,EAAUvlB,KAAKslB,kBAAkB5E,GAErC,GAAI6E,EAAQxN,SAAW2N,EAAO3N,OAC5B,MAAO,CACLQ,KAAM6E,EAAK8F,OAAOqC,EAAS,gBAAiB,MAC5C/M,OAAQ4E,EAAK8F,OAAOqC,EAAS,kBAAmB,MAChDO,WAAY1I,EAAK8F,OAAOqC,EAAS,sBAAuB,MAG9D,CAEA,MAAO,CACLhN,KAAM,KACNC,OAAQ,KACRsN,WAAY,KAEhB,EAqGF9C,EAAyB3iB,UAAYP,OAAO0B,OAAO6T,EAAkBhV,WACrE2iB,EAAyB3iB,UAAU6E,YAAcmQ,EAKjD2N,EAAyB3iB,UAAUijB,SAAW,EAK9CxjB,OAAOW,eAAeuiB,EAAyB3iB,UAAW,UAAW,CACnEiI,IAAK,WAEH,IADA,IAAI4P,EAAU,GACLvX,EAAI,EAAGA,EAAIX,KAAKokB,UAAUrf,OAAQpE,IACzC,IAAK,IAAI4hB,EAAI,EAAGA,EAAIviB,KAAKokB,UAAUzjB,GAAG8jB,SAASvM,QAAQnT,OAAQwd,IAC7DrK,EAAQxT,KAAK1E,KAAKokB,UAAUzjB,GAAG8jB,SAASvM,QAAQqK,IAGpD,OAAOrK,CACT,IAsBF8K,EAAyB3iB,UAAU8X,oBACjC,SAAsDsN,GACpD,IAAIC,EAAS,CACX5E,cAAe1D,EAAK8F,OAAOuC,EAAO,QAClC1E,gBAAiB3D,EAAK8F,OAAOuC,EAAO,WAKlC4C,EAAe5F,EAAahC,OAAOiF,EAAQ1lB,KAAKokB,UAClD,SAASsB,EAAQ4C,GAEf,OADU5C,EAAO5E,cAAgBwH,EAAQ9D,gBAAgB1D,eAKjD4E,EAAO3E,gBACPuH,EAAQ9D,gBAAgBzD,eAClC,GACEuH,EAAUtoB,KAAKokB,UAAUiE,GAE7B,OAAKC,EASEA,EAAQ7D,SAAStM,oBAAoB,CAC1CI,KAAMmN,EAAO5E,eACVwH,EAAQ9D,gBAAgB1D,cAAgB,GAC3CtI,OAAQkN,EAAO3E,iBACZuH,EAAQ9D,gBAAgB1D,gBAAkB4E,EAAO5E,cAC/CwH,EAAQ9D,gBAAgBzD,gBAAkB,EAC1C,GACLwH,KAAM9C,EAAM8C,OAfL,CACLxQ,OAAQ,KACRQ,KAAM,KACNC,OAAQ,KACRrT,KAAM,KAaZ,EAMF6d,EAAyB3iB,UAAUunB,wBACjC,WACE,OAAO5nB,KAAKokB,UAAUoE,MAAM,SAAUtmB,GACpC,OAAOA,EAAEuiB,SAASmD,yBACpB,EACF,EAOF5E,EAAyB3iB,UAAU0nB,iBACjC,SAAmDhC,EAASiC,GAC1D,IAAK,IAAIrnB,EAAI,EAAGA,EAAIX,KAAKokB,UAAUrf,OAAQpE,IAAK,CAC9C,IAEIyb,EAFUpc,KAAKokB,UAAUzjB,GAEP8jB,SAASsD,iBAAiBhC,GAAS,GACzD,GAAI3J,EACF,OAAOA,CAEX,CACA,GAAI4L,EACF,OAAO,KAGP,MAAM,IAAI1kB,MAAM,IAAMyiB,EAAU,6BAEpC,EAoBF/C,EAAyB3iB,UAAU+nB,qBACjC,SAAuD3C,GACrD,IAAK,IAAI9kB,EAAI,EAAGA,EAAIX,KAAKokB,UAAUrf,OAAQpE,IAAK,CAC9C,IAAI2nB,EAAUtoB,KAAKokB,UAAUzjB,GAI7B,IAAyE,IAArE2nB,EAAQ7D,SAASkB,iBAAiBvI,EAAK8F,OAAOuC,EAAO,WAAzD,CAGA,IAAIgD,EAAoBH,EAAQ7D,SAAS2D,qBAAqB3C,GAC9D,GAAIgD,EASF,MARU,CACRlQ,KAAMkQ,EAAkBlQ,MACrB+P,EAAQ9D,gBAAgB1D,cAAgB,GAC3CtI,OAAQiQ,EAAkBjQ,QACvB8P,EAAQ9D,gBAAgB1D,gBAAkB2H,EAAkBlQ,KAC1D+P,EAAQ9D,gBAAgBzD,gBAAkB,EAC1C,GATT,CAaF,CAEA,MAAO,CACLxI,KAAM,KACNC,OAAQ,KAEZ,EAOFwK,EAAyB3iB,UAAUukB,eACjC,SAAgD3G,EAAM8G,GACpD/kB,KAAK2kB,oBAAsB,GAC3B3kB,KAAK6kB,mBAAqB,GAC1B,IAAK,IAAIlkB,EAAI,EAAGA,EAAIX,KAAKokB,UAAUrf,OAAQpE,IAGzC,IAFA,IAAI2nB,EAAUtoB,KAAKokB,UAAUzjB,GACzB+nB,EAAkBJ,EAAQ7D,SAASY,mBAC9B9C,EAAI,EAAGA,EAAImG,EAAgB3jB,OAAQwd,IAAK,CAC/C,IAAIgD,EAAUmD,EAAgBnG,GAE1BxK,EAASuQ,EAAQ7D,SAASd,SAASrF,GAAGiH,EAAQxN,QAClDA,EAASqF,EAAKyG,iBAAiByE,EAAQ7D,SAASrB,WAAYrL,EAAQ/X,KAAK+jB,eACzE/jB,KAAK2jB,SAAS5F,IAAIhG,GAClBA,EAAS/X,KAAK2jB,SAAS/J,QAAQ7B,GAE/B,IAAI5S,EAAO,KACPogB,EAAQpgB,OACVA,EAAOmjB,EAAQ7D,SAASf,OAAOpF,GAAGiH,EAAQpgB,MAC1CnF,KAAK0jB,OAAO3F,IAAI5Y,GAChBA,EAAOnF,KAAK0jB,OAAO9J,QAAQzU,IAO7B,IAAIwjB,EAAkB,CACpB5Q,OAAQA,EACR+I,cAAeyE,EAAQzE,eACpBwH,EAAQ9D,gBAAgB1D,cAAgB,GAC3CC,gBAAiBwE,EAAQxE,iBACtBuH,EAAQ9D,gBAAgB1D,gBAAkByE,EAAQzE,cACjDwH,EAAQ9D,gBAAgBzD,gBAAkB,EAC1C,GACJkD,aAAcsB,EAAQtB,aACtBC,eAAgBqB,EAAQrB,eACxB/e,KAAMA,GAGRnF,KAAK2kB,oBAAoBjgB,KAAKikB,GACc,iBAAjCA,EAAgB1E,cACzBjkB,KAAK6kB,mBAAmBngB,KAAKikB,EAEjC,CAGFhG,EAAU3iB,KAAK2kB,oBAAqBvH,EAAK+J,qCACzCxE,EAAU3iB,KAAK6kB,mBAAoBzH,EAAKyI,2BAC1C,C,YC/mCF,IAAInD,EAAY,EAAQ,IACpBtF,EAAO,EAAQ,KACfI,EAAW,SACXmD,EAAc,SAUlB,SAASiI,EAAmBnD,GACrBA,IACHA,EAAQ,CAAC,GAEXzlB,KAAKomB,MAAQhJ,EAAK8F,OAAOuC,EAAO,OAAQ,MACxCzlB,KAAKkmB,YAAc9I,EAAK8F,OAAOuC,EAAO,aAAc,MACpDzlB,KAAK6oB,gBAAkBzL,EAAK8F,OAAOuC,EAAO,kBAAkB,GAC5DzlB,KAAK2jB,SAAW,IAAInG,EACpBxd,KAAK0jB,OAAS,IAAIlG,EAClBxd,KAAK8jB,UAAY,IAAInD,EACrB3gB,KAAK8oB,iBAAmB,IAC1B,CAEAF,EAAmBvoB,UAAUijB,SAAW,EAOxCsF,EAAmBlE,cACjB,SAA0CqE,GACxC,IAAI3F,EAAa2F,EAAmB3F,WAChC3Q,EAAY,IAAImW,EAAmB,CACrChS,KAAMmS,EAAmBnS,KACzBwM,WAAYA,IA2Cd,OAzCA2F,EAAmB7D,YAAY,SAAUK,GACvC,IAAIyD,EAAa,CACfC,UAAW,CACT1Q,KAAMgN,EAAQzE,cACdtI,OAAQ+M,EAAQxE,kBAIE,MAAlBwE,EAAQxN,SACViR,EAAWjR,OAASwN,EAAQxN,OACV,MAAdqL,IACF4F,EAAWjR,OAASqF,EAAKqG,SAASL,EAAY4F,EAAWjR,SAG3DiR,EAAWE,SAAW,CACpB3Q,KAAMgN,EAAQtB,aACdzL,OAAQ+M,EAAQrB,gBAGE,MAAhBqB,EAAQpgB,OACV6jB,EAAW7jB,KAAOogB,EAAQpgB,OAI9BsN,EAAU0W,WAAWH,EACvB,GACAD,EAAmB7Q,QAAQrV,QAAQ,SAAUumB,GAC3C,IAAIC,EAAiBD,EACF,OAAfhG,IACFiG,EAAiBjM,EAAKqG,SAASL,EAAYgG,IAGxC3W,EAAUkR,SAAStG,IAAIgM,IAC1B5W,EAAUkR,SAAS5F,IAAIsL,GAGzB,IAAIjN,EAAU2M,EAAmBhB,iBAAiBqB,GACnC,MAAXhN,GACF3J,EAAU6W,iBAAiBF,EAAYhN,EAE3C,GACO3J,CACT,EAYFmW,EAAmBvoB,UAAU8oB,WAC3B,SAAuC1D,GACrC,IAAIwD,EAAY7L,EAAK8F,OAAOuC,EAAO,aAC/ByD,EAAW9L,EAAK8F,OAAOuC,EAAO,WAAY,MAC1C1N,EAASqF,EAAK8F,OAAOuC,EAAO,SAAU,MACtCtgB,EAAOiY,EAAK8F,OAAOuC,EAAO,OAAQ,MAEjCzlB,KAAK6oB,iBACR7oB,KAAKupB,iBAAiBN,EAAWC,EAAUnR,EAAQ5S,GAGvC,MAAV4S,IACFA,EAAS9Q,OAAO8Q,GACX/X,KAAK2jB,SAAStG,IAAItF,IACrB/X,KAAK2jB,SAAS5F,IAAIhG,IAIV,MAAR5S,IACFA,EAAO8B,OAAO9B,GACTnF,KAAK0jB,OAAOrG,IAAIlY,IACnBnF,KAAK0jB,OAAO3F,IAAI5Y,IAIpBnF,KAAK8jB,UAAU/F,IAAI,CACjB+C,cAAemI,EAAU1Q,KACzBwI,gBAAiBkI,EAAUzQ,OAC3ByL,aAA0B,MAAZiF,GAAoBA,EAAS3Q,KAC3C2L,eAA4B,MAAZgF,GAAoBA,EAAS1Q,OAC7CT,OAAQA,EACR5S,KAAMA,GAEV,EAKFyjB,EAAmBvoB,UAAUipB,iBAC3B,SAA6CE,EAAaC,GACxD,IAAI1R,EAASyR,EACW,MAApBxpB,KAAKkmB,cACPnO,EAASqF,EAAKqG,SAASzjB,KAAKkmB,YAAanO,IAGrB,MAAlB0R,GAGGzpB,KAAK8oB,mBACR9oB,KAAK8oB,iBAAmBhpB,OAAO0B,OAAO,OAExCxB,KAAK8oB,iBAAiB1L,EAAKe,YAAYpG,IAAW0R,GACzCzpB,KAAK8oB,0BAGP9oB,KAAK8oB,iBAAiB1L,EAAKe,YAAYpG,IACI,IAA9CjY,OAAO4F,KAAK1F,KAAK8oB,kBAAkB/jB,SACrC/E,KAAK8oB,iBAAmB,MAG9B,EAkBFF,EAAmBvoB,UAAUqpB,eAC3B,SAA2CX,EAAoBS,EAAaG,GAC1E,IAAIP,EAAaI,EAEjB,GAAmB,MAAfA,EAAqB,CACvB,GAA+B,MAA3BT,EAAmBnS,KACrB,MAAM,IAAItT,MACR,iJAIJ8lB,EAAaL,EAAmBnS,IAClC,CACA,IAAIwM,EAAapjB,KAAKkmB,YAEJ,MAAd9C,IACFgG,EAAahM,EAAKqG,SAASL,EAAYgG,IAIzC,IAAIQ,EAAa,IAAIpM,EACjBqM,EAAW,IAAIrM,EAGnBxd,KAAK8jB,UAAU9C,gBAAgB,SAAUuE,GACvC,GAAIA,EAAQxN,SAAWqR,GAAsC,MAAxB7D,EAAQtB,aAAsB,CAEjE,IAAIiF,EAAWH,EAAmB5Q,oBAAoB,CACpDI,KAAMgN,EAAQtB,aACdzL,OAAQ+M,EAAQrB,iBAEK,MAAnBgF,EAASnR,SAEXwN,EAAQxN,OAASmR,EAASnR,OACJ,MAAlB4R,IACFpE,EAAQxN,OAASqF,EAAKzC,KAAKgP,EAAgBpE,EAAQxN,SAEnC,MAAdqL,IACFmC,EAAQxN,OAASqF,EAAKqG,SAASL,EAAYmC,EAAQxN,SAErDwN,EAAQtB,aAAeiF,EAAS3Q,KAChCgN,EAAQrB,eAAiBgF,EAAS1Q,OACb,MAAjB0Q,EAAS/jB,OACXogB,EAAQpgB,KAAO+jB,EAAS/jB,MAG9B,CAEA,IAAI4S,EAASwN,EAAQxN,OACP,MAAVA,GAAmB6R,EAAWvM,IAAItF,IACpC6R,EAAW7L,IAAIhG,GAGjB,IAAI5S,EAAOogB,EAAQpgB,KACP,MAARA,GAAiB0kB,EAASxM,IAAIlY,IAChC0kB,EAAS9L,IAAI5Y,EAGjB,EAAGnF,MACHA,KAAK2jB,SAAWiG,EAChB5pB,KAAK0jB,OAASmG,EAGdd,EAAmB7Q,QAAQrV,QAAQ,SAAUumB,GAC3C,IAAIhN,EAAU2M,EAAmBhB,iBAAiBqB,GACnC,MAAXhN,IACoB,MAAlBuN,IACFP,EAAahM,EAAKzC,KAAKgP,EAAgBP,IAEvB,MAAdhG,IACFgG,EAAahM,EAAKqG,SAASL,EAAYgG,IAEzCppB,KAAKspB,iBAAiBF,EAAYhN,GAEtC,EAAGpc,KACL,EAaF4oB,EAAmBvoB,UAAUkpB,iBAC3B,SAA4CO,EAAYC,EAAWhE,EACvBiE,GAK1C,GAAID,GAAuC,iBAAnBA,EAAUxR,MAAiD,iBAArBwR,EAAUvR,OACpE,MAAM,IAAIlV,MACN,gPAMR,MAAIwmB,GAAc,SAAUA,GAAc,WAAYA,GAC/CA,EAAWvR,KAAO,GAAKuR,EAAWtR,QAAU,IAC3CuR,GAAchE,GAAYiE,MAIzBF,GAAc,SAAUA,GAAc,WAAYA,GAC/CC,GAAa,SAAUA,GAAa,WAAYA,GAChDD,EAAWvR,KAAO,GAAKuR,EAAWtR,QAAU,GAC5CuR,EAAUxR,KAAO,GAAKwR,EAAUvR,QAAU,GAC1CuN,GAKV,MAAM,IAAIziB,MAAM,oBAAsByK,KAAKC,UAAU,CACnDib,UAAWa,EACX/R,OAAQgO,EACRmD,SAAUa,EACV5kB,KAAM6kB,IAGZ,EAMFpB,EAAmBvoB,UAAU4pB,mBAC3B,WAcE,IAbA,IAOI/lB,EACAqhB,EACA2E,EACAC,EAVAvD,EAA0B,EAC1BwD,EAAwB,EACxBtD,EAAyB,EACzBD,EAAuB,EACvBG,EAAe,EACfD,EAAiB,EACjB3d,EAAS,GAMTia,EAAWrjB,KAAK8jB,UAAUtF,UACrB7d,EAAI,EAAGmd,EAAMuF,EAASte,OAAQpE,EAAImd,EAAKnd,IAAK,CAInD,GAFAuD,EAAO,IADPqhB,EAAUlC,EAAS1iB,IAGPmgB,gBAAkBsJ,EAE5B,IADAxD,EAA0B,EACnBrB,EAAQzE,gBAAkBsJ,GAC/BlmB,GAAQ,IACRkmB,SAIF,GAAIzpB,EAAI,EAAG,CACT,IAAKyc,EAAKsE,oCAAoC6D,EAASlC,EAAS1iB,EAAI,IAClE,SAEFuD,GAAQ,GACV,CAGFA,GAAQwe,EAAUlU,OAAO+W,EAAQxE,gBACJ6F,GAC7BA,EAA0BrB,EAAQxE,gBAEZ,MAAlBwE,EAAQxN,SACVoS,EAAYnqB,KAAK2jB,SAAS/J,QAAQ2L,EAAQxN,QAC1C7T,GAAQwe,EAAUlU,OAAO2b,EAAYpD,GACrCA,EAAiBoD,EAGjBjmB,GAAQwe,EAAUlU,OAAO+W,EAAQtB,aAAe,EACnB4C,GAC7BA,EAAuBtB,EAAQtB,aAAe,EAE9C/f,GAAQwe,EAAUlU,OAAO+W,EAAQrB,eACJ4C,GAC7BA,EAAyBvB,EAAQrB,eAEb,MAAhBqB,EAAQpgB,OACV+kB,EAAUlqB,KAAK0jB,OAAO9J,QAAQ2L,EAAQpgB,MACtCjB,GAAQwe,EAAUlU,OAAO0b,EAAUlD,GACnCA,EAAekD,IAInB9gB,GAAUlF,CACZ,CAEA,OAAOkF,CACT,EAEFwf,EAAmBvoB,UAAU8lB,wBAC3B,SAAmDkE,EAAUtF,GAC3D,OAAOsF,EAAS1d,IAAI,SAAUoL,GAC5B,IAAK/X,KAAK8oB,iBACR,OAAO,KAEU,MAAf/D,IACFhN,EAASqF,EAAKqG,SAASsB,EAAahN,IAEtC,IAAIhR,EAAMqW,EAAKe,YAAYpG,GAC3B,OAAOjY,OAAOO,UAAUE,eAAeuB,KAAK9B,KAAK8oB,iBAAkB/hB,GAC/D/G,KAAK8oB,iBAAiB/hB,GACtB,IACN,EAAG/G,KACL,EAKF4oB,EAAmBvoB,UAAUiqB,OAC3B,WACE,IAAI3d,EAAM,CACR0N,QAASra,KAAKsjB,SACdpL,QAASlY,KAAK2jB,SAASnF,UACvB2E,MAAOnjB,KAAK0jB,OAAOlF,UACnB6E,SAAUrjB,KAAKiqB,sBAYjB,OAVkB,MAAdjqB,KAAKomB,QACPzZ,EAAIiK,KAAO5W,KAAKomB,OAEM,MAApBpmB,KAAKkmB,cACPvZ,EAAIyW,WAAapjB,KAAKkmB,aAEpBlmB,KAAK8oB,mBACPnc,EAAIsL,eAAiBjY,KAAKmmB,wBAAwBxZ,EAAIuL,QAASvL,EAAIyW,aAG9DzW,CACT,EAKFic,EAAmBvoB,UAAUwJ,SAC3B,WACE,OAAOkE,KAAKC,UAAUhO,KAAKsqB,SAC7B,EAEF5qB,EAAQ,EAAqBkpB,C,iBCjazBA,EAAqB,QACrBxL,EAAO,EAAQ,KAIfmN,EAAgB,UAQhBC,EAAe,qBAcnB,SAASC,EAAWC,EAAOC,EAAS5E,EAAS6E,EAASZ,GACpDhqB,KAAK6qB,SAAW,GAChB7qB,KAAK8qB,eAAiB,CAAC,EACvB9qB,KAAKuY,KAAgB,MAATmS,EAAgB,KAAOA,EACnC1qB,KAAKwY,OAAoB,MAAXmS,EAAkB,KAAOA,EACvC3qB,KAAK+X,OAAoB,MAAXgO,EAAkB,KAAOA,EACvC/lB,KAAKmF,KAAgB,MAAT6kB,EAAgB,KAAOA,EACnChqB,KAAKwqB,IAAgB,EACN,MAAXI,GAAiB5qB,KAAK+d,IAAI6M,EAChC,CAUAH,EAAWM,wBACT,SAA4CC,EAAgBjC,EAAoBkC,GAG9E,IAAIC,EAAO,IAAIT,EAMXU,EAAiBH,EAAelQ,MAAMyP,GACtCa,EAAsB,EACtBC,EAAgB,WAIlB,OAHmBC,KAELA,KAAiB,IAG/B,SAASA,IACP,OAAOF,EAAsBD,EAAepmB,OACxComB,EAAeC,UAAyB3f,CAC9C,CACF,EAGI8f,EAAoB,EAAG7D,EAAsB,EAK7C8D,EAAc,KAgElB,OA9DAzC,EAAmB7D,YAAY,SAAUK,GACvC,GAAoB,OAAhBiG,EAAsB,CAGxB,KAAID,EAAoBhG,EAAQzE,eAMzB,CAIL,IACIjG,GADA4Q,EAAWN,EAAeC,IAAwB,IAClCM,OAAO,EAAGnG,EAAQxE,gBACR2G,GAO9B,OANAyD,EAAeC,GAAuBK,EAASC,OAAOnG,EAAQxE,gBAC1B2G,GACpCA,EAAsBnC,EAAQxE,gBAC9B4K,EAAmBH,EAAa3Q,QAEhC2Q,EAAcjG,EAEhB,CAlBEoG,EAAmBH,EAAaH,KAChCE,IACA7D,EAAsB,CAiB1B,CAIA,KAAO6D,EAAoBhG,EAAQzE,eACjCoK,EAAKnN,IAAIsN,KACTE,IAEF,GAAI7D,EAAsBnC,EAAQxE,gBAAiB,CACjD,IAAI0K,EAAWN,EAAeC,IAAwB,GACtDF,EAAKnN,IAAI0N,EAASC,OAAO,EAAGnG,EAAQxE,kBACpCoK,EAAeC,GAAuBK,EAASC,OAAOnG,EAAQxE,iBAC9D2G,EAAsBnC,EAAQxE,eAChC,CACAyK,EAAcjG,CAChB,EAAGvlB,MAECorB,EAAsBD,EAAepmB,SACnCymB,GAEFG,EAAmBH,EAAaH,KAGlCH,EAAKnN,IAAIoN,EAAeS,OAAOR,GAAqBzQ,KAAK,MAI3DoO,EAAmB7Q,QAAQrV,QAAQ,SAAUumB,GAC3C,IAAIhN,EAAU2M,EAAmBhB,iBAAiBqB,GACnC,MAAXhN,IACmB,MAAjB6O,IACF7B,EAAahM,EAAKzC,KAAKsQ,EAAe7B,IAExC8B,EAAK5B,iBAAiBF,EAAYhN,GAEtC,GAEO8O,EAEP,SAASS,EAAmBpG,EAAS1K,GACnC,GAAgB,OAAZ0K,QAAuC9Z,IAAnB8Z,EAAQxN,OAC9BmT,EAAKnN,IAAIlD,OACJ,CACL,IAAI9C,EAASkT,EACT7N,EAAKzC,KAAKsQ,EAAe1F,EAAQxN,QACjCwN,EAAQxN,OACZmT,EAAKnN,IAAI,IAAI0M,EAAWlF,EAAQtB,aACRsB,EAAQrB,eACRnM,EACA8C,EACA0K,EAAQpgB,MAClC,CACF,CACF,EAQFslB,EAAWpqB,UAAU0d,IAAM,SAAwB8N,GACjD,GAAI9Q,MAAM+Q,QAAQD,GAChBA,EAAOhpB,QAAQ,SAAU2M,GACvBxP,KAAK+d,IAAIvO,EACX,EAAGxP,UAEA,KAAI6rB,EAAOrB,IAAmC,iBAAXqB,EAMtC,MAAM,IAAI7nB,UACR,8EAAgF6nB,GAN9EA,GACF7rB,KAAK6qB,SAASnmB,KAAKmnB,EAOvB,CACA,OAAO7rB,IACT,EAQAyqB,EAAWpqB,UAAU0rB,QAAU,SAA4BF,GACzD,GAAI9Q,MAAM+Q,QAAQD,GAChB,IAAK,IAAIlrB,EAAIkrB,EAAO9mB,OAAO,EAAGpE,GAAK,EAAGA,IACpCX,KAAK+rB,QAAQF,EAAOlrB,QAGnB,KAAIkrB,EAAOrB,IAAmC,iBAAXqB,EAItC,MAAM,IAAI7nB,UACR,8EAAgF6nB,GAJlF7rB,KAAK6qB,SAAShP,QAAQgQ,EAMxB,CACA,OAAO7rB,IACT,EASAyqB,EAAWpqB,UAAU2rB,KAAO,SAAyBC,GAEnD,IADA,IAAIzc,EACK7O,EAAI,EAAGmd,EAAM9d,KAAK6qB,SAAS9lB,OAAQpE,EAAImd,EAAKnd,KACnD6O,EAAQxP,KAAK6qB,SAASlqB,IACZ6pB,GACRhb,EAAMwc,KAAKC,GAGG,KAAVzc,GACFyc,EAAIzc,EAAO,CAAEuI,OAAQ/X,KAAK+X,OACbQ,KAAMvY,KAAKuY,KACXC,OAAQxY,KAAKwY,OACbrT,KAAMnF,KAAKmF,MAIhC,EAQAslB,EAAWpqB,UAAUsa,KAAO,SAAyBuR,GACnD,IAAIC,EACAxrB,EACAmd,EAAM9d,KAAK6qB,SAAS9lB,OACxB,GAAI+Y,EAAM,EAAG,CAEX,IADAqO,EAAc,GACTxrB,EAAI,EAAGA,EAAImd,EAAI,EAAGnd,IACrBwrB,EAAYznB,KAAK1E,KAAK6qB,SAASlqB,IAC/BwrB,EAAYznB,KAAKwnB,GAEnBC,EAAYznB,KAAK1E,KAAK6qB,SAASlqB,IAC/BX,KAAK6qB,SAAWsB,CAClB,CACA,OAAOnsB,IACT,EASAyqB,EAAWpqB,UAAU+rB,aAAe,SAAiCC,EAAUC,GAC7E,IAAIC,EAAYvsB,KAAK6qB,SAAS7qB,KAAK6qB,SAAS9lB,OAAS,GAUrD,OATIwnB,EAAU/B,GACZ+B,EAAUH,aAAaC,EAAUC,GAEL,iBAAdC,EACdvsB,KAAK6qB,SAAS7qB,KAAK6qB,SAAS9lB,OAAS,GAAKwnB,EAAUze,QAAQue,EAAUC,GAGtEtsB,KAAK6qB,SAASnmB,KAAK,GAAGoJ,QAAQue,EAAUC,IAEnCtsB,IACT,EASAyqB,EAAWpqB,UAAUipB,iBACnB,SAAqCE,EAAaC,GAChDzpB,KAAK8qB,eAAe1N,EAAKe,YAAYqL,IAAgBC,CACvD,EAQFgB,EAAWpqB,UAAUmsB,mBACnB,SAAuCP,GACrC,IAAK,IAAItrB,EAAI,EAAGmd,EAAM9d,KAAK6qB,SAAS9lB,OAAQpE,EAAImd,EAAKnd,IAC/CX,KAAK6qB,SAASlqB,GAAG6pB,IACnBxqB,KAAK6qB,SAASlqB,GAAG6rB,mBAAmBP,GAIxC,IAAI/T,EAAUpY,OAAO4F,KAAK1F,KAAK8qB,gBAC/B,IAASnqB,EAAI,EAAGmd,EAAM5F,EAAQnT,OAAQpE,EAAImd,EAAKnd,IAC7CsrB,EAAI7O,EAAKqP,cAAcvU,EAAQvX,IAAKX,KAAK8qB,eAAe5S,EAAQvX,IAEpE,EAMF8pB,EAAWpqB,UAAUwJ,SAAW,WAC9B,IAAI6c,EAAM,GAIV,OAHA1mB,KAAKgsB,KAAK,SAAUxc,GAClBkX,GAAOlX,CACT,GACOkX,CACT,EAMA+D,EAAWpqB,UAAUqsB,sBAAwB,SAA0CjH,GACrF,IAAIwD,EAAY,CACdpO,KAAM,GACNtC,KAAM,EACNC,OAAQ,GAEN7L,EAAM,IAAIic,EAAmBnD,GAC7BkH,GAAsB,EACtBC,EAAqB,KACrBC,EAAmB,KACnBC,EAAqB,KACrBC,EAAmB,KAqEvB,OApEA/sB,KAAKgsB,KAAK,SAAUxc,EAAO0Z,GACzBD,EAAUpO,MAAQrL,EACM,OAApB0Z,EAASnR,QACY,OAAlBmR,EAAS3Q,MACW,OAApB2Q,EAAS1Q,QACXoU,IAAuB1D,EAASnR,QAC7B8U,IAAqB3D,EAAS3Q,MAC9BuU,IAAuB5D,EAAS1Q,QAChCuU,IAAqB7D,EAAS/jB,MAClCwH,EAAIwc,WAAW,CACbpR,OAAQmR,EAASnR,OACjBmR,SAAU,CACR3Q,KAAM2Q,EAAS3Q,KACfC,OAAQ0Q,EAAS1Q,QAEnByQ,UAAW,CACT1Q,KAAM0Q,EAAU1Q,KAChBC,OAAQyQ,EAAUzQ,QAEpBrT,KAAM+jB,EAAS/jB,OAGnBynB,EAAqB1D,EAASnR,OAC9B8U,EAAmB3D,EAAS3Q,KAC5BuU,EAAqB5D,EAAS1Q,OAC9BuU,EAAmB7D,EAAS/jB,KAC5BwnB,GAAsB,GACbA,IACThgB,EAAIwc,WAAW,CACbF,UAAW,CACT1Q,KAAM0Q,EAAU1Q,KAChBC,OAAQyQ,EAAUzQ,UAGtBoU,EAAqB,KACrBD,GAAsB,GAExB,IAAK,IAAItO,EAAM,EAAGtZ,EAASyK,EAAMzK,OAAQsZ,EAAMtZ,EAAQsZ,IA3WxC,KA4WT7O,EAAM+P,WAAWlB,IACnB4K,EAAU1Q,OACV0Q,EAAUzQ,OAAS,EAEf6F,EAAM,IAAMtZ,GACd6nB,EAAqB,KACrBD,GAAsB,GACbA,GACThgB,EAAIwc,WAAW,CACbpR,OAAQmR,EAASnR,OACjBmR,SAAU,CACR3Q,KAAM2Q,EAAS3Q,KACfC,OAAQ0Q,EAAS1Q,QAEnByQ,UAAW,CACT1Q,KAAM0Q,EAAU1Q,KAChBC,OAAQyQ,EAAUzQ,QAEpBrT,KAAM+jB,EAAS/jB,QAInB8jB,EAAUzQ,QAGhB,GACAxY,KAAKwsB,mBAAmB,SAAUpD,EAAY4D,GAC5CrgB,EAAI2c,iBAAiBF,EAAY4D,EACnC,GAEO,CAAEnS,KAAMoO,EAAUpO,KAAMlO,IAAKA,EACtC,C,WChYAjN,EAAQwjB,OATR,SAAgBuC,EAAOuE,EAAOiD,GAC5B,GAAIjD,KAASvE,EACX,OAAOA,EAAMuE,GACR,GAAyB,IAArBvjB,UAAU1B,OACnB,OAAOkoB,EAEP,MAAM,IAAI3pB,MAAM,IAAM0mB,EAAQ,4BAElC,EAGA,IAAIkD,EAAY,iEACZC,EAAgB,gBAEpB,SAASlF,EAASmF,GAChB,IAAIrW,EAAQqW,EAAKrW,MAAMmW,GACvB,OAAKnW,EAGE,CACLoR,OAAQpR,EAAM,GACdhM,KAAMgM,EAAM,GACZsW,KAAMtW,EAAM,GACZuW,KAAMvW,EAAM,GACZ7O,KAAM6O,EAAM,IAPL,IASX,CAGA,SAASwW,EAAYC,GACnB,IAAItf,EAAM,GAiBV,OAhBIsf,EAAWrF,SACbja,GAAOsf,EAAWrF,OAAS,KAE7Bja,GAAO,KACHsf,EAAWziB,OACbmD,GAAOsf,EAAWziB,KAAO,KAEvByiB,EAAWH,OACbnf,GAAOsf,EAAWH,MAEhBG,EAAWF,OACbpf,GAAO,IAAMsf,EAAWF,MAEtBE,EAAWtlB,OACbgG,GAAOsf,EAAWtlB,MAEbgG,CACT,CAcA,SAASqV,EAAUkK,GACjB,IAAIvlB,EAAOulB,EACPvf,EAAM+Z,EAASwF,GACnB,GAAIvf,EAAK,CACP,IAAKA,EAAIhG,KACP,OAAOulB,EAETvlB,EAAOgG,EAAIhG,IACb,CAIA,IAHA,IAGSwlB,EAHLlK,EAAa9jB,EAAQ8jB,WAAWtb,GAEhCylB,EAAQzlB,EAAK4S,MAAM,OACR8S,EAAK,EAAGjtB,EAAIgtB,EAAM5oB,OAAS,EAAGpE,GAAK,EAAGA,IAEtC,OADb+sB,EAAOC,EAAMhtB,IAEXgtB,EAAM/B,OAAOjrB,EAAG,GACE,OAAT+sB,EACTE,IACSA,EAAK,IACD,KAATF,GAIFC,EAAM/B,OAAOjrB,EAAI,EAAGitB,GACpBA,EAAK,IAELD,EAAM/B,OAAOjrB,EAAG,GAChBitB,MAUN,MAJa,MAFb1lB,EAAOylB,EAAMhT,KAAK,QAGhBzS,EAAOsb,EAAa,IAAM,KAGxBtV,GACFA,EAAIhG,KAAOA,EACJqlB,EAAYrf,IAEdhG,CACT,CAmBA,SAASyS,EAAKkT,EAAOJ,GACL,KAAVI,IACFA,EAAQ,KAEI,KAAVJ,IACFA,EAAQ,KAEV,IAAIK,EAAW7F,EAASwF,GACpBM,EAAW9F,EAAS4F,GAMxB,GALIE,IACFF,EAAQE,EAAS7lB,MAAQ,KAIvB4lB,IAAaA,EAAS3F,OAIxB,OAHI4F,IACFD,EAAS3F,OAAS4F,EAAS5F,QAEtBoF,EAAYO,GAGrB,GAAIA,GAAYL,EAAM1W,MAAMoW,GAC1B,OAAOM,EAIT,GAAIM,IAAaA,EAASV,OAASU,EAAS7lB,KAE1C,OADA6lB,EAASV,KAAOI,EACTF,EAAYQ,GAGrB,IAAIC,EAA6B,MAApBP,EAAM3nB,OAAO,GACtB2nB,EACAlK,EAAUsK,EAAM/f,QAAQ,OAAQ,IAAM,IAAM2f,GAEhD,OAAIM,GACFA,EAAS7lB,KAAO8lB,EACTT,EAAYQ,IAEdC,CACT,CAxIAtuB,EAAQuoB,SAAWA,EAsBnBvoB,EAAQ6tB,YAAcA,EAwDtB7tB,EAAQ6jB,UAAYA,EA2DpB7jB,EAAQib,KAAOA,EAEfjb,EAAQ8jB,WAAa,SAAUiK,GAC7B,MAA2B,MAApBA,EAAM3nB,OAAO,IAAconB,EAAUhW,KAAKuW,EACnD,EAwCA/tB,EAAQ+jB,SAhCR,SAAkBoK,EAAOJ,GACT,KAAVI,IACFA,EAAQ,KAGVA,EAAQA,EAAM/f,QAAQ,MAAO,IAO7B,IADA,IAAImgB,EAAQ,EAC0B,IAA/BR,EAAM7T,QAAQiU,EAAQ,MAAY,CACvC,IAAInN,EAAQmN,EAAMK,YAAY,KAC9B,GAAIxN,EAAQ,EACV,OAAO+M,EAOT,IADAI,EAAQA,EAAM9nB,MAAM,EAAG2a,IACb3J,MAAM,qBACd,OAAO0W,IAGPQ,CACJ,CAGA,OAAOlT,MAAMkT,EAAQ,GAAGtT,KAAK,OAAS8S,EAAM/B,OAAOmC,EAAM9oB,OAAS,EACpE,EAGA,IAAIopB,IAEO,cADCruB,OAAO0B,OAAO,OAI1B,SAAS4sB,EAAUlsB,GACjB,OAAOA,CACT,CA6BA,SAASmsB,EAAcnsB,GACrB,IAAKA,EACH,OAAO,EAGT,IAAI6C,EAAS7C,EAAE6C,OAEf,GAAIA,EAAS,EACX,OAAO,EAGT,GAAiC,KAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,KAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,MAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,MAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,MAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,MAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,MAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,KAA7B7C,EAAEqd,WAAWxa,EAAS,IACO,KAA7B7C,EAAEqd,WAAWxa,EAAS,GACxB,OAAO,EAGT,IAAK,IAAIpE,EAAIoE,EAAS,GAAIpE,GAAK,EAAGA,IAChC,GAAwB,KAApBuB,EAAEqd,WAAW5e,GACf,OAAO,EAIX,OAAO,CACT,CA+EA,SAAS2tB,EAAOC,EAAOC,GACrB,OAAID,IAAUC,EACL,EAGK,OAAVD,EACK,EAGK,OAAVC,GACM,EAGND,EAAQC,EACH,GAGD,CACV,CA1IA9uB,EAAQye,YAAcgQ,EAAoBC,EAP1C,SAAqBnQ,GACnB,OAAIoQ,EAAcpQ,GACT,IAAMA,EAGRA,CACT,EAUAve,EAAQ+sB,cAAgB0B,EAAoBC,EAP5C,SAAuBnQ,GACrB,OAAIoQ,EAAcpQ,GACTA,EAAKlY,MAAM,GAGbkY,CACT,EAuEAve,EAAQmmB,2BA5BR,SAAoCzE,EAAUC,EAAUoN,GACtD,IAAInO,EAAMgO,EAAOlN,EAASrJ,OAAQsJ,EAAStJ,QAC3C,OAAY,IAARuI,GAKQ,KADZA,EAAMc,EAAS6C,aAAe5C,EAAS4C,eAM3B,KADZ3D,EAAMc,EAAS8C,eAAiB7C,EAAS6C,iBACxBuK,GAKL,KADZnO,EAAMc,EAASL,gBAAkBM,EAASN,kBAM9B,KADZT,EAAMc,EAASN,cAAgBO,EAASP,eAlB/BR,EAuBFgO,EAAOlN,EAASjc,KAAMkc,EAASlc,KACxC,EAwCAzF,EAAQynB,oCA5BR,SAA6C/F,EAAUC,EAAUqN,GAC/D,IAAIpO,EAAMc,EAASN,cAAgBO,EAASP,cAC5C,OAAY,IAARR,GAKQ,KADZA,EAAMc,EAASL,gBAAkBM,EAASN,kBACzB2N,GAKL,KADZpO,EAAMgO,EAAOlN,EAASrJ,OAAQsJ,EAAStJ,UAM3B,KADZuI,EAAMc,EAAS6C,aAAe5C,EAAS4C,eAM3B,KADZ3D,EAAMc,EAAS8C,eAAiB7C,EAAS6C,gBAlBhC5D,EAuBFgO,EAAOlN,EAASjc,KAAMkc,EAASlc,KACxC,EAuDAzF,EAAQgiB,oCA5BR,SAA6CN,EAAUC,GACrD,IAAIf,EAAMc,EAASN,cAAgBO,EAASP,cAC5C,OAAY,IAARR,GAKQ,KADZA,EAAMc,EAASL,gBAAkBM,EAASN,kBAM9B,KADZT,EAAMgO,EAAOlN,EAASrJ,OAAQsJ,EAAStJ,UAM3B,KADZuI,EAAMc,EAAS6C,aAAe5C,EAAS4C,eAM3B,KADZ3D,EAAMc,EAAS8C,eAAiB7C,EAAS6C,gBAlBhC5D,EAuBFgO,EAAOlN,EAASjc,KAAMkc,EAASlc,KACxC,EAWAzF,EAAQojB,oBAHR,SAA6B4D,GAC3B,OAAO3Y,KAAK2B,MAAMgX,EAAI5Y,QAAQ,iBAAkB,IAClD,EAsDApO,EAAQmkB,iBA/CR,SAA0BT,EAAYuL,EAAWC,GA8B/C,GA7BAD,EAAYA,GAAa,GAErBvL,IAEwC,MAAtCA,EAAWA,EAAWre,OAAS,IAA+B,MAAjB4pB,EAAU,KACzDvL,GAAc,KAOhBuL,EAAYvL,EAAauL,GAiBvBC,EAAc,CAChB,IAAIC,EAAS5G,EAAS2G,GACtB,IAAKC,EACH,MAAM,IAAIvrB,MAAM,oCAElB,GAAIurB,EAAO3mB,KAAM,CAEf,IAAIwY,EAAQmO,EAAO3mB,KAAKgmB,YAAY,KAChCxN,GAAS,IACXmO,EAAO3mB,KAAO2mB,EAAO3mB,KAAK4mB,UAAU,EAAGpO,EAAQ,GAEnD,CACAiO,EAAYhU,EAAK4S,EAAYsB,GAASF,EACxC,CAEA,OAAOpL,EAAUoL,EACnB,C,aCjeA,QACAjvB,EAAQ2V,kBAAoB,EAA5B,uBACA,M,sBCPA1V,EAAOD,QAAU0H,QAAQ,K,sBCAzBzH,EAAOD,QAAU0H,QAAQ,O,sBCAzBzH,EAAOD,QAAU0H,QAAQ,Q,sBCAzBzH,EAAOD,QAAU0H,QAAQ,O,GCCrB2nB,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBxjB,IAAjByjB,EACH,OAAOA,EAAaxvB,QAGrB,IAAIC,EAASovB,EAAyBE,GAAY,CACjDE,GAAIF,EACJG,QAAQ,EACR1vB,QAAS,CAAC,GAUX,OANA2vB,EAAoBJ,GAAUntB,KAAKnC,EAAOD,QAASC,EAAQA,EAAOD,QAASsvB,GAG3ErvB,EAAOyvB,QAAS,EAGTzvB,EAAOD,OACf,C,OCzBAsvB,EAAoBM,IAAO3vB,IAC1BA,EAAO4vB,MAAQ,GACV5vB,EAAOkrB,WAAUlrB,EAAOkrB,SAAW,IACjClrB,GCAkBqvB,EAAoB,I","sources":["webpack://GeotabApi/webpack/universalModuleDefinition","webpack://GeotabApi/./lib/ApiHelper.js","webpack://GeotabApi/./lib/GeotabApi.js","webpack://GeotabApi/./lib/HttpCall.js","webpack://GeotabApi/./lib/LocalStorageCredentialStore.js","webpack://GeotabApi/./lib/LocalStorageMock.js","webpack://GeotabApi/./lib/api.js","webpack://GeotabApi/./node_modules/buffer-from/index.js","webpack://GeotabApi/./node_modules/regenerator-runtime/runtime.js","webpack://GeotabApi/./node_modules/source-map-support/source-map-support.js","webpack://GeotabApi/./node_modules/source-map/lib/array-set.js","webpack://GeotabApi/./node_modules/source-map/lib/base64-vlq.js","webpack://GeotabApi/./node_modules/source-map/lib/base64.js","webpack://GeotabApi/./node_modules/source-map/lib/binary-search.js","webpack://GeotabApi/./node_modules/source-map/lib/mapping-list.js","webpack://GeotabApi/./node_modules/source-map/lib/quick-sort.js","webpack://GeotabApi/./node_modules/source-map/lib/source-map-consumer.js","webpack://GeotabApi/./node_modules/source-map/lib/source-map-generator.js","webpack://GeotabApi/./node_modules/source-map/lib/source-node.js","webpack://GeotabApi/./node_modules/source-map/lib/util.js","webpack://GeotabApi/./node_modules/source-map/source-map.js","webpack://GeotabApi/external node-commonjs \"fs\"","webpack://GeotabApi/external node-commonjs \"http\"","webpack://GeotabApi/external node-commonjs \"https\"","webpack://GeotabApi/external node-commonjs \"path\"","webpack://GeotabApi/webpack/bootstrap","webpack://GeotabApi/webpack/runtime/node module decorator","webpack://GeotabApi/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"GeotabApi\"] = factory();\n\telse\n\t\troot[\"GeotabApi\"] = factory();\n})(Object(typeof self !== \"undefined\" ? self : this), () => {\nreturn ","const LocalStorageCredentialStore = require('./LocalStorageCredentialStore.js').default;\nconst HttpCall = require('./HttpCall.js').default;\n\n/**\n * Helper method for GeotabApi.\n * Allows logic to remain somewhat encapsulated from the user\n */\nclass ApiHelper {\n\n constructor(authentication, options) {\n if (typeof authentication !== 'object') {\n throw new Error('authentication object not provided - must provide an authentication object to instantiate GeotabApi');\n }\n this.options = {\n fullResponse: typeof options.fullResponse === 'undefined' ? false : options.fullResponse,\n rememberMe: typeof options.rememberMe === 'undefined' ? true : options.rememberMe,\n timeout: typeof options.timeout === 'undefined' ? 180 : options.timeout,\n newCredentialStore: typeof options.newCredentialStore === 'undefined' ? false : options.newCredentialStore\n }\n this.credentialStore = this.createStore(options.newCredentialStore);\n if (authentication.credentials.sessionId) {\n // Throwing an error if path isn't provided when using sessionID\n if (typeof authentication.path === 'undefined') {\n throw new Error('Path not provided - Must provide server path if providing sessionId in authentication object');\n }\n if (this.options.rememberMe) {\n this.credentialStore.set(authentication.credentials, authentication.path);\n }\n }\n this.cred = authentication.credentials;\n this.server = authentication.path;\n }\n\n /**\n * Getters/Setters\n * Helps reduce code when calling from GeotabApi\n */\n get sessionId() {\n return this.cred.sessionId;\n }\n\n get database() {\n return this.cred.database;\n }\n\n get userName() {\n return this.cred.userName;\n }\n\n get password() {\n return this.cred.password;\n }\n\n get rememberMe() {\n return this.options.rememberMe;\n }\n\n get fullResponse() {\n return this.options.fullResponse;\n }\n\n /**\n * Creates the credentialStore. Either an object provided by the user,\n * created as a mock localStorage object (node) or a reference to\n * the actual localStorage (browser)\n * @param {object} newStore an Override credentialStore\n */\n createStore(newStore) {\n return newStore || new LocalStorageCredentialStore();\n }\n\n /**\n * checks the credentialStore for stored credentials\n * @returns false if no store, credentials object if there are credentials\n */\n getLocalCredentials() {\n let store = this.credentialStore.get();\n if (store) {\n if (store.server) {\n this.server = store.server;\n }\n return store.credentials;\n }\n return store;\n }\n\n /**\n * Sets the local credentials\n * @param {object} credentials credentials object using result of a promise\n */\n setLocalCredentials(credentials, server) {\n this.credentialStore.set(credentials, server);\n }\n\n clearLocalCredentials() {\n this.credentialStore.clear();\n }\n\n /**\n * Gets and stores authentication response using GeotabApi.authenticate()\n * @param {function} authenticate API authentication method - context binded to GeotabApi\n * @param {function} callbackError optional callback error for unsuccessful authentications\n * @param {boolean} rememberMe stores authentication once received\n */\n async getAuthentication(authenticate, rememberMe) {\n return authenticate().then(response => {\n // Response changes based on error handling.\n let data = response.data ? response.data.result : response;\n if (data.path !== 'ThisServer') {\n this.server = data.path;\n }\n // Successful authentication\n if (rememberMe) {\n this.setLocalCredentials(data.credentials, this.server);\n }\n this.cred.sessionId = data.credentials.sessionId;\n return data.credentials;\n });\n }\n\n /**\n * When the user doesn't have fullResposne enabled, we put some promises in front of the call\n * to return only data.result to the user\n * @param {Promise} call Http call\n */\n parseHttpResponse(call) {\n return call\n .then(response => {\n // Error handling has already taken errors out in either errorHandle() or HttpCall.send()\n if (response.data.result) {\n return response.data.result;\n }\n return response;\n });\n }\n\n /**\n * Error handling - only called if fullresponse isn't enabled, and if the user hasn't provided a callback\n * @param {Promise} call Http call\n * @param {function} callbackError Optional callback for unsuccessful calls\n */\n errorHandle(call, callbackError) {\n function dispatchError(message, errorDetails) {\n let error = new Error(message);\n if (callbackError) {\n callbackError(error.toString(), errorDetails || error);\n } else {\n throw error;\n }\n }\n // User hasn't asked for the full http object, so we should error check\n return call\n .then(response => {\n if (response.status && response.status !== 200) {\n dispatchError(`Response ${response.status} - ${response.statusText}`, null);\n }\n // node http/https returns a different response schema\n if (response.statusCode && response.statusCode !== 200) {\n dispatchError(`Response ${response.statusCode} - ${response.statusMessage}`, null);\n }\n return response;\n })\n .then(response => {\n if (response.data && response.data.error) {\n dispatchError(`${response.data.error.data.type}: ${response.data.error.message}`, response.data.error);\n }\n return response;\n });\n }\n\n /**\n * Creates a new HttpCall and returns it to the user. If the call fails,\n * and the call isn't an authentication, the call will attempt to\n * refresh the credentials\n *\n * @param {string} method method name for the API call\n * @param {Object} params method's parameters\n * @param {function} callbackSuccess Optional callback for successful calls\n * @param {function} callbackError Optional callback for unsuccessful calls\n * @param {function} authenticate authentication function. Context binded to GeotabApi\n * @param {boolean} rememberMe should store authentication results\n */\n async sendHttpCall(method, params, callbackSuccess, callbackError, authenticate, rememberMe) {\n let call = new HttpCall(method, this.server, params, callbackSuccess).send(this.options.timeout);\n // We don't want to continue retrying if we fail authentication\n if (method !== 'Authenticate') {\n call = call.then(async response => {\n let data = response.data;\n // Checking for a failed authentication\n if (data.error) {\n if (data.error.data.type === 'InvalidUserException') {\n // Doesn't hurt to clear even if we're not remembering/storing them\n this.clearLocalCredentials();\n // Assuming there was a session timeout, re-running authentication\n await this.getAuthentication(authenticate, rememberMe)\n .then(auth => {\n params.credentials = auth;\n });\n return new HttpCall(method, this.server, params, callbackSuccess).send(this.options.timeout);\n }\n }\n return response;\n })\n } else {\n call = call.then(response => {\n if (response.data.result) {\n let server = response.data.result.path === 'ThisServer' ? this.server : response.data.result.path;\n this.server = server;\n if (this.rememberMe) {\n this.setLocalCredentials(response.data.result.credentials, server);\n }\n }\n return response;\n });\n }\n return call;\n }\n}\n\nexports.default = ApiHelper;\n","const ApiHelper = require('./ApiHelper.js').default;\n\n/**\n * Entrypoint to API. Separate class is used to expose \"public\"\n * methods only to the user - Babel currently doesn't support\n * ES10 access modifiers\n */\nclass GeotabApi {\n\n /**\n * Constructor for GeotabApi\n *\n * @param {Object} authentication Holds credentials: {\n * userName: '',\n * password/sessionId: '',\n * database: ''\n * }\n* path: '',\n * @param {*} newOptions overrides default options\n */\n constructor(authentication, newOptions = {}) {\n this._helper = new ApiHelper(authentication, newOptions);\n // Because we send the authenticate method to the helper, we bind it's context here\n this.authenticate = this.authenticate.bind(this);\n }\n\n /**\n * Authenticates the user against the server. Gets the sessionId and other relevant session information\n *\n * @param {function} callbackSuccess optional callback for successful authentications\n * @param {function} callbackError optional callback for unsuccessful authentications\n * @returns {promise} Call promise - result will be either response.data.error or response.data.result\n */\n async authenticate(callbackSuccess, callbackError) {\n if (callbackSuccess && !callbackError) {\n throw new Error(`If callbackSuccess is supplied so must callbackError`);\n }\n // We will never authenticate with a sessionID. Authentication provides the sessionId\n let options = {\n database: this._helper.database,\n userName: this._helper.userName,\n password: this._helper.password\n }\n let result = this.callimpl('Authenticate', options, callbackSuccess, callbackError);\n\n if (!callbackSuccess && !callbackError) {\n return result;\n }\n\n }\n\n /**\n * Constructs an API call to MyGeotab\n *\n * @param {string} method method name for the API call\n * @param {Object} params method's parameters\n * @param {function} callbackSuccess Optional callback for successful calls\n * @param {function} callbackError Optional callback for unsuccessful calls\n * @returns {promise} an http/fetch promise which will resolve to either data.error or data.result\n */\n async call(method, params, callbackSuccess, callbackError) {\n if (callbackSuccess && !callbackError) {\n throw new Error(`If callbackSuccess is supplied so must callbackError`);\n }\n\n let result = this.callimpl(method, params, callbackSuccess, callbackError);\n\n if (!callbackSuccess && !callbackError) {\n return result;\n }\n }\n\n /**\n * Constructs an API call to MyGeotab\n *\n * @param {string} method method name for the API call\n * @param {Object} params method's parameters\n * @param {function} callbackSuccess Optional callback for successful calls\n * @param {function} callbackError Optional callback for unsuccessful calls\n * @returns {promise} an http/fetch promise which will resolve to either data.error or data.result\n */\n async callimpl(method, params, callbackSuccess, callbackError) {\n // Defining our credentials\n if (this._helper.sessionId) {\n params.credentials = {\n database: this._helper.database,\n sessionId: this._helper.sessionId,\n userName: this._helper.userName\n }\n } else if (this._helper.rememberMe && method !== 'Authenticate' && !this._helper.sessionId) {\n // Check store for credentials\n let storedCredentials = await this._helper.getLocalCredentials();\n if (storedCredentials) {\n params.credentials = storedCredentials;\n } else {\n // Send auth request if no store\n await this._helper.getAuthentication(this.authenticate, this._helper.rememberMe)\n .then(auth => {\n params.credentials = auth;\n });\n }\n // assign credentials with session ID from local storage\n } else if (method !== 'Authenticate' && !this._helper.rememberMe && !this._helper.sessionId) {\n // Needs primary authentication\n await this._helper.getAuthentication(this.authenticate, this._helper.rememberMe)\n .then(auth => {\n params.credentials = auth;\n });\n }\n // Creating the actual call\n let call = this._helper.sendHttpCall(method, params, callbackSuccess, callbackError, this.authenticate, this._helper.rememberMe);\n // Seeing if the user wants the full response object, or default error handling\n if (!this._helper.fullResponse) {\n call = this._helper.errorHandle(call, callbackError);\n call = this._helper.parseHttpResponse(call);\n }\n // Returning call to user\n return call;\n }\n\n /**\n * Constructs a multicall to myGeotab\n *\n * @param {array} calls array of calls to be included in the multicall\n * @param {function} callbackSuccess optional callback function for successful multicalls\n * @param {function} callbackError optional callback function for unsuccessful multicalls\n * @returns {promise} returns call promise\n */\n async multiCall(calls, callbackSuccess, callbackError) {\n if (callbackSuccess && !callbackError) {\n throw new Error(`If callbackSuccess is supplied so must callbackError`);\n }\n let formattedCalls = calls.map(call => {\n let params = call[1];\n return {\n method: call[0],\n params: params\n }\n });\n\n\n let result = this.callimpl('ExecuteMultiCall', {\n calls: formattedCalls\n }, callbackSuccess, callbackError);\n\n if (!callbackSuccess && !callbackError) {\n return result;\n }\n }\n\n /**\n * Gets a stored or new session\n * @param {function} callbackSuccess optional callback for successes\n * @param {boolean} newSession override any stored credentials and fetch a new session\n * @returns {promise} returns call promise\n */\n async getSession(callbackSuccess, newSession) {\n let cred = await this._helper.getLocalCredentials();\n let response;\n if (!newSession && this._helper.rememberMe) {\n // If we have a stored session\n if (cred) {\n response = this._helper.fullResponse ? { data: { result: { credentials: cred, path: this._helper.server } } } : { credentials: cred, path: this._helper.server };\n if (callbackSuccess) {\n // New behavior -> Just returning the result\n if (callbackSuccess.length === 1) {\n callbackSuccess(response);\n } else if (callbackSuccess.length === 2) {\n // Legacy behavior -> Return path and credentials\n callbackSuccess(cred.credentials, this._helper.server);\n }\n return;\n } else {\n return response;\n }\n } else {\n return this.authenticate(callbackSuccess);\n }\n // Grabbing new credentials\n } else {\n cred = this.authenticate();\n if (callbackSuccess) {\n cred = await cred.then(response => this._helper.fullResponse ? response.data.result.credentials : response);\n response = this._helper.fullResponse ? { data: { result: { credentials: cred, path: this._helper.server } } } : { credentials: cred.credentials, path: this._helper.server };\n if (callbackSuccess.length === 1) {\n callbackSuccess(response);\n } else if (callbackSuccess.length === 2) {\n // Legacy getSession asks for credentials and server\n callbackSuccess(cred.credentials, this._helper.server);\n }\n } else {\n return cred;\n }\n }\n }\n\n /**\n * Forgets the session in local storage\n * Resets session with already provided credentials\n */\n async forget() {\n this._helper.clearLocalCredentials();\n return this.authenticate();\n }\n}\n\nexports.default = GeotabApi;\n","const http = typeof window === 'undefined' ? require('http') : null;\nconst https = typeof window === 'undefined' ? require('https') : null;\n\nclass HttpCall {\n\n constructor(method, server, params, callbackSuccess) {\n this.config = {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n this.callbackSuccess = callbackSuccess;\n this.server = server;\n this.body = {\n method: method || '',\n params: params\n };\n }\n\n getCallUrl() {\n let server = this.server || 'my.geotab.com';\n let thisServer = server.replace(/\\S*:\\/\\//, '').replace(/\\/$/, '');\n return 'https://' + thisServer + '/apiv1/';\n }\n\n encode(data) {\n let stringBody = JSON.stringify({\n method: data.method || '',\n params: data.params\n })\n return stringBody;\n }\n\n /**\n * Sends http/fetch request depending on environment.\n * @param {int} timeout amount in milliseconds for timeout.\n * options.timeout * 1000 is a good start\n * Defaults to no timeout (0)\n * @returns {Promise} http/fetch response object wrapped in a promise\n */\n async send(timeout) {\n const url = this.getCallUrl();\n const body = this.encode(this.body);\n const headers = this.config.headers;\n\n if (typeof window !== 'undefined' && window.fetch) {\n // Web environment (using fetch)\n let fetchTimeout;\n const fetchPromise = fetch(url, {\n method: 'POST',\n headers: headers,\n body: body\n });\n\n const timeoutPromise = new Promise((_, reject) => {\n fetchTimeout = setTimeout(() => reject(new Error('Request timed out')), timeout * 1000);\n });\n\n return Promise.race([fetchPromise, timeoutPromise])\n .then(async response => {\n clearTimeout(fetchTimeout);\n const data = await response.json();\n response.data = data;\n if (this.callbackSuccess && !data.error) {\n this.callbackSuccess(data.result);\n }\n return response;\n })\n .catch(error => {\n return Promise.reject(error);\n });\n\n } else {\n // Node.js environment (using http/https)\n const urlObj = new URL(url);\n const options = {\n hostname: urlObj.hostname,\n path: urlObj.pathname,\n method: 'POST',\n headers: headers,\n timeout: timeout * 1000\n };\n\n return new Promise((resolve, reject) => {\n const req = (urlObj.protocol === 'https:' ? https : http).request(options, res => {\n let data = '';\n res.on('data', chunk => data += chunk);\n res.on('end', () => {\n try {\n const parsedData = JSON.parse(data);\n res.data = parsedData; // Attach parsed response body to the response object.\n if (this.callbackSuccess && !parsedData.error) {\n this.callbackSuccess(parsedData.result);\n }\n resolve(res);\n } catch (error) {\n reject(error);\n }\n });\n });\n\n req.on('error', reject);\n req.on('timeout', () => {\n req.destroy();\n reject(new Error('Request timed out'));\n });\n\n req.write(body);\n req.end();\n });\n }\n }\n}\n\nexports.default = HttpCall;\n","const LocalStorageMock = require('./LocalStorageMock').default;\n\n/**\n * Object to interact with the localStorage for stored credentials.\n * Can interact with localStorage (browser) or LocalStorageMock (node) \n */\nclass LocalStorageCredentialStore {\n constructor(){\n this.credentials_key = 'geotabAPI_credentials';\n this.server_key = 'geotabAPI_server';\n\n if (typeof localStorage === 'undefined' || localStorage === null || typeof localStorage.getItem !== 'function') {\n // Mocking local storage for nodeJS implementation. \n this.localStorage = new LocalStorageMock();\n } else {\n this.localStorage = localStorage;\n }\n }\n\n get() {\n let storedCredentials = this.localStorage.getItem(this.credentials_key);\n let storedServer = this.localStorage.getItem(this.server_key) || 'my.geotab.com';\n let thisCredentials = false;\n\n if (storedCredentials && storedServer) {\n try {\n thisCredentials = {\n credentials: JSON.parse(storedCredentials),\n server: storedServer\n }\n } catch (e) {\n console.log('error', e);\n // Malformed JSON\n return false;\n }\n }\n return thisCredentials;\n }\n\n set(credentials, server) {\n if(credentials){\n this.localStorage.setItem(this.credentials_key, JSON.stringify(credentials));\n }\n if(server){\n this.localStorage.setItem(this.server_key, server);\n }\n }\n\n clear() {\n this.localStorage.removeItem(this.credentials_key);\n this.localStorage.removeItem(this.server_key);\n }\n}\n\nexports.default = LocalStorageCredentialStore;","/**\n * A local storage mock to be used with node. Intended to \n * be an easy solution to re-working the existing localstorage system\n * and maintaining legacy support.\n * \n * Nodejs has several libraries that create it's own localStorage \n * functionality, but all of these seem to rely on node's filesystem\n * library (fs) to make things work. This turns out to be a significant\n * issue because webpack can't compile the fs library:\n * - No comparable function in the browser\n * - Not supported by their (now depreciated) core module mocks\n * https://www.npmjs.com/package/node-libs-browser\n * \n * Using the localstorage libraries in the api will work provided the\n * end user is also using webpack, and adds\n * \n * node: {\n * fs: 'empty'\n * }\n * \n * to their config file, but that would break legacy support as\n * most legacy api addins will likely use gulp\n */\nclass LocalStorageMock {\n constructor(){\n this._state = {};\n }\n\n getItem(key){\n return this._state[key];\n }\n\n setItem(key, value){\n this._state[key] = value;\n }\n\n removeItem(key){\n delete this._state[key];\n }\n\n clear(){\n this._state = {};\n }\n}\n\nexports.default = LocalStorageMock;","/*! mg-api-js - v3.0.2\n * Release on: 2026-04-13\n * Copyright (c) 2020 Geotab Inc\n * Licensed MIT */\n// UMD Declaration\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module unless amdModuleId is set\n define([], function () {\n return (root['GeotabApi'] = factory());\n });\n } else if (typeof module === 'object' && module.exports) {\n // Node does not work with strict CommonJS, but\n // only CommonJS-like environments that support module.exports,\n // like Node.\n module.exports = factory();\n } else {\n root['GeotabApi'] = factory();\n }\n}(this, function () {\n // Sourcemap node support causes browser issues. Checks for browser global before requiring\n if(typeof window !== 'object'){\n require('source-map-support').install();\n }\n // Allowing async for ie10/11 - webpack requirement\n const regeneratorRuntime = require('regenerator-runtime'); \n const GeotabApi = require('./GeotabApi.js').default;\n /**\n * ** NOTE ** This version (uncompiled with webpack) of the API will not work on browsers.\n * This will fail due to the node module dependancies not being shaken/added to the \n * output file\n */\n // Exposing the object - acts like a constructor for browser implementations\n return GeotabApi;\n}));","/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n typeof Buffer !== 'undefined' &&\n typeof Buffer.alloc === 'function' &&\n typeof Buffer.allocUnsafe === 'function' &&\n typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n byteOffset >>>= 0\n\n var maxLength = obj.byteLength - byteOffset\n\n if (maxLength < 0) {\n throw new RangeError(\"'offset' is out of bounds\")\n }\n\n if (length === undefined) {\n length = maxLength\n } else {\n length >>>= 0\n\n if (length > maxLength) {\n throw new RangeError(\"'length' is out of bounds\")\n }\n }\n\n return isModern\n ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n return isModern\n ? Buffer.from(string, encoding)\n : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (isArrayBuffer(value)) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n return isModern\n ? Buffer.from(value)\n : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next mehtod, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","var SourceMapConsumer = require('source-map').SourceMapConsumer;\nvar path = require('path');\n\nvar fs;\ntry {\n fs = require('fs');\n if (!fs.existsSync || !fs.readFileSync) {\n // fs doesn't have all methods we need\n fs = null;\n }\n} catch (err) {\n /* nop */\n}\n\nvar bufferFrom = require('buffer-from');\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param {NodeModule} mod\n * @param {string} request\n */\nfunction dynamicRequire(mod, request) {\n return mod.require(request);\n}\n\n// Only install once if called multiple times\nvar errorFormatterInstalled = false;\nvar uncaughtShimInstalled = false;\n\n// If true, the caches are reset before a stack trace formatting operation\nvar emptyCacheBetweenOperations = false;\n\n// Supports {browser, node, auto}\nvar environment = \"auto\";\n\n// Maps a file path to a string containing the file contents\nvar fileContentsCache = {};\n\n// Maps a file path to a source map for that file\nvar sourceMapCache = {};\n\n// Regex for detecting source maps\nvar reSourceMap = /^data:application\\/json[^,]+base64,/;\n\n// Priority list of retrieve handlers\nvar retrieveFileHandlers = [];\nvar retrieveMapHandlers = [];\n\nfunction isInBrowser() {\n if (environment === \"browser\")\n return true;\n if (environment === \"node\")\n return false;\n return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function') && !(window.require && window.module && window.process && window.process.type === \"renderer\"));\n}\n\nfunction hasGlobalProcessEventEmitter() {\n return ((typeof process === 'object') && (process !== null) && (typeof process.on === 'function'));\n}\n\nfunction globalProcessVersion() {\n if ((typeof process === 'object') && (process !== null)) {\n return process.version;\n } else {\n return '';\n }\n}\n\nfunction globalProcessStderr() {\n if ((typeof process === 'object') && (process !== null)) {\n return process.stderr;\n }\n}\n\nfunction globalProcessExit(code) {\n if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) {\n return process.exit(code);\n }\n}\n\nfunction handlerExec(list) {\n return function(arg) {\n for (var i = 0; i < list.length; i++) {\n var ret = list[i](arg);\n if (ret) {\n return ret;\n }\n }\n return null;\n };\n}\n\nvar retrieveFile = handlerExec(retrieveFileHandlers);\n\nretrieveFileHandlers.push(function(path) {\n // Trim the path to make sure there is no extra whitespace.\n path = path.trim();\n if (/^file:/.test(path)) {\n // existsSync/readFileSync can't handle file protocol, but once stripped, it works\n path = path.replace(/file:\\/\\/\\/(\\w:)?/, function(protocol, drive) {\n return drive ?\n '' : // file:///C:/dir/file -> C:/dir/file\n '/'; // file:///root-dir/file -> /root-dir/file\n });\n }\n if (path in fileContentsCache) {\n return fileContentsCache[path];\n }\n\n var contents = '';\n try {\n if (!fs) {\n // Use SJAX if we are in the browser\n var xhr = new XMLHttpRequest();\n xhr.open('GET', path, /** async */ false);\n xhr.send(null);\n if (xhr.readyState === 4 && xhr.status === 200) {\n contents = xhr.responseText;\n }\n } else if (fs.existsSync(path)) {\n // Otherwise, use the filesystem\n contents = fs.readFileSync(path, 'utf8');\n }\n } catch (er) {\n /* ignore any errors */\n }\n\n return fileContentsCache[path] = contents;\n});\n\n// Support URLs relative to a directory, but be careful about a protocol prefix\n// in case we are in the browser (i.e. directories may start with \"http://\" or \"file:///\")\nfunction supportRelativeURL(file, url) {\n if (!file) return url;\n var dir = path.dirname(file);\n var match = /^\\w+:\\/\\/[^\\/]*/.exec(dir);\n var protocol = match ? match[0] : '';\n var startPath = dir.slice(protocol.length);\n if (protocol && /^\\/\\w\\:/.test(startPath)) {\n // handle file:///C:/ paths\n protocol += '/';\n return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\\\/g, '/');\n }\n return protocol + path.resolve(dir.slice(protocol.length), url);\n}\n\nfunction retrieveSourceMapURL(source) {\n var fileData;\n\n if (isInBrowser()) {\n try {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', source, false);\n xhr.send(null);\n fileData = xhr.readyState === 4 ? xhr.responseText : null;\n\n // Support providing a sourceMappingURL via the SourceMap header\n var sourceMapHeader = xhr.getResponseHeader(\"SourceMap\") ||\n xhr.getResponseHeader(\"X-SourceMap\");\n if (sourceMapHeader) {\n return sourceMapHeader;\n }\n } catch (e) {\n }\n }\n\n // Get the URL of the source map\n fileData = retrieveFile(source);\n var re = /(?:\\/\\/[@#][\\s]*sourceMappingURL=([^\\s'\"]+)[\\s]*$)|(?:\\/\\*[@#][\\s]*sourceMappingURL=([^\\s*'\"]+)[\\s]*(?:\\*\\/)[\\s]*$)/mg;\n // Keep executing the search to find the *last* sourceMappingURL to avoid\n // picking up sourceMappingURLs from comments, strings, etc.\n var lastMatch, match;\n while (match = re.exec(fileData)) lastMatch = match;\n if (!lastMatch) return null;\n return lastMatch[1];\n};\n\n// Can be overridden by the retrieveSourceMap option to install. Takes a\n// generated source filename; returns a {map, optional url} object, or null if\n// there is no source map. The map field may be either a string or the parsed\n// JSON object (ie, it must be a valid argument to the SourceMapConsumer\n// constructor).\nvar retrieveSourceMap = handlerExec(retrieveMapHandlers);\nretrieveMapHandlers.push(function(source) {\n var sourceMappingURL = retrieveSourceMapURL(source);\n if (!sourceMappingURL) return null;\n\n // Read the contents of the source map\n var sourceMapData;\n if (reSourceMap.test(sourceMappingURL)) {\n // Support source map URL as a data url\n var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1);\n sourceMapData = bufferFrom(rawData, \"base64\").toString();\n sourceMappingURL = source;\n } else {\n // Support source map URLs relative to the source URL\n sourceMappingURL = supportRelativeURL(source, sourceMappingURL);\n sourceMapData = retrieveFile(sourceMappingURL);\n }\n\n if (!sourceMapData) {\n return null;\n }\n\n return {\n url: sourceMappingURL,\n map: sourceMapData\n };\n});\n\nfunction mapSourcePosition(position) {\n var sourceMap = sourceMapCache[position.source];\n if (!sourceMap) {\n // Call the (overrideable) retrieveSourceMap function to get the source map.\n var urlAndMap = retrieveSourceMap(position.source);\n if (urlAndMap) {\n sourceMap = sourceMapCache[position.source] = {\n url: urlAndMap.url,\n map: new SourceMapConsumer(urlAndMap.map)\n };\n\n // Load all sources stored inline with the source map into the file cache\n // to pretend like they are already loaded. They may not exist on disk.\n if (sourceMap.map.sourcesContent) {\n sourceMap.map.sources.forEach(function(source, i) {\n var contents = sourceMap.map.sourcesContent[i];\n if (contents) {\n var url = supportRelativeURL(sourceMap.url, source);\n fileContentsCache[url] = contents;\n }\n });\n }\n } else {\n sourceMap = sourceMapCache[position.source] = {\n url: null,\n map: null\n };\n }\n }\n\n // Resolve the source URL relative to the URL of the source map\n if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === 'function') {\n var originalPosition = sourceMap.map.originalPositionFor(position);\n\n // Only return the original position if a matching line was found. If no\n // matching line is found then we return position instead, which will cause\n // the stack trace to print the path and line for the compiled file. It is\n // better to give a precise location in the compiled file than a vague\n // location in the original file.\n if (originalPosition.source !== null) {\n originalPosition.source = supportRelativeURL(\n sourceMap.url, originalPosition.source);\n return originalPosition;\n }\n }\n\n return position;\n}\n\n// Parses code generated by FormatEvalOrigin(), a function inside V8:\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js\nfunction mapEvalOrigin(origin) {\n // Most eval() calls are in this format\n var match = /^eval at ([^(]+) \\((.+):(\\d+):(\\d+)\\)$/.exec(origin);\n if (match) {\n var position = mapSourcePosition({\n source: match[2],\n line: +match[3],\n column: match[4] - 1\n });\n return 'eval at ' + match[1] + ' (' + position.source + ':' +\n position.line + ':' + (position.column + 1) + ')';\n }\n\n // Parse nested eval() calls using recursion\n match = /^eval at ([^(]+) \\((.+)\\)$/.exec(origin);\n if (match) {\n return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')';\n }\n\n // Make sure we still return useful information if we didn't find anything\n return origin;\n}\n\n// This is copied almost verbatim from the V8 source code at\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The\n// implementation of wrapCallSite() used to just forward to the actual source\n// code of CallSite.prototype.toString but unfortunately a new release of V8\n// did something to the prototype chain and broke the shim. The only fix I\n// could find was copy/paste.\nfunction CallSiteToString() {\n var fileName;\n var fileLocation = \"\";\n if (this.isNative()) {\n fileLocation = \"native\";\n } else {\n fileName = this.getScriptNameOrSourceURL();\n if (!fileName && this.isEval()) {\n fileLocation = this.getEvalOrigin();\n fileLocation += \", \"; // Expecting source position to follow.\n }\n\n if (fileName) {\n fileLocation += fileName;\n } else {\n // Source code does not originate from a file and is not native, but we\n // can still get the source position inside the source string, e.g. in\n // an eval string.\n fileLocation += \"\";\n }\n var lineNumber = this.getLineNumber();\n if (lineNumber != null) {\n fileLocation += \":\" + lineNumber;\n var columnNumber = this.getColumnNumber();\n if (columnNumber) {\n fileLocation += \":\" + columnNumber;\n }\n }\n }\n\n var line = \"\";\n var functionName = this.getFunctionName();\n var addSuffix = true;\n var isConstructor = this.isConstructor();\n var isMethodCall = !(this.isToplevel() || isConstructor);\n if (isMethodCall) {\n var typeName = this.getTypeName();\n // Fixes shim to be backward compatable with Node v0 to v4\n if (typeName === \"[object Object]\") {\n typeName = \"null\";\n }\n var methodName = this.getMethodName();\n if (functionName) {\n if (typeName && functionName.indexOf(typeName) != 0) {\n line += typeName + \".\";\n }\n line += functionName;\n if (methodName && functionName.indexOf(\".\" + methodName) != functionName.length - methodName.length - 1) {\n line += \" [as \" + methodName + \"]\";\n }\n } else {\n line += typeName + \".\" + (methodName || \"\");\n }\n } else if (isConstructor) {\n line += \"new \" + (functionName || \"\");\n } else if (functionName) {\n line += functionName;\n } else {\n line += fileLocation;\n addSuffix = false;\n }\n if (addSuffix) {\n line += \" (\" + fileLocation + \")\";\n }\n return line;\n}\n\nfunction cloneCallSite(frame) {\n var object = {};\n Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) {\n object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name];\n });\n object.toString = CallSiteToString;\n return object;\n}\n\nfunction wrapCallSite(frame, state) {\n // provides interface backward compatibility\n if (state === undefined) {\n state = { nextPosition: null, curPosition: null }\n }\n if(frame.isNative()) {\n state.curPosition = null;\n return frame;\n }\n\n // Most call sites will return the source file from getFileName(), but code\n // passed to eval() ending in \"//# sourceURL=...\" will return the source file\n // from getScriptNameOrSourceURL() instead\n var source = frame.getFileName() || frame.getScriptNameOrSourceURL();\n if (source) {\n var line = frame.getLineNumber();\n var column = frame.getColumnNumber() - 1;\n\n // Fix position in Node where some (internal) code is prepended.\n // See https://github.com/evanw/node-source-map-support/issues/36\n // Header removed in node at ^10.16 || >=11.11.0\n // v11 is not an LTS candidate, we can just test the one version with it.\n // Test node versions for: 10.16-19, 10.20+, 12-19, 20-99, 100+, or 11.11\n var noHeader = /^v(10\\.1[6-9]|10\\.[2-9][0-9]|10\\.[0-9]{3,}|1[2-9]\\d*|[2-9]\\d|\\d{3,}|11\\.11)/;\n var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62;\n if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) {\n column -= headerLength;\n }\n\n var position = mapSourcePosition({\n source: source,\n line: line,\n column: column\n });\n state.curPosition = position;\n frame = cloneCallSite(frame);\n var originalFunctionName = frame.getFunctionName;\n frame.getFunctionName = function() {\n if (state.nextPosition == null) {\n return originalFunctionName();\n }\n return state.nextPosition.name || originalFunctionName();\n };\n frame.getFileName = function() { return position.source; };\n frame.getLineNumber = function() { return position.line; };\n frame.getColumnNumber = function() { return position.column + 1; };\n frame.getScriptNameOrSourceURL = function() { return position.source; };\n return frame;\n }\n\n // Code called using eval() needs special handling\n var origin = frame.isEval() && frame.getEvalOrigin();\n if (origin) {\n origin = mapEvalOrigin(origin);\n frame = cloneCallSite(frame);\n frame.getEvalOrigin = function() { return origin; };\n return frame;\n }\n\n // If we get here then we were unable to change the source position\n return frame;\n}\n\n// This function is part of the V8 stack trace API, for more info see:\n// https://v8.dev/docs/stack-trace-api\nfunction prepareStackTrace(error, stack) {\n if (emptyCacheBetweenOperations) {\n fileContentsCache = {};\n sourceMapCache = {};\n }\n\n var name = error.name || 'Error';\n var message = error.message || '';\n var errorString = name + \": \" + message;\n\n var state = { nextPosition: null, curPosition: null };\n var processedStack = [];\n for (var i = stack.length - 1; i >= 0; i--) {\n processedStack.push('\\n at ' + wrapCallSite(stack[i], state));\n state.nextPosition = state.curPosition;\n }\n state.curPosition = state.nextPosition = null;\n return errorString + processedStack.reverse().join('');\n}\n\n// Generate position and snippet of original source with pointer\nfunction getErrorSource(error) {\n var match = /\\n at [^(]+ \\((.*):(\\d+):(\\d+)\\)/.exec(error.stack);\n if (match) {\n var source = match[1];\n var line = +match[2];\n var column = +match[3];\n\n // Support the inline sourceContents inside the source map\n var contents = fileContentsCache[source];\n\n // Support files on disk\n if (!contents && fs && fs.existsSync(source)) {\n try {\n contents = fs.readFileSync(source, 'utf8');\n } catch (er) {\n contents = '';\n }\n }\n\n // Format the line from the original source code like node does\n if (contents) {\n var code = contents.split(/(?:\\r\\n|\\r|\\n)/)[line - 1];\n if (code) {\n return source + ':' + line + '\\n' + code + '\\n' +\n new Array(column).join(' ') + '^';\n }\n }\n }\n return null;\n}\n\nfunction printErrorAndExit (error) {\n var source = getErrorSource(error);\n\n // Ensure error is printed synchronously and not truncated\n var stderr = globalProcessStderr();\n if (stderr && stderr._handle && stderr._handle.setBlocking) {\n stderr._handle.setBlocking(true);\n }\n\n if (source) {\n console.error();\n console.error(source);\n }\n\n console.error(error.stack);\n globalProcessExit(1);\n}\n\nfunction shimEmitUncaughtException () {\n var origEmit = process.emit;\n\n process.emit = function (type) {\n if (type === 'uncaughtException') {\n var hasStack = (arguments[1] && arguments[1].stack);\n var hasListeners = (this.listeners(type).length > 0);\n\n if (hasStack && !hasListeners) {\n return printErrorAndExit(arguments[1]);\n }\n }\n\n return origEmit.apply(this, arguments);\n };\n}\n\nvar originalRetrieveFileHandlers = retrieveFileHandlers.slice(0);\nvar originalRetrieveMapHandlers = retrieveMapHandlers.slice(0);\n\nexports.wrapCallSite = wrapCallSite;\nexports.getErrorSource = getErrorSource;\nexports.mapSourcePosition = mapSourcePosition;\nexports.retrieveSourceMap = retrieveSourceMap;\n\nexports.install = function(options) {\n options = options || {};\n\n if (options.environment) {\n environment = options.environment;\n if ([\"node\", \"browser\", \"auto\"].indexOf(environment) === -1) {\n throw new Error(\"environment \" + environment + \" was unknown. Available options are {auto, browser, node}\")\n }\n }\n\n // Allow sources to be found by methods other than reading the files\n // directly from disk.\n if (options.retrieveFile) {\n if (options.overrideRetrieveFile) {\n retrieveFileHandlers.length = 0;\n }\n\n retrieveFileHandlers.unshift(options.retrieveFile);\n }\n\n // Allow source maps to be found by methods other than reading the files\n // directly from disk.\n if (options.retrieveSourceMap) {\n if (options.overrideRetrieveSourceMap) {\n retrieveMapHandlers.length = 0;\n }\n\n retrieveMapHandlers.unshift(options.retrieveSourceMap);\n }\n\n // Support runtime transpilers that include inline source maps\n if (options.hookRequire && !isInBrowser()) {\n // Use dynamicRequire to avoid including in browser bundles\n var Module = dynamicRequire(module, 'module');\n var $compile = Module.prototype._compile;\n\n if (!$compile.__sourceMapSupport) {\n Module.prototype._compile = function(content, filename) {\n fileContentsCache[filename] = content;\n sourceMapCache[filename] = undefined;\n return $compile.call(this, content, filename);\n };\n\n Module.prototype._compile.__sourceMapSupport = true;\n }\n }\n\n // Configure options\n if (!emptyCacheBetweenOperations) {\n emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ?\n options.emptyCacheBetweenOperations : false;\n }\n\n // Install the error reformatter\n if (!errorFormatterInstalled) {\n errorFormatterInstalled = true;\n Error.prepareStackTrace = prepareStackTrace;\n }\n\n if (!uncaughtShimInstalled) {\n var installHandler = 'handleUncaughtExceptions' in options ?\n options.handleUncaughtExceptions : true;\n\n // Do not override 'uncaughtException' with our own handler in Node.js\n // Worker threads. Workers pass the error to the main thread as an event,\n // rather than printing something to stderr and exiting.\n try {\n // We need to use `dynamicRequire` because `require` on it's own will be optimized by WebPack/Browserify.\n var worker_threads = dynamicRequire(module, 'worker_threads');\n if (worker_threads.isMainThread === false) {\n installHandler = false;\n }\n } catch(e) {}\n\n // Provide the option to not install the uncaught exception handler. This is\n // to support other uncaught exception handlers (in test frameworks, for\n // example). If this handler is not installed and there are no other uncaught\n // exception handlers, uncaught exceptions will be caught by node's built-in\n // exception handler and the process will still be terminated. However, the\n // generated JavaScript code will be shown above the stack trace instead of\n // the original source code.\n if (installHandler && hasGlobalProcessEventEmitter()) {\n uncaughtShimInstalled = true;\n shimEmitUncaughtException();\n }\n }\n};\n\nexports.resetRetrieveHandlers = function() {\n retrieveFileHandlers.length = 0;\n retrieveMapHandlers.length = 0;\n\n retrieveFileHandlers = originalRetrieveFileHandlers.slice(0);\n retrieveMapHandlers = originalRetrieveMapHandlers.slice(0);\n\n retrieveSourceMap = handlerExec(retrieveMapHandlers);\n retrieveFile = handlerExec(retrieveFileHandlers);\n}\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n this._array = [];\n this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n if (hasNativeMap) {\n this._set.set(aStr, idx);\n } else {\n this._set[sStr] = idx;\n }\n }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n if (hasNativeMap) {\n return this._set.has(aStr);\n } else {\n var sStr = util.toSetString(aStr);\n return has.call(this._set, sStr);\n }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n if (hasNativeMap) {\n var idx = this._set.get(aStr);\n if (idx >= 0) {\n return idx;\n }\n } else {\n var sStr = util.toSetString(aStr);\n if (has.call(this._set, sStr)) {\n return this._set[sStr];\n }\n }\n\n throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n// Continuation\n// | Sign\n// | |\n// V V\n// 101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\nfunction swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n// {\n// generatedLine: The line number in the generated code,\n// generatedColumn: The column number in the generated code,\n// source: The path to the original source file that generated this\n// chunk of code,\n// originalLine: The line number in the original source that\n// corresponds to this chunk of generated code,\n// originalColumn: The column number in the original source that\n// corresponds to this chunk of generated code,\n// name: The name of the original symbol which generated this chunk of\n// code.\n// }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n configurable: true,\n enumerable: true,\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number is 1-based.\n * - column: Optional. the column number in the original source.\n * The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n needle.source = this._findSourceIndex(needle.source);\n if (needle.source < 0) {\n return [];\n }\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n if (sourceRoot) {\n sourceRoot = util.normalize(sourceRoot);\n }\n\n sources = sources\n .map(String)\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names.map(String), true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this._absoluteSources = this._sources.toArray().map(function (s) {\n return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n });\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this._sourceMapURL = aSourceMapURL;\n this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source. Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n if (this._sources.has(relativeSource)) {\n return this._sources.indexOf(relativeSource);\n }\n\n // Maybe aSource is an absolute URL as returned by |sources|. In\n // this case we can't simply undo the transform.\n var i;\n for (i = 0; i < this._absoluteSources.length; ++i) {\n if (this._absoluteSources[i] == aSource) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @param String aSourceMapURL\n * The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n smc._sourceMapURL = aSourceMapURL;\n smc._absoluteSources = smc._sources.toArray().map(function (s) {\n return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n });\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._absoluteSources.slice();\n }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n var index = this._findSourceIndex(aSource);\n if (index >= 0) {\n return this.sourcesContent[index];\n }\n\n var relativeSource = aSource;\n if (this.sourceRoot != null) {\n relativeSource = util.relative(this.sourceRoot, relativeSource);\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + relativeSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based.\n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n source = this._findSourceIndex(source);\n if (source < 0) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found. This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = util.parseSourceMapInput(aSourceMap);\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n }\n });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source. The line number\n * is 1-based.\n * - column: The column number in the generated source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null. The\n * line number is 1-based.\n * - column: The column number in the original source, or null. The\n * column number is 0-based.\n * - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source. The line number\n * is 1-based.\n * - column: The column number in the original source. The column\n * number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null. The\n * line number is 1-based. \n * - column: The column number in the generated source, or null.\n * The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = null;\n if (mapping.name) {\n name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n }\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var sourceRelative = sourceFile;\n if (sourceRoot !== null) {\n sourceRelative = util.relative(sourceRoot, sourceFile);\n }\n\n if (!generator._sources.has(sourceRelative)) {\n generator._sources.add(sourceRelative);\n }\n\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null) {\n source = String(source);\n if (!this._sources.has(source)) {\n this._sources.add(source);\n }\n }\n\n if (name != null) {\n name = String(name);\n if (!this._names.has(name)) {\n this._names.add(name);\n }\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = Object.create(null);\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n // When aOriginal is truthy but has empty values for .line and .column,\n // it is most likely a programmer error. In this case we throw a very\n // specific error message to try to guide them the right way.\n // For example: https://github.com/Polymer/polymer-bundler/pull/519\n if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n throw new Error(\n 'original.line and original.column are not numbers -- you probably meant to omit ' +\n 'the original mapping entirely and only map the generated position. If so, pass ' +\n 'null for the original mapping instead of an object with empty or null values.'\n );\n }\n\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var next;\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n next = ''\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n next += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n next += ',';\n }\n }\n\n next += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n next += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n next += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n next += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n next += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n\n result += next;\n }\n\n return result;\n };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are accessed by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var remainingLinesIndex = 0;\n var shiftNextLine = function() {\n var lineContents = getNextLine();\n // The last line of a file might not have a newline.\n var newLine = getNextLine() || \"\";\n return lineContents + newLine;\n\n function getNextLine() {\n return remainingLinesIndex < remainingLines.length ?\n remainingLines[remainingLinesIndex++] : undefined;\n }\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[remainingLinesIndex] || '';\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[remainingLinesIndex] || '';\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLinesIndex < remainingLines.length) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n var obj = Object.create(null);\n return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n if (isProtoString(aStr)) {\n return '$' + aStr;\n }\n\n return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n if (isProtoString(aStr)) {\n return aStr.slice(1);\n }\n\n return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n if (!s) {\n return false;\n }\n\n var length = s.length;\n\n if (length < 9 /* \"__proto__\".length */) {\n return false;\n }\n\n if (s.charCodeAt(length - 1) !== 95 /* '_' */ ||\n s.charCodeAt(length - 2) !== 95 /* '_' */ ||\n s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n s.charCodeAt(length - 8) !== 95 /* '_' */ ||\n s.charCodeAt(length - 9) !== 95 /* '_' */) {\n return false;\n }\n\n for (var i = length - 10; i >= 0; i--) {\n if (s.charCodeAt(i) !== 36 /* '$' */) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 === null) {\n return 1; // aStr2 !== null\n }\n\n if (aStr2 === null) {\n return -1; // aStr1 !== null\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n sourceURL = sourceURL || '';\n\n if (sourceRoot) {\n // This follows what Chrome does.\n if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n sourceRoot += '/';\n }\n // The spec says:\n // Line 4: An optional source root, useful for relocating source\n // files on a server or removing repeated values in the\n // “sources” entry. This value is prepended to the individual\n // entries in the “source” field.\n sourceURL = sourceRoot + sourceURL;\n }\n\n // Historically, SourceMapConsumer did not take the sourceMapURL as\n // a parameter. This mode is still somewhat supported, which is why\n // this code block is conditional. However, it's preferable to pass\n // the source map URL to SourceMapConsumer, so that this function\n // can implement the source URL resolution algorithm as outlined in\n // the spec. This block is basically the equivalent of:\n // new URL(sourceURL, sourceMapURL).toString()\n // ... except it avoids using URL, which wasn't available in the\n // older releases of node still supported by this library.\n //\n // The spec says:\n // If the sources are not absolute URLs after prepending of the\n // “sourceRoot”, the sources are resolved relative to the\n // SourceMap (like resolving script src in a html document).\n if (sourceMapURL) {\n var parsed = urlParse(sourceMapURL);\n if (!parsed) {\n throw new Error(\"sourceMapURL could not be parsed\");\n }\n if (parsed.path) {\n // Strip the last path component, but keep the \"/\".\n var index = parsed.path.lastIndexOf('/');\n if (index >= 0) {\n parsed.path = parsed.path.substring(0, index + 1);\n }\n }\n sourceURL = join(urlGenerate(parsed), sourceURL);\n }\n\n return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"https\");","module.exports = require(\"path\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(503);\n"],"names":["root","factory","exports","module","define","amd","Object","self","this","_regeneratorRuntime","e","t","r","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","key","toPrimitive","String","_toPrimitive","LocalStorageCredentialStore","require","HttpCall","ApiHelper","authentication","options","_classCallCheck","fullResponse","rememberMe","timeout","newCredentialStore","credentialStore","createStore","credentials","sessionId","path","set","cred","server","get","database","userName","password","newStore","store","clear","_getAuthentication","_callee","authenticate","_this","_context","response","data","result","setLocalCredentials","_x","_x2","callbackError","dispatchError","message","errorDetails","error","toString","status","concat","statusText","statusCode","statusMessage","_sendHttpCall","_callee3","params","callbackSuccess","_this2","_context3","send","_ref","_callee2","_context2","clearLocalCredentials","getAuthentication","auth","_x9","_x3","_x4","_x5","_x6","_x7","_x8","GeotabApi","newOptions","undefined","_helper","bind","_authenticate","callimpl","_call","_callimpl","storedCredentials","getLocalCredentials","sendHttpCall","errorHandle","parseHttpResponse","_x0","_multiCall","_callee4","calls","formattedCalls","_context4","map","_x1","_x10","_x11","_getSession","_callee5","newSession","_context5","_x12","_x13","_forget","_callee6","_context6","http","window","https","config","headers","body","replace","JSON","stringify","_send","url","fetchTimeout","fetchPromise","timeoutPromise","urlObj","getCallUrl","encode","fetch","_","reject","setTimeout","race","clearTimeout","json","URL","hostname","pathname","req","protocol","request","res","on","chunk","parsedData","parse","destroy","write","end","LocalStorageMock","credentials_key","server_key","localStorage","getItem","storedServer","thisCredentials","console","log","setItem","removeItem","_state","isModern","Buffer","alloc","allocUnsafe","from","encodingOrOffset","input","obj","byteOffset","maxLength","byteLength","RangeError","Uint8Array","fromArrayBuffer","string","encoding","isEncoding","fromString","runtime","Op","hasOwn","desc","$Symbol","iteratorSymbol","asyncIteratorSymbol","toStringTagSymbol","err","innerFn","outerFn","tryLocsList","protoGenerator","generator","context","fn","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","PromiseImpl","record","unwrapped","previousPromise","state","doneResult","delegateResult","methodName","info","locs","entry","iterable","iteratorMethod","genFun","ctor","iter","val","object","skipTempReset","rootRecord","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","regeneratorRuntime","accidentalStrictMode","globalThis","Function","fs","SourceMapConsumer","existsSync","readFileSync","bufferFrom","dynamicRequire","mod","errorFormatterInstalled","uncaughtShimInstalled","emptyCacheBetweenOperations","environment","fileContentsCache","sourceMapCache","reSourceMap","retrieveFileHandlers","retrieveMapHandlers","isInBrowser","XMLHttpRequest","process","handlerExec","list","ret","retrieveFile","supportRelativeURL","file","dir","dirname","match","exec","startPath","test","trim","drive","contents","xhr","open","readyState","responseText","er","retrieveSourceMap","mapSourcePosition","position","sourceMap","source","urlAndMap","sourcesContent","sources","originalPositionFor","originalPosition","mapEvalOrigin","origin","line","column","CallSiteToString","fileName","fileLocation","isNative","getScriptNameOrSourceURL","isEval","getEvalOrigin","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","addSuffix","isConstructor","isToplevel","typeName","getTypeName","getMethodName","indexOf","cloneCallSite","frame","getOwnPropertyNames","wrapCallSite","nextPosition","curPosition","getFileName","headerLength","version","originalFunctionName","prepareStackTrace","stack","errorString","processedStack","join","getErrorSource","code","split","Array","sourceMapData","sourceMappingURL","fileData","sourceMapHeader","getResponseHeader","lastMatch","re","retrieveSourceMapURL","rawData","originalRetrieveFileHandlers","originalRetrieveMapHandlers","install","overrideRetrieveFile","unshift","overrideRetrieveSourceMap","hookRequire","Module","$compile","_compile","__sourceMapSupport","content","filename","installHandler","handleUncaughtExceptions","isMainThread","origEmit","emit","hasStack","hasListeners","listeners","stderr","globalProcessStderr","_handle","setBlocking","exit","resetRetrieveHandlers","util","has","hasNativeMap","Map","ArraySet","_array","_set","fromArray","aArray","aAllowDuplicates","len","add","size","aStr","sStr","toSetString","isDuplicate","idx","at","aIdx","toArray","base64","aValue","digit","encoded","vlq","toVLQSigned","VLQ_BASE","decode","aIndex","aOutParam","continuation","shifted","strLen","shift","charCodeAt","rest","intToCharMap","number","charCode","recursiveSearch","aLow","aHigh","aNeedle","aHaystack","aCompare","aBias","mid","Math","floor","cmp","LEAST_UPPER_BOUND","GREATEST_LOWER_BOUND","search","index","MappingList","_sorted","_last","generatedLine","generatedColumn","unsortedForEach","aCallback","aThisArg","aMapping","mappingA","mappingB","lineA","lineB","columnA","columnB","compareByGeneratedPositionsInflated","sort","swap","ary","x","temp","doQuickSort","comparator","low","high","round","random","pivot","j","q","binarySearch","base64VLQ","quickSort","aSourceMap","aSourceMapURL","parseSourceMapInput","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","getArg","names","sourceRoot","mappings","_version","normalize","isAbsolute","relative","_names","_sources","_absoluteSources","computeSourceURL","_mappings","_sourceMapURL","Mapping","originalLine","originalColumn","lastOffset","_sections","offset","offsetLine","offsetColumn","generatedOffset","consumer","fromSourceMap","__generatedMappings","_parseMappings","__originalMappings","_charIsMappingSeparator","aSourceRoot","GENERATED_ORDER","ORIGINAL_ORDER","eachMapping","aContext","aOrder","_generatedMappings","_originalMappings","mapping","allGeneratedPositionsFor","aArgs","needle","_findSourceIndex","_findMapping","compareByOriginalPositions","lastColumn","aSource","relativeSource","smc","_sourceRoot","_generateSourcesContent","_file","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","str","segment","previousGeneratedColumn","previousOriginalLine","previousOriginalColumn","previousSource","previousName","cachedSegments","originalMappings","compareByGeneratedPositionsDeflated","aMappings","aLineName","aColumnName","aComparator","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","some","sc","sourceContentFor","nullOnMissing","urlParse","fileUriAbsPath","scheme","generatedPositionFor","sectionIndex","section","bias","every","generatedPosition","sectionMappings","adjustedMapping","SourceMapGenerator","_skipValidation","_sourcesContents","aSourceMapConsumer","newMapping","generated","original","addMapping","sourceFile","sourceRelative","setSourceContent","_validateMapping","aSourceFile","aSourceContent","applySourceMap","aSourceMapPath","newSources","newNames","aGenerated","aOriginal","aName","_serializeMappings","nameIdx","sourceIdx","previousGeneratedLine","aSources","toJSON","REGEX_NEWLINE","isSourceNode","SourceNode","aLine","aColumn","aChunks","children","sourceContents","fromStringWithSourceMap","aGeneratedCode","aRelativePath","node","remainingLines","remainingLinesIndex","shiftNextLine","getNextLine","lastGeneratedLine","lastMapping","nextLine","substr","addMappingWithCode","splice","aChunk","isArray","prepend","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","fromSetString","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent","aDefaultValue","urlRegexp","dataUrlRegexp","aUrl","host","port","urlGenerate","aParsedUrl","aPath","part","parts","up","aRoot","aPathUrl","aRootUrl","joined","level","lastIndexOf","supportsNullProto","identity","isProtoString","strcmp","aStr1","aStr2","onlyCompareOriginal","onlyCompareGenerated","sourceURL","sourceMapURL","parsed","substring","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","id","loaded","__webpack_modules__","nmd","paths"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/ApiHelper.js b/lib/ApiHelper.js index 9708e90..af8c9df 100644 --- a/lib/ApiHelper.js +++ b/lib/ApiHelper.js @@ -86,10 +86,10 @@ class ApiHelper { /** * Sets the local credentials - * @param {object} result credentials object using result of a promise + * @param {object} credentials credentials object using result of a promise */ - setLocalCredentials(result, server) { - this.credentialStore.set(result.credentials, server); + setLocalCredentials(credentials, server) { + this.credentialStore.set(credentials, server); } clearLocalCredentials() { @@ -207,7 +207,7 @@ class ApiHelper { let server = response.data.result.path === 'ThisServer' ? this.server : response.data.result.path; this.server = server; if (this.rememberMe) { - this.setLocalCredentials(response.data.result, server); + this.setLocalCredentials(response.data.result.credentials, server); } } return response; diff --git a/lib/api.js b/lib/api.js index 5cf26dd..f625b36 100644 --- a/lib/api.js +++ b/lib/api.js @@ -1,5 +1,5 @@ -/*! mg-api-js - v2.0.1 - * Release on: 2020-04-27 +/*! mg-api-js - v3.0.2 + * Release on: 2026-04-13 * Copyright (c) 2020 Geotab Inc * Licensed MIT */ // UMD Declaration diff --git a/package-lock.json b/package-lock.json index 02150f0..8eea276 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "mocha": "^11.0.0", "nock": "^12.0.3", "node-localstorage": "^2.2.1", - "puppeteer": "^2.1.1", + "puppeteer-core": "^24.43.1", "regenerator-runtime": "^0.13.9", "source-map-support": "^0.5.21", "start-server-and-test": "^3.0.2", @@ -2552,6 +2552,41 @@ "node": ">=14" } }, + "node_modules/@puppeteer/browsers": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.2.tgz", + "integrity": "sha512-5EUZSUIc37H6aIXyWO0Z4y8NlF8NnjgmqeQgOGiswAU7pY0HOo16ho4+alIWmSfdZnjqBRawMsP3I5YqLSn6kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.4", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.10", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", @@ -2566,6 +2601,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -2722,12 +2764,6 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "node_modules/@types/mime-types": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", - "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", - "dev": true - }, "node_modules/@types/node": { "version": "22.14.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", @@ -2821,6 +2857,17 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -3072,12 +3119,13 @@ } }, "node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/ajv": { @@ -3240,11 +3288,18 @@ "node": "*" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } }, "node_modules/asynckit": { "version": "0.4.0", @@ -3274,6 +3329,21 @@ "node": ">=10" } }, + "node_modules/b4a": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz", + "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, "node_modules/babel": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", @@ -3350,6 +3420,91 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/bare-events": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.1.tgz", + "integrity": "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/bare-fs": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.4.tgz", + "integrity": "sha512-y1kC+ffIx/tPLdTE693uNjHfzTfr+ravR5tvWlMXe25nELbkqV400S71qHDwbkAQ1FVEZobB1NFRzFbCCcyBCQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.1.1.tgz", + "integrity": "sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bare-stream": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.3.tgz", + "integrity": "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.8.1", + "streamx": "^2.25.0", + "teex": "^1.0.1" + }, + "peerDependencies": { + "bare-abort-controller": "*", + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + }, + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.5.tgz", + "integrity": "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-path": "^3.0.0" + } + }, "node_modules/baseline-browser-mapping": { "version": "2.10.18", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.18.tgz", @@ -3363,6 +3518,16 @@ "node": ">=6.0.0" } }, + "node_modules/basic-ftp": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz", + "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -3545,6 +3710,7 @@ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -3753,6 +3919,20 @@ "node": ">=6.0" } }, + "node_modules/chromium-bidi": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", + "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "mitt": "^3.0.1", + "zod": "^3.24.1" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -3922,21 +4102,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", @@ -4042,6 +4207,16 @@ "node": ">= 8" } }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -4135,6 +4310,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -4170,6 +4360,13 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/devtools-protocol": { + "version": "0.0.1608973", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1608973.tgz", + "integrity": "sha512-Tpm17fxYzt+J7VrGdc1k8YdRqS3YV7se/M6KeemEqvUbq/n7At1rWVuXMxQgpWkdwSdIEKYbU//Bve+Shm4YNQ==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/diff": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", @@ -4251,6 +4448,16 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.20.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", @@ -4359,6 +4566,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/eslint": { "version": "9.39.4", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", @@ -4628,6 +4867,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -4712,6 +4965,16 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -4818,41 +5081,55 @@ ] }, "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "bin": { "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.0.0" + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -4908,6 +5185,7 @@ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, + "license": "MIT", "dependencies": { "pend": "~1.2.0" } @@ -5120,12 +5398,6 @@ "node": ">= 0.6" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -5212,22 +5484,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" }, "engines": { - "node": "*" + "node": ">= 14" } }, "node_modules/glob-parent": { @@ -5415,6 +5684,20 @@ "node": ">=8.0.0" } }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/http-proxy-middleware": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", @@ -5440,16 +5723,17 @@ } }, "node_modules/https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, + "license": "MIT", "dependencies": { - "agent-base": "5", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -5538,17 +5822,6 @@ "node": ">=0.8.19" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -5565,6 +5838,16 @@ "node": ">=10.13.0" } }, + "node_modules/ip-address": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", @@ -6195,18 +6478,6 @@ "node": ">=8.6" } }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -6275,17 +6546,12 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } + "license": "MIT" }, "node_modules/mocha": { "version": "11.7.5", @@ -6428,6 +6694,16 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "node_modules/netmask": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz", + "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/nock": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz", @@ -6528,6 +6804,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -6658,6 +6935,40 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -6697,15 +7008,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -6766,7 +7068,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", @@ -6875,6 +7178,7 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -6910,11 +7214,53 @@ "node": ">= 0.10" } }, + "node_modules/proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/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, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, "node_modules/punycode": { "version": "2.3.1", @@ -6925,27 +7271,23 @@ "node": ">=6" } }, - "node_modules/puppeteer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.1.1.tgz", - "integrity": "sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg==", - "deprecated": "< 22.8.2 is no longer supported", + "node_modules/puppeteer-core": { + "version": "24.43.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.43.1.tgz", + "integrity": "sha512-T5ScUMAsmhdNbgDR41AGESYeS6V9MSgetkSnVhhW+gXvzC42VesKCn5ld87gAZDJ6vLHL9GkRvY9WtQWSnwFbw==", "dev": true, - "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "@types/mime-types": "^2.1.0", - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^4.0.0", - "mime": "^2.0.3", - "mime-types": "^2.1.25", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" + "@puppeteer/browsers": "2.13.2", + "chromium-bidi": "14.0.0", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1608973", + "typed-query-selector": "^2.12.2", + "webdriver-bidi-protocol": "0.4.1", + "ws": "^8.20.0" }, "engines": { - "node": ">=8.16.0" + "node": ">=18" } }, "node_modules/pvtsutils": { @@ -7255,19 +7597,6 @@ "node": ">= 4" } }, - "node_modules/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", @@ -7643,6 +7972,17 @@ "node": "*" } }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -7654,6 +7994,36 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/socks": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz", + "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ip-address": "^10.1.1", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7751,6 +8121,18 @@ "node": ">= 0.8" } }, + "node_modules/streamx": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.0.tgz", + "integrity": "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==", + "dev": true, + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -7879,6 +8261,44 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/tar-fs": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.3.tgz", + "integrity": "sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/tar-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.0.tgz", + "integrity": "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "streamx": "^2.12.5" + } + }, "node_modules/terser": { "version": "5.46.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", @@ -7989,6 +8409,16 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, "node_modules/thingies": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz", @@ -8122,11 +8552,12 @@ "node": ">= 0.6" } }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true + "node_modules/typed-query-selector": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.2.tgz", + "integrity": "sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==", + "dev": true, + "license": "MIT" }, "node_modules/undici-types": { "version": "6.21.0", @@ -8309,6 +8740,13 @@ "minimalistic-assert": "^1.0.0" } }, + "node_modules/webdriver-bidi-protocol": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", + "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/webpack": { "version": "5.106.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.1.tgz", @@ -8696,32 +9134,11 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "node": ">= 10.13.0" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/webpack-merge": { @@ -8921,7 +9338,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "1.3.4", @@ -8935,12 +9353,25 @@ } }, "node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "version": "8.21.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz", + "integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==", "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "node_modules/wsl-utils": { @@ -9035,6 +9466,7 @@ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, + "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -9052,6 +9484,16 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } }, "dependencies": { @@ -10713,6 +11155,29 @@ "dev": true, "optional": true }, + "@puppeteer/browsers": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.2.tgz", + "integrity": "sha512-5EUZSUIc37H6aIXyWO0Z4y8NlF8NnjgmqeQgOGiswAU7pY0HOo16ho4+alIWmSfdZnjqBRawMsP3I5YqLSn6kw==", + "dev": true, + "requires": { + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.4", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" + }, + "dependencies": { + "semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true + } + } + }, "@sinclair/typebox": { "version": "0.27.10", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", @@ -10725,6 +11190,12 @@ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", "dev": true }, + "@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, "@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -10878,12 +11349,6 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, - "@types/mime-types": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", - "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", - "dev": true - }, "@types/node": { "version": "22.14.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", @@ -10974,6 +11439,16 @@ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, + "@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, "@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", @@ -11185,9 +11660,9 @@ "requires": {} }, "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true }, "ajv": { @@ -11304,11 +11779,14 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true + "ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "requires": { + "tslib": "^2.0.1" + } }, "asynckit": { "version": "0.4.0", @@ -11335,6 +11813,13 @@ } } }, + "b4a": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.1.tgz", + "integrity": "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==", + "dev": true, + "requires": {} + }, "babel": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", @@ -11389,12 +11874,64 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "bare-events": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.1.tgz", + "integrity": "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==", + "dev": true, + "requires": {} + }, + "bare-fs": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.7.4.tgz", + "integrity": "sha512-y1kC+ffIx/tPLdTE693uNjHfzTfr+ravR5tvWlMXe25nELbkqV400S71qHDwbkAQ1FVEZobB1NFRzFbCCcyBCQ==", + "dev": true, + "requires": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + } + }, + "bare-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.1.1.tgz", + "integrity": "sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==", + "dev": true + }, + "bare-stream": { + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.13.3.tgz", + "integrity": "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==", + "dev": true, + "requires": { + "b4a": "^1.8.1", + "streamx": "^2.25.0", + "teex": "^1.0.1" + } + }, + "bare-url": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.5.tgz", + "integrity": "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==", + "dev": true, + "requires": { + "bare-path": "^3.0.0" + } + }, "baseline-browser-mapping": { "version": "2.10.18", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.18.tgz", "integrity": "sha512-VSnGQAOLtP5mib/DPyg2/t+Tlv65NTBz83BJBJvmLVHHuKJVaDOBvJJykiT5TR++em5nfAySPccDZDa4oSrn8A==", "dev": true }, + "basic-ftp": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.3.1.tgz", + "integrity": "sha512-bopVNp6ugyA150DDuZfPFdt1KZ5a94ZDiwX4hMgZDzF+GttD80lEy8kj98kbyhLXnPvhtIo93mdnLIjpCAeeOw==", + "dev": true + }, "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", @@ -11656,6 +12193,16 @@ "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true }, + "chromium-bidi": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz", + "integrity": "sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==", + "dev": true, + "requires": { + "mitt": "^3.0.1", + "zod": "^3.24.1" + } + }, "ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -11779,18 +12326,6 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "connect-history-api-fallback": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", @@ -11864,6 +12399,12 @@ "which": "^2.0.1" } }, + "data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true + }, "debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -11916,6 +12457,17 @@ "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true }, + "degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "requires": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -11940,6 +12492,12 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "devtools-protocol": { + "version": "0.0.1608973", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1608973.tgz", + "integrity": "sha512-Tpm17fxYzt+J7VrGdc1k8YdRqS3YV7se/M6KeemEqvUbq/n7At1rWVuXMxQgpWkdwSdIEKYbU//Bve+Shm4YNQ==", + "dev": true + }, "diff": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", @@ -12002,6 +12560,15 @@ "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true }, + "end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "enhanced-resolve": { "version": "5.20.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", @@ -12075,6 +12642,26 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, "eslint": { "version": "9.39.4", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", @@ -12256,6 +12843,12 @@ "eslint-visitor-keys": "^4.2.1" } }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, "esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -12320,6 +12913,15 @@ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true }, + "events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "dev": true, + "requires": { + "bare-events": "^2.7.0" + } + }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -12400,31 +13002,25 @@ } }, "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { - "ms": "2.0.0" + "pump": "^3.0.0" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true } } }, @@ -12434,6 +13030,12 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -12618,12 +13220,6 @@ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "dev": true }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, "function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -12682,18 +13278,15 @@ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" } }, "glob-parent": { @@ -12826,6 +13419,16 @@ "requires-port": "^1.0.0" } }, + "http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "requires": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + } + }, "http-proxy-middleware": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", @@ -12840,12 +13443,12 @@ } }, "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "requires": { - "agent-base": "5", + "agent-base": "^7.1.2", "debug": "4" } }, @@ -12902,16 +13505,6 @@ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", @@ -12924,6 +13517,12 @@ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true }, + "ip-address": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", + "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", + "dev": true + }, "ipaddr.js": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", @@ -13358,12 +13957,6 @@ "picomatch": "^2.3.1" } }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -13412,14 +14005,11 @@ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } + "mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "dev": true }, "mocha": { "version": "11.7.5", @@ -13527,6 +14117,12 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, + "netmask": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.1.1.tgz", + "integrity": "sha512-eonl3sLUha+S1GzTPxychyhnUzKyeQkZ7jLjKrBagJgPla13F+uQ71HgpFefyHgqrjEbCPkDArxYsjY8/+gLKA==", + "dev": true + }, "nock": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/nock/-/nock-12.0.3.tgz", @@ -13686,6 +14282,32 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dev": true, + "requires": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + } + }, + "pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "requires": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + } + }, "package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", @@ -13713,12 +14335,6 @@ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -13874,34 +14490,65 @@ } } }, + "proxy-agent": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz", + "integrity": "sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.6", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.1.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.5" + }, + "dependencies": { + "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 + } + } + }, "proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, + "pump": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", + "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, - "puppeteer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-2.1.1.tgz", - "integrity": "sha512-LWzaDVQkk1EPiuYeTOj+CZRIjda4k2s5w4MK4xoH2+kgWV/SDlkYHmxatDdtYrciHUKSXTsGgPgPP8ILVdBsxg==", + "puppeteer-core": { + "version": "24.43.1", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.43.1.tgz", + "integrity": "sha512-T5ScUMAsmhdNbgDR41AGESYeS6V9MSgetkSnVhhW+gXvzC42VesKCn5ld87gAZDJ6vLHL9GkRvY9WtQWSnwFbw==", "dev": true, "requires": { - "@types/mime-types": "^2.1.0", - "debug": "^4.1.0", - "extract-zip": "^1.6.6", - "https-proxy-agent": "^4.0.0", - "mime": "^2.0.3", - "mime-types": "^2.1.25", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^2.6.1", - "ws": "^6.1.0" + "@puppeteer/browsers": "2.13.2", + "chromium-bidi": "14.0.0", + "debug": "^4.4.3", + "devtools-protocol": "0.0.1608973", + "typed-query-selector": "^2.12.2", + "webdriver-bidi-protocol": "0.4.1", + "ws": "^8.20.0" } }, "pvtsutils": { @@ -14128,15 +14775,6 @@ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "run-applescript": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", @@ -14422,6 +15060,12 @@ "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==", "dev": true }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, "sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -14433,6 +15077,27 @@ "websocket-driver": "^0.7.4" } }, + "socks": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.9.tgz", + "integrity": "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==", + "dev": true, + "requires": { + "ip-address": "^10.1.1", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "requires": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -14511,6 +15176,17 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, + "streamx": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.0.tgz", + "integrity": "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==", + "dev": true, + "requires": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -14593,6 +15269,39 @@ "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", "dev": true }, + "tar-fs": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.3.tgz", + "integrity": "sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ==", + "dev": true, + "requires": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "tar-stream": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.2.0.tgz", + "integrity": "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==", + "dev": true, + "requires": { + "b4a": "^1.6.4", + "bare-fs": "^4.5.5", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "teex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", + "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", + "dev": true, + "requires": { + "streamx": "^2.12.5" + } + }, "terser": { "version": "5.46.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", @@ -14658,6 +15367,15 @@ } } }, + "text-decoder": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", + "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "dev": true, + "requires": { + "b4a": "^1.6.4" + } + }, "thingies": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz", @@ -14747,10 +15465,10 @@ "mime-types": "~2.1.24" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "typed-query-selector": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.2.tgz", + "integrity": "sha512-EOPFbyIub4ngnEdqi2yOcNeDLaX/0jcE1JoAXQDDMIthap7FoN795lc/SHfIq2d416VufXpM8z/lD+WRm2gfOQ==", "dev": true }, "undici-types": { @@ -14879,6 +15597,12 @@ "minimalistic-assert": "^1.0.0" } }, + "webdriver-bidi-protocol": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz", + "integrity": "sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==", + "dev": true + }, "webpack": { "version": "5.106.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.1.tgz", @@ -15177,13 +15901,6 @@ "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } - }, - "ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", - "dev": true, - "requires": {} } } }, @@ -15288,13 +16005,11 @@ } }, "ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", + "version": "8.21.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.1.tgz", + "integrity": "sha512-+0NTnW77fFN/DjQi6k/Sq/Yvk4Sgajw7urW8V+asjXnRgDs9gyGkdb7EzgfhA4goXsRIZKE28fzIXBHEzhuiWw==", "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } + "requires": {} }, "wsl-utils": { "version": "0.1.0", @@ -15373,6 +16088,12 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true } } } diff --git a/package.json b/package.json index 15bb301..22474ae 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "mocha": "^11.0.0", "nock": "^12.0.3", "node-localstorage": "^2.2.1", - "puppeteer": "^2.1.1", + "puppeteer-core": "^24.43.1", "regenerator-runtime": "^0.13.9", "source-map-support": "^0.5.21", "start-server-and-test": "^3.0.2", diff --git a/test/node/node-Credentials.spec.js b/test/node/node-Credentials.spec.js index a9efae3..a80ab4c 100644 --- a/test/node/node-Credentials.spec.js +++ b/test/node/node-Credentials.spec.js @@ -121,37 +121,51 @@ describe('User loads GeotabApi node module with credentials', async () => { }); it('Api rememberMe should function properly', async () => { - let auth = mocks.login; + let auth = JSON.parse(JSON.stringify(mocks.login)); auth.credentials.sessionId = '123456'; let api = new GeotabApi(auth, {rememberMe: true}); let session = await api.getSession(); assert.equal(auth.credentials.sessionId, session.credentials.sessionId, 'SessionIDs are not remembered'); }); - it('Should take a custom CredentialStore', async () => { - // Custom store with custom behaviour + it('Should support a synchronous custom CredentialStore', async () => { + let value = false; + let calls = {get: 0, set: 0, clear: 0, invalidSet: 0}; let store = { get: () => { - return { - credentials: { - userName: 'Custom', - password: 'Store', - database: 'testDB', - sessionId: '000000' - }, - path: 'CustomStore' + calls.get++; + return value; + }, + set: (credentials, server) => { + calls.set++; + if (!credentials) { + calls.invalidSet++; } + value = {credentials, server}; }, - set: () => {/* Custom Set - ignores default behavior to set with provided credentials */}, - clear: () => {}, - custom: () => {} + clear: () => { + calls.clear++; + value = false; + } }; - let api = new GeotabApi(mocks.login, {rememberMe: true, newCredentialStore: store}); - let sessionId = await api.getSession() - .then( data => data.credentials.sessionId) - .catch( err => err); - assert.equal(sessionId, '000000', 'SessionId being updated and returned instead of following custom store logic'); + let firstLogin = JSON.parse(JSON.stringify(mocks.login)); + delete firstLogin.credentials.sessionId; + let api1 = new GeotabApi(firstLogin, {rememberMe: true, newCredentialStore: store}); + let session1 = await api1.getSession(); + let secondLogin = JSON.parse(JSON.stringify(firstLogin)); + secondLogin.path = 'unused.example'; + let api2 = new GeotabApi(secondLogin, {rememberMe: true, newCredentialStore: store}); + let session2 = await api2.getSession(); + await api2.forget(); + + assert.isAtLeast(calls.get, 2, 'Custom store was not read'); + assert.isAtLeast(calls.set, 1, 'Custom store was not written'); + assert.equal(calls.invalidSet, 0, 'Custom store received an empty credential object'); + assert.equal(calls.clear, 1, 'Custom store was not cleared by forget'); + assert.equal(session2.credentials.sessionId, session1.credentials.sessionId, 'Custom store session was not reused'); + assert.equal(session2.path, mocks.server, 'Custom store server was not restored'); + assert.equal(value.server, mocks.server, 'Refreshed session was not written with the restored server'); }); it('Should return node http response objects', async () => { diff --git a/test/node/node-Version.spec.js b/test/node/node-Version.spec.js new file mode 100644 index 0000000..6ba9211 --- /dev/null +++ b/test/node/node-Version.spec.js @@ -0,0 +1,31 @@ +const fs = require('fs'); +const path = require('path'); +const assert = require('chai').assert; +const packageJson = require('../../package.json'); +const packageLock = require('../../package-lock.json'); + +const read = relativePath => fs.readFileSync(path.join(__dirname, '..', '..', relativePath), 'utf8'); + +describe('Release version metadata', () => { + const version = packageJson.version; + + it('keeps package and lockfile versions aligned', () => { + assert.equal(packageLock.version, version); + assert.equal(packageLock.packages[''].version, version); + }); + + it('pins the browser CDN example to the package version and bundle path', () => { + const readme = read('README.md'); + const pinnedUrl = `https://cdn.jsdelivr.net/npm/mg-api-js@${version}/dist/api.min.js`; + + assert.include(readme, pinnedUrl); + assert.notMatch(readme, /src="https:\/\/cdn\.jsdelivr\.net\/npm\/mg-api-js"/); + }); + + it('keeps source and distribution banners aligned with the package version', () => { + const expectedBanner = `mg-api-js - v${version}`; + + assert.include(read('lib/api.js'), expectedBanner); + assert.include(read('dist/api.min.js.LICENSE.txt'), expectedBanner); + }); +}); diff --git a/test/web/serverSetup.js b/test/web/serverSetup.js index b9af97c..e29ec05 100644 --- a/test/web/serverSetup.js +++ b/test/web/serverSetup.js @@ -1,124 +1,143 @@ -const puppeteer = require('puppeteer'); +const fs = require('fs'); +const path = require('path'); +const puppeteer = require('puppeteer-core'); const mocks = require('../mocks/mocks.js'); -// JSON-RPC helpers -const parseRequest = body => { - return JSON.parse(body); -}; +const chromeCandidates = [ + process.env.PUPPETEER_EXECUTABLE_PATH, + process.env.CHROME_PATH, + '/usr/bin/google-chrome-stable', + '/usr/bin/google-chrome', + '/usr/bin/chromium', + '/usr/bin/chromium-browser', + '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome', + process.env.PROGRAMFILES && path.join(process.env.PROGRAMFILES, 'Google', 'Chrome', 'Application', 'chrome.exe'), + process.env['PROGRAMFILES(X86)'] && path.join(process.env['PROGRAMFILES(X86)'], 'Google', 'Chrome', 'Application', 'chrome.exe') +].filter(Boolean); + +const executablePath = chromeCandidates.find(candidate => fs.existsSync(candidate)); + +if (!executablePath) { + throw new Error('Chrome was not found. Set PUPPETEER_EXECUTABLE_PATH to a Chrome executable.'); +} -// puppeteer options const opts = { - devtools: true, // Opens browser dev tools when headless is false + executablePath, headless: true, - slowMo: 0, - timeout: 10000, + timeout: 30000, args: [ - // Something about headless mode makes the application/json call trip off a CORS request. - // A headed browser may convert all content-types to one of the allowed values - // https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#Examples_of_access_control_scenarios - // Configuring the request to respond to the preflight OPTIONS should also have worked, but this - // workaround is far easier and faster - '--disable-web-security', - // Using sandbox triggers this error when calling browser.newPage(): - // [0809/104946.906735:FATAL:gpu_data_manager_impl_private.cc(1034)] The display compositor is frequently crashing. Goodbye. - // This causes the call to hang and block the tests from running. - // Disabling sandbox in a testing context shouldn't cause any security concerns - '--no-sandbox' + '--no-sandbox', + '--disable-setuid-sandbox' ] }; +const corsHeaders = { + 'Access-Control-Allow-Headers': 'Content-Type', + 'Access-Control-Allow-Methods': 'POST, OPTIONS', + 'Access-Control-Allow-Origin': '*' +}; + +const respond = (request, payload, status = 200) => request.respond({ + status, + contentType: 'application/json', + headers: corsHeaders, + body: JSON.stringify(payload) +}); + let authenticationAttempts = 0; -module.exports = async function () { - browser = await puppeteer.launch(opts); - page = await browser.newPage(); - // Allowing puppeteer access to the request - needed for mocks - await page.setRequestInterception(true); - - // Setup mocks - await page.on('request', request => { - if (request.url().includes(`https://${mocks.server}/apiv1`)) { - // Post requests are normal xhr/call methods - let payload = ''; - if (request.method() === 'POST') { - let body = parseRequest(request.postData()); - switch (body.method) { - case 'Authenticate': - // Alternate the credential response to test forget() - if (authenticationAttempts % 2 === 0) { - payload = { result: mocks.credentials }; - authenticationAttempts++; - } else { - payload = { result: mocks.refreshedCredentials }; - authenticationAttempts++; - } - break; - case 'Get': - switch (body.params.typeName) { - case 'Device': - payload = { result: [mocks.device] }; - break; - case 'User': - payload = { result: [mocks.user] }; - break; - } - break; - case 'Geet': - // Poorly formed request tests - payload = { - error: { - code: -32000, - name: "JSONRPCError", - message: "The method 'Geet' could not be found. Verify the method name and ensure all method parameters are included.", - data: { - type: "MissingMethodException", - id: "ee15868e-6d47-41de-bafc-b20c1ca95152", - requestIndex: 0 - } - } - } - break; - case 'ExecuteMultiCall': - // Looping each of the calls - body.params.calls.forEach(call => { - switch (call.method) { - case 'GetCountOf': - // Stripped down to basics for ease of testing - payload = { result: [2000, 2001] }; - break; - } - }) - break; - } - request.respond({ - content: 'application/json', - headers: { 'Access-Control-Allow-Origin': '*' }, - body: JSON.stringify(payload) - }); + +const getPayload = body => { + switch (body.method) { + case 'Authenticate': { + const payload = authenticationAttempts % 2 === 0 ? mocks.credentials : mocks.refreshedCredentials; + authenticationAttempts++; + return { result: payload }; + } + case 'Get': + switch (body.params.typeName) { + case 'Device': + return { result: [mocks.device] }; + case 'User': + return { result: [mocks.user] }; + default: + return { result: [] }; } - } else if (request.url().includes('badinfo')) { - payload = { + case 'Geet': + return { error: { code: -32000, - name: "JSONRPCError", - message: "Incorrect login credentials", + name: 'JSONRPCError', + message: "The method 'Geet' could not be found. Verify the method name and ensure all method parameters are included.", data: { - type: "InvalidUserException", - id: "0b508b9e-7b94-4d38-b72f-8629119f73a3", + type: 'MissingMethodException', + id: 'ee15868e-6d47-41de-bafc-b20c1ca95152', requestIndex: 0 } } + }; + case 'ExecuteMultiCall': + return { result: [2000, 2001] }; + default: + return { result: null }; + } +}; + +module.exports = async function () { + const browser = await puppeteer.launch(opts); + + try { + const page = await browser.newPage(); + await page.setRequestInterception(true); + + page.on('request', async request => { + try { + const isApiRequest = request.url().includes(`https://${mocks.server}/apiv1`); + const isInvalidCredentialRequest = request.url().includes('badinfo'); + + if (!isApiRequest && !isInvalidCredentialRequest) { + await request.continue(); + return; + } + + if (request.method() === 'OPTIONS') { + await respond(request, null, 204); + return; + } + + if (request.method() !== 'POST') { + await respond(request, { error: 'Method not allowed' }, 405); + return; + } + + if (isInvalidCredentialRequest) { + await respond(request, { + error: { + code: -32000, + name: 'JSONRPCError', + message: 'Incorrect login credentials', + data: { + type: 'InvalidUserException', + id: '0b508b9e-7b94-4d38-b72f-8629119f73a3', + requestIndex: 0 + } + } + }); + return; + } + + await respond(request, getPayload(JSON.parse(request.postData()))); + } catch (error) { + if (!request.isInterceptResolutionHandled()) { + await request.abort('failed'); + } + console.error('Failed to handle intercepted request', error); } + }); - request.respond({ - content: 'application/json', - headers: { 'Access-Control-Allow-Origin': '*' }, - body: JSON.stringify(payload) - }); - } else { - request.continue(); - } - }); - await page.goto('http://localhost:9000/test/web/'); - // es6 destructuring - return [browser, page]; -} \ No newline at end of file + await page.goto('http://localhost:9000/test/web/', { waitUntil: 'domcontentloaded' }); + return [browser, page]; + } catch (error) { + await browser.close(); + throw error; + } +}; diff --git a/test/web/web-Credentials.spec.js b/test/web/web-Credentials.spec.js index 3fc1980..cb18283 100644 --- a/test/web/web-Credentials.spec.js +++ b/test/web/web-Credentials.spec.js @@ -25,6 +25,10 @@ describe('User loads web api with credentials', () => { [browser, page] = await serverSetup(); }); + beforeEach(async () => { + await page.evaluate(() => localStorage.clear()); + }); + it('Api Should initialize', async () => { api = await page.evaluate(async (login) => { let api = new GeotabApi(login, { rememberMe: false }); @@ -162,19 +166,101 @@ describe('User loads web api with credentials', () => { assert.isFalse(result[0] === result[1], 'Session ID\'s are the same'); }); - it('Api rememberMe should function properly', async () => { + it('Api rememberMe should persist a session in localStorage', async () => { let result = await page.evaluate(async (login) => { let api1 = new GeotabApi(login, { rememberMe: true }); + let session1 = await api1.getSession(); let api2 = new GeotabApi(login, { rememberMe: true }); - let sess1 = await api1.getSession() - .then(response => response.sessionId) - .catch(err => console.log(err)); - let sess2 = await api2.getSession() - .then(response => response.sessionId) - .catch(err => console.log(err)); - return [sess1, sess2]; + let session2 = await api2.getSession(); + let storedCredentials = JSON.parse(localStorage.getItem('geotabAPI_credentials')); + + return { + firstSessionId: session1.credentials.sessionId, + secondSessionId: session2.credentials.sessionId, + storedSessionId: storedCredentials.sessionId, + storedServer: localStorage.getItem('geotabAPI_server') + }; + }, mocks.login); + + assert.isString(result.firstSessionId, 'First session ID is missing'); + assert.equal(result.secondSessionId, result.firstSessionId, 'Stored session ID was not reused'); + assert.equal(result.storedSessionId, result.firstSessionId, 'Session ID was not persisted'); + assert.equal(result.storedServer, mocks.server, 'Server was not persisted'); + }); + + it('rememberMe false should not write credentials to localStorage', async () => { + let result = await page.evaluate(async (login) => { + let api = new GeotabApi(login, { rememberMe: false }); + let session = await api.getSession(); + + return { + sessionId: session.credentials.sessionId, + storedCredentials: localStorage.getItem('geotabAPI_credentials'), + storedServer: localStorage.getItem('geotabAPI_server') + }; + }, mocks.login); + + assert.isString(result.sessionId, 'Authentication did not return a session ID'); + assert.isNull(result.storedCredentials, 'Credentials were persisted with rememberMe disabled'); + assert.isNull(result.storedServer, 'Server was persisted with rememberMe disabled'); + }); + + it('Should support a synchronous custom credential store', async () => { + let result = await page.evaluate(async (login) => { + let value = false; + let calls = { get: 0, set: 0, clear: 0, invalidSet: 0 }; + let store = { + get() { + calls.get++; + return value; + }, + set(credentials, server) { + calls.set++; + if (!credentials) { + calls.invalidSet++; + } + value = { credentials, server }; + }, + clear() { + calls.clear++; + value = false; + } + }; + + let firstLogin = { + credentials: { + database: login.credentials.database, + userName: login.credentials.userName, + password: login.credentials.password + }, + path: login.path + }; + let api1 = new GeotabApi(firstLogin, { rememberMe: true, newCredentialStore: store }); + let session1 = await api1.getSession(); + let secondLogin = { + credentials: { ...firstLogin.credentials }, + path: 'unused.example' + }; + let api2 = new GeotabApi(secondLogin, { rememberMe: true, newCredentialStore: store }); + let session2 = await api2.getSession(); + await api2.forget(); + + return { + calls, + firstSessionId: session1.credentials.sessionId, + secondSessionId: session2.credentials.sessionId, + restoredPath: session2.path, + server: value.server + }; }, mocks.login); - assert.isTrue(result[0] === result[1], 'Session IDs do not match'); + + assert.isAtLeast(result.calls.get, 2, 'Custom store was not read'); + assert.isAtLeast(result.calls.set, 1, 'Custom store was not written'); + assert.equal(result.calls.invalidSet, 0, 'Custom store received an empty credential object'); + assert.equal(result.calls.clear, 1, 'Custom store was not cleared by forget'); + assert.equal(result.secondSessionId, result.firstSessionId, 'Custom store session was not reused'); + assert.equal(result.restoredPath, mocks.server, 'Custom store server was not restored'); + assert.equal(result.server, mocks.server, 'Refreshed session was not written with the restored server'); }); //#region Test to fail it('Should return errors with incorrect credentials', async () => { @@ -254,6 +340,8 @@ describe('User loads web api with credentials', () => { }); after(async () => { - browser.close(); + if (browser) { + await browser.close(); + } }); });