diff --git a/.babelrc b/.babelrc index 654f1839..df0e7f4b 100644 --- a/.babelrc +++ b/.babelrc @@ -2,10 +2,11 @@ "presets": [ ["env", { "modules": false }], // ["es2017"], -// ["stage-3"], +// ["stage-3"] ], "plugins": [ "syntax-dynamic-import", "transform-regenerator", + "transform-runtime" ] } diff --git a/.gitignore b/.gitignore index 337d1ae2..00882142 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,13 @@ npm-debug.log yarn-error.log .idea *.iml -accounts.txt \ No newline at end of file +accounts.txt + + +public/hidden +package-lock\.json + +certificates/ca_bundle.crt +certificates/certificate.crt +certificates/private.key + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..3890c961 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: +- stable +notifications: + slack: + secure: eh6E6WvUBgOdTc2H/p/sZH38l/jytQFknP+VZB1R2NsO8FQlx4sPxvowQ2WNVemwFPo/BPg19kk0JE9T7/qj6Gi71kTdAsV3FUUPDQqopyC9jo2vGtorRHIUyzk6WOM+1LMHdYkY7nZ2YjCHcGvPbBmAgqQKEidFCbii8t1i90nGarH169CavSKCPZCdfjH5KAoliou5Ioz4vIQiyqVWglFxpuknG9pEBV/Wk0d4ogrBv1kjI03kPqrLjnMZJUbHTPP5iEyBdFfQeaJXmK8Zl51x5bR0z5ii6rjMukTk8QJMQEGM9qMVnio6NlHHCkGO5SMjqJ2FMcoRCc+GUwTyoo7cXmKS5Tw3eyWUJwLT5a34gzcr7gbn9MI68Gr7z2UcGm2ip9Hdx4FyIJTemiJJosJhfd538BY+UoLyGhqWY0IkAdsm5TxIUck8hT70co1dWlL4owsPuiIbjW7jygfQ6kE5R4GgFoD1uE0PZiE0SwlEubz8m96nzq/hHeWKaiB6C7gPhSKPy4fHGoGCB5EwRuevewCH6/3HL7UYy+VuhOZcm0+YJQBA1bYS73HwvnHeiSHHLpMj5+874to4/4IKiOm1AQN/aD8V5+z0kar3HiHf41+gwHrBIQT0fqCrtQubLKmcUL89pNGXU1Yy9BdfcEzDna4If2u2W7j86XTlWOM= + email: false diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..7a771779 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +FROM node:8-alpine + +# Install build packages and npm global packages +RUN apk update && apk add --no-cache make gcc g++ python certbot git && npm install -g cross-env webpack webpack-cli pm2 rimraf + +# Copy files +COPY . . + +# Run npm install for build +RUN npm install + +# Build +RUN npm run build + +# Build User Interface +RUN git clone https://github.com/WebDollar/Node-WebDollar && cd Node-WebDollar && git checkout MiningPools && npm install && npm run build_browser && npm run build_browser_user_interface && rm -f /public/WebDollar-dist/WebDollar-Protocol-bundle.js && rm -f /public/WebDollar-dist/WebDollar-Protocol-bundle.js.map && cp /vue-Frontend/public/WebDollar-dist/WebDollar-Protocol-bundle.js /public/WebDollar-dist/ && cp /vue-Frontend/public/WebDollar-dist/WebDollar-Protocol-bundle.js.map /public/WebDollar-dist/ + +# Clean Everything +RUN apk del make gcc g++ python &&\ + rm -rf /tmp/* /var/cache/apk/* &&\ + npm cache clean --force + +# Ports +EXPOSE 80 +EXPOSE 443 + +CMD ["npm","start"] \ No newline at end of file diff --git a/README.md b/README.md index ca562086..8039885c 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,21 @@ -# SkyHub Vue.js +# WebDollar Front-end [![Build Status](https://travis-ci.org/WebDollar/vue-Frontend.svg?branch=master)](https://travis-ci.org/WebDollar/vue-Frontend) -# Online Versions: +WebDollar VueJS 2 Front-end Integration -1. skyhub.me:80 for Vue.js Frontend -2. skyhub.me:4000 for Express Backend with Redis Database +DEMO: http://webdollar.io -**Gitter** - for communications with the SkyHub contributors: - -1. https://gitter.im/SkyHub/SkyHubRomania -2. https://gitter.im/SkyHub/Lobby -## 1 Installation +# Instructions to install -1. Install Node.js : https://nodejs.org/en/download/ -2. gitclone repository https://github.com/ibudisteanu/SkyHub-Frontend-React.js.git . You can also install and clone using **Git Desktop** -3. run in cmd/terminal `npm install` -3. In case there are missing node_modules in the package.json, you need to install the missing node_modules using the command line `npm install missing-node-module-name --save` (in case there are missing modules ) +`npm install` -4. Open cmd/Terminal - 1. `cd location\clone_repository\` - -In case you have problems and encounter errors installing SkyHub, please contact us in the Gitter!! - -## Build Setup - Running SkyHub locally -**Requires Node.js 7+** +#Instructions to run -``` bash -# install dependencies -npm install # or yarn +`npm run dev` -# serve in dev mode, with hot reload at localhost:8080 -npm run dev +### Instructions to deploy +`npm run build` -# build for production -npm run build +`npm run start` -# serve in production mode -npm start -``` -##### intellij WebStorm - -The "src" folder must be set as Resource Root. To do this Settings->Directories where you Set Directories "src" folder as "Resource Root" - - - - -# TO DOs - -##### Working components - - -1. Login -2. Register - 1. Facebook & Google integration -3. REST - 1. Socket.io - 1. Cookie Authentication JWT (using tokens) - 2. HTTP requests -5. Header Navigation Menu -6. Server Status Head Bar -7. Forums - 1. Preview Forums - 2. Preview Forum - 3. View Forum - 4. Add Forum - 5. Vuex Store -8. Topics - 1. Preview Topics - 2. Preview Topic - 3. View Topic - 4. Add Topic - 5. Vuex Store -9. Replies (part of) - 1. View Reply - 2. View Replies (All Replies) - 3. Add Reply - 4. Vuex Store -10. Attachments - 1. Image/Link Attachments - 2. Meta Scrapper (using Backend). It should scrape the content also on frontend too... to reduce the number of communications and work-load from the Backend -11. Voting - 1. View Vote -12. Notifications - 1. System Notifications (Notifications API) - 1. Asking Permisions - 2. Vuex Store - 3. Sticky Button for asking permissions - 2. SkyHub Notifications - - -## To DOs - -1. Topics - Edit Topics - Delete Topics -2. Replies - Edit Replies - Delete Replies -3. Voting - Add Voting (Up and Downs) - Unvote -4. WebSock (SocketWorker) on the Server Side Rendering as a fetching mechanism instead of using http requests - - -### Server Side Rendering component -https://github.com/egoist/vue-no-ssr - -## License - -CopyRight 2016-2017 by BIT TECHNOLOGIES RO - htttp://bit-technologies.net diff --git a/build/webpack.base.config.js b/build/webpack.base.config.js index 3579c743..301e7cb1 100644 --- a/build/webpack.base.config.js +++ b/build/webpack.base.config.js @@ -25,6 +25,7 @@ module.exports = { 'root': path.resolve(__dirname, '../'), 'public': path.resolve(__dirname, '../public'), 'src': path.resolve(__dirname + '/../src'), + 'consts': path.resolve(__dirname + '/../src/consts'), 'models': path.resolve(__dirname + '/../src/models'), 'client': path.resolve(__dirname + '/../src/client'), 'store': path.resolve(__dirname + '/../src/store'), @@ -44,7 +45,7 @@ module.exports = { test: /\.js$/, loader: 'babel-loader', //exclude: /node_modules/, - exclude: /node_modules(?!\/quill-image-drop-module|quill|quill-image-resize-module)/, + exclude: /node_modules/, }, { test: /\.(png|jpg|gif|svg)$/, diff --git a/build/webpack.client.config.js b/build/webpack.client.config.js index 3eea6946..c73c1e4a 100644 --- a/build/webpack.client.config.js +++ b/build/webpack.client.config.js @@ -13,14 +13,10 @@ const config = merge(base, { }, resolve: { alias: { - createApi: path.resolve(__dirname + '/../src/services/hackernews-api/create-api-server.js'), - communicationService: path.resolve(__dirname + '/../src/services/communication/client-socket/ClientSocket.service.js'), } }, plugins: [ new webpack.ProvidePlugin({ - 'window.Quill': 'quill/dist/quill.js', - 'Quill': 'quill/dist/quill.js', }), // strip dev-only code in Vue source new webpack.DefinePlugin({ @@ -51,32 +47,7 @@ const config = merge(base, { if (process.env.NODE_ENV === 'production') { config.plugins.push( - // auto generate service worker - new SWPrecachePlugin({ - cacheId: 'vue-hn', - filename: 'service-worker.js', - minify: true, - dontCacheBustUrlsMatching: /./, - staticFileGlobsIgnorePatterns: [/\.map$/, /\.json$/], - runtimeCaching: [ - { - urlPattern: '/', - handler: 'networkFirst' - }, - { - urlPattern: /\/(top|new|show|ask|jobs)/, - handler: 'networkFirst' - }, - { - urlPattern: '/item/:id', - handler: 'networkFirst' - }, - { - urlPattern: '/user/:id', - handler: 'networkFirst' - } - ] - }) + ) } diff --git a/build/webpack.server.config.js b/build/webpack.server.config.js index 5891d1a7..9fd13b90 100644 --- a/build/webpack.server.config.js +++ b/build/webpack.server.config.js @@ -36,4 +36,4 @@ module.exports = merge(base, { }), new VueSSRServerPlugin() ] -}) +}); diff --git a/certificates/readme.md b/certificates/readme.md new file mode 100644 index 00000000..e69de29b diff --git a/certificates/well-known/acme-challenge/ssl-challenge b/certificates/well-known/acme-challenge/ssl-challenge new file mode 100644 index 00000000..a6bb00af --- /dev/null +++ b/certificates/well-known/acme-challenge/ssl-challenge @@ -0,0 +1 @@ +In this directories must be the acme challenges \ No newline at end of file diff --git a/constants.js b/constants.js index 302e1bb1..168ac885 100644 --- a/constants.js +++ b/constants.js @@ -19,8 +19,6 @@ module.exports = BACKEND_URL : BACKEND_URL, BACKEND_WEBSITE_URL : BACKEND_WEBSITE_URL, - - SERVICE_HTTP_API_URL : trimSlash(BACKEND_WEBSITE_URL) + '/api/', SERVICE_WEBSOCK_URL : BACKEND_URL, diff --git a/manifest.json b/manifest.json index 5e30b54c..c7f7a939 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { - "name": "Vue Hackernews 2.0", - "short_name": "Vue HN", + "name": "WebDollar Currency of the Internet", + "short_name": "WebDollar", "icons": [{ "src": "/public/logo-120.png", "sizes": "120x120", diff --git a/package-lock.json b/package-lock.json index 22f70c7b..9aa94463 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { - "name": "vue-hackernews-2.0", - "requires": true, + "name": "@webdollar/front-webdollar", + "version": "0.0.2", "lockfileVersion": 1, "dependencies": { "abbrev": { @@ -12,11 +12,7 @@ "accepts": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", - "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", - "requires": { - "mime-types": "2.1.15", - "negotiator": "0.6.1" - } + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=" }, "acorn": { "version": "5.0.3", @@ -28,9 +24,6 @@ "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", "dev": true, - "requires": { - "acorn": "4.0.13" - }, "dependencies": { "acorn": { "version": "4.0.13", @@ -40,21 +33,10 @@ } } }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=" - }, "ajv": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", - "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=", - "requires": { - "co": "4.6.0", - "fast-deep-equal": "0.1.0", - "json-schema-traverse": "0.3.0", - "json-stable-stringify": "1.0.1" - } + "integrity": "sha1-wXNQJMXaLvdcwZBxMHPUTwmL9IY=" }, "ajv-keywords": { "version": "1.5.1", @@ -66,12 +48,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dev": true, - "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -89,10 +66,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } + "dev": true }, "ansi-html": { "version": "0.0.7", @@ -119,29 +93,19 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "dev": true, - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" - } + "dev": true }, "argparse": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } + "dev": true }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "dev": true, - "requires": { - "arr-flatten": "1.0.3" - } + "dev": true }, "arr-flatten": { "version": "1.0.3", @@ -164,10 +128,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "1.0.3" - } + "dev": true }, "array-uniq": { "version": "1.0.3", @@ -181,11 +142,6 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "arraybuffer.slice": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", - "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=" - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -196,29 +152,18 @@ "version": "4.9.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } + "dev": true }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } + "dev": true }, "async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/async/-/async-2.4.1.tgz", - "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=", - "requires": { - "lodash": "4.17.4" - } + "integrity": "sha1-YqVrJ5yYoR0JhwlqAcw+6463u9c=" }, "async-each": { "version": "1.0.1", @@ -230,250 +175,114 @@ "version": "6.7.7", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000693", - "normalize-range": "0.1.2", - "num2fraction": "1.2.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "axios": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/axios/-/axios-0.16.2.tgz", - "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=", - "requires": { - "follow-redirects": "1.2.4", - "is-buffer": "1.1.5" - } - }, - "babel": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel/-/babel-6.23.0.tgz", - "integrity": "sha1-0NHn2APpdHZb7qMjLU4VPA77kPQ=" + "integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=" }, "babel-code-frame": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.1" - } + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=" }, "babel-core": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", - "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.25.0", - "babel-helpers": "6.24.1", - "babel-messages": "6.23.0", - "babel-register": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "convert-source-map": "1.5.0", - "debug": "2.2.0", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.4", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } + "dev": true }, "babel-generator": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", - "dev": true, - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - } + "dev": true }, "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", - "requires": { - "babel-helper-explode-assignable-expression": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=" }, "babel-helper-call-delegate": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=" }, "babel-helper-define-map": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz", - "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } + "integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=" }, "babel-helper-explode-assignable-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=" }, "babel-helper-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "requires": { - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=" }, "babel-helper-get-function-arity": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=" }, "babel-helper-hoist-variables": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=" }, "babel-helper-optimise-call-expression": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=" }, "babel-helper-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz", - "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } + "integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=" }, "babel-helper-remap-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=" }, "babel-helper-replace-supers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "requires": { - "babel-helper-optimise-call-expression": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=" }, "babel-helpers": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", - "dev": true, - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } + "dev": true }, "babel-loader": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", "dev": true, - "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - }, "dependencies": { "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } + "dev": true } } }, "babel-messages": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=" }, "babel-plugin-check-es2015-constants": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=" }, "babel-plugin-syntax-async-functions": { "version": "6.13.0", @@ -509,482 +318,234 @@ "babel-plugin-transform-async-generator-functions": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-generators": "6.13.0", - "babel-runtime": "6.23.0" - } + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=" }, "babel-plugin-transform-async-to-generator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "requires": { - "babel-helper-remap-async-to-generator": "6.24.1", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.23.0" - } + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=" }, "babel-plugin-transform-es2015-arrow-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=" }, "babel-plugin-transform-es2015-block-scoped-functions": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=" }, "babel-plugin-transform-es2015-block-scoping": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz", - "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=", - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "lodash": "4.17.4" - } + "integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=" }, "babel-plugin-transform-es2015-classes": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", - "requires": { - "babel-helper-define-map": "6.24.1", - "babel-helper-function-name": "6.24.1", - "babel-helper-optimise-call-expression": "6.24.1", - "babel-helper-replace-supers": "6.24.1", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=" }, "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=" }, "babel-plugin-transform-es2015-destructuring": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=" }, "babel-plugin-transform-es2015-duplicate-keys": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=" }, "babel-plugin-transform-es2015-for-of": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=" }, "babel-plugin-transform-es2015-function-name": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", - "requires": { - "babel-helper-function-name": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=" }, "babel-plugin-transform-es2015-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=" }, "babel-plugin-transform-es2015-modules-amd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=" }, "babel-plugin-transform-es2015-modules-commonjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz", - "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=", - "requires": { - "babel-plugin-transform-strict-mode": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=" }, "babel-plugin-transform-es2015-modules-systemjs": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "requires": { - "babel-helper-hoist-variables": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=" }, "babel-plugin-transform-es2015-modules-umd": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0" - } + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=" }, "babel-plugin-transform-es2015-object-super": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "requires": { - "babel-helper-replace-supers": "6.24.1", - "babel-runtime": "6.23.0" - } + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=" }, "babel-plugin-transform-es2015-parameters": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", - "requires": { - "babel-helper-call-delegate": "6.24.1", - "babel-helper-get-function-arity": "6.24.1", - "babel-runtime": "6.23.0", - "babel-template": "6.25.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=" }, "babel-plugin-transform-es2015-shorthand-properties": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=" }, "babel-plugin-transform-es2015-spread": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=" }, "babel-plugin-transform-es2015-sticky-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=" }, "babel-plugin-transform-es2015-template-literals": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=" }, "babel-plugin-transform-es2015-typeof-symbol": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "requires": { - "babel-runtime": "6.23.0" - } + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=" }, "babel-plugin-transform-es2015-unicode-regex": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "requires": { - "babel-helper-regex": "6.24.1", - "babel-runtime": "6.23.0", - "regexpu-core": "2.0.0" - } + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=" }, "babel-plugin-transform-exponentiation-operator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.24.1", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.23.0" - } + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=" }, "babel-plugin-transform-object-rest-spread": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.23.0.tgz", - "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=", - "requires": { - "babel-plugin-syntax-object-rest-spread": "6.13.0", - "babel-runtime": "6.23.0" - } + "integrity": "sha1-h11ryb52HFiirj/u5dxIldjH+SE=" }, "babel-plugin-transform-regenerator": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz", - "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=", - "requires": { - "regenerator-transform": "0.9.11" - } + "integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=" + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true }, "babel-plugin-transform-strict-mode": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0" - } + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=" }, "babel-polyfill": { "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "requires": { - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" - } + "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=" }, "babel-preset-env": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.5.2.tgz", "integrity": "sha1-zUrpCm6Utwn5c3SzPl+LmDVWre8=", "dev": true, - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1", - "browserslist": "2.1.5", - "invariant": "2.2.2", - "semver": "5.3.0" - }, "dependencies": { "browserslist": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.1.5.tgz", "integrity": "sha1-6IJVDfPRzW1IHBo+ADjyuvE6RxE=", - "dev": true, - "requires": { - "caniuse-lite": "1.0.30000693", - "electron-to-chromium": "1.3.14" - } + "dev": true } } }, "babel-preset-es2015": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.24.1", - "babel-plugin-transform-es2015-classes": "6.24.1", - "babel-plugin-transform-es2015-computed-properties": "6.24.1", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.24.1", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.24.1", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "6.24.1", - "babel-plugin-transform-es2015-modules-umd": "6.24.1", - "babel-plugin-transform-es2015-object-super": "6.24.1", - "babel-plugin-transform-es2015-parameters": "6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "6.24.1", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.24.1", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.24.1", - "babel-plugin-transform-regenerator": "6.24.1" - } + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=" }, "babel-preset-es2017": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-es2017/-/babel-preset-es2017-6.24.1.tgz", "integrity": "sha1-WXvq37n38gi8/YoS6bKym4svFNE=", - "dev": true, - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.24.1" - } + "dev": true }, "babel-preset-stage-3": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", - "requires": { - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-generator-functions": "6.24.1", - "babel-plugin-transform-async-to-generator": "6.24.1", - "babel-plugin-transform-exponentiation-operator": "6.24.1", - "babel-plugin-transform-object-rest-spread": "6.23.0" - } + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=" }, "babel-register": { "version": "6.24.1", "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", - "dev": true, - "requires": { - "babel-core": "6.25.0", - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.15" - } + "dev": true }, "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "requires": { - "core-js": "2.4.1", - "regenerator-runtime": "0.10.5" + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" + } } }, "babel-template": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", - "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.25.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "lodash": "4.17.4" - } + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=" }, "babel-traverse": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", - "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "babylon": "6.17.4", - "debug": "2.2.0", - "globals": "9.18.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=" }, "babel-types": { "version": "6.25.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", - "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", - "requires": { - "babel-runtime": "6.23.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.3" - } + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=" }, "babylon": { "version": "6.17.4", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==" }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=" - }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base64-arraybuffer": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", - "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=" - }, "base64-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==", "dev": true }, - "better-assert": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", - "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", - "requires": { - "callsite": "1.0.0" - } - }, "big.js": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", @@ -996,11 +557,6 @@ "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", "dev": true }, - "blob": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", - "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=" - }, "bluebird": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", @@ -1017,39 +573,19 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", - "dev": true, - "requires": { - "ansi-align": "1.1.0", - "camelcase": "2.1.1", - "chalk": "1.1.3", - "cli-boxes": "1.0.0", - "filled-array": "1.1.0", - "object-assign": "4.1.1", - "repeating": "2.0.1", - "string-width": "1.0.2", - "widest-line": "1.0.0" - } + "dev": true }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } + "dev": true }, "braces": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "dev": true, - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } + "dev": true }, "brorand": { "version": "1.1.0", @@ -1061,91 +597,49 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", - "dev": true, - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.3", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "inherits": "2.0.3" - } + "dev": true }, "browserify-cipher": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "dev": true, - "requires": { - "browserify-aes": "1.0.6", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.0" - } + "dev": true }, "browserify-des": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "dev": true, - "requires": { - "cipher-base": "1.0.3", - "des.js": "1.0.0", - "inherits": "2.0.3" - } + "dev": true }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "randombytes": "2.0.5" - } + "dev": true }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } + "dev": true }, "browserify-zlib": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "dev": true, - "requires": { - "pako": "0.2.9" - } + "dev": true }, "browserslist": { "version": "1.7.7", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "dev": true, - "requires": { - "caniuse-db": "1.0.30000693", - "electron-to-chromium": "1.3.14" - } + "dev": true }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, - "requires": { - "base64-js": "1.2.1", - "ieee754": "1.1.8", - "isarray": "1.0.0" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -1178,11 +672,6 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.3.0.tgz", "integrity": "sha1-1baAoWW2IBc5rLYRVCqrwtjOsHA=" }, - "callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=" - }, "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", @@ -1193,23 +682,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "dev": true, - "requires": { - "camelcase": "2.1.1", - "map-obj": "1.0.1" - } + "dev": true }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-db": "1.0.30000693", - "lodash.memoize": "4.1.2", - "lodash.uniq": "4.5.0" - } + "dev": true }, "caniuse-db": { "version": "1.0.30000693", @@ -1233,57 +712,57 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dev": true, - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } + "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" + }, + "chart.js": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.2.tgz", + "integrity": "sha512-90wl3V9xRZ8tnMvMlpcW+0Yg13BelsGS9P9t0ClaDxv/hdypHDr/YAGf+728m11P5ljwyB0ZHfPKCapZFqSqYA==" + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } } }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==" + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } + "dev": true }, "cipher-base": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } + "dev": true }, "clap": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", - "dev": true, - "requires": { - "chalk": "1.1.3" - } + "dev": true }, "cli-boxes": { "version": "1.0.0", @@ -1295,12 +774,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dev": true, - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } + "dev": true }, "clone": { "version": "1.0.2", @@ -1317,10 +791,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.3.tgz", "integrity": "sha1-G1Sl4dz3fJkEVdTe6pjFZEFtyJM=", - "dev": true, - "requires": { - "q": "1.5.0" - } + "dev": true }, "code-point-at": { "version": "1.1.0", @@ -1332,47 +803,30 @@ "version": "0.11.4", "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", - "dev": true, - "requires": { - "clone": "1.0.2", - "color-convert": "1.9.0", - "color-string": "0.3.0" - } + "dev": true }, "color-convert": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", - "dev": true, - "requires": { - "color-name": "1.1.2" - } + "dev": true }, "color-name": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.2.tgz", - "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=", - "dev": true + "integrity": "sha1-XIq3K2S9IhXWF66VWeuxSEdc+Y0=" }, "color-string": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", - "dev": true, - "requires": { - "color-name": "1.1.2" - } + "dev": true }, "colormin": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", - "dev": true, - "requires": { - "color": "0.11.4", - "css-color-names": "0.0.4", - "has": "1.0.1" - } + "dev": true }, "colors": { "version": "1.1.2", @@ -1383,10 +837,7 @@ "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "requires": { - "graceful-readlink": "1.0.1" - } + "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=" }, "commondir": { "version": "1.0.1", @@ -1394,41 +845,15 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=" - }, - "component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=" - }, "compressible": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", - "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", - "requires": { - "mime-db": "1.27.0" - } + "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=" }, "compression": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.2.tgz", - "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=", - "requires": { - "accepts": "1.3.3", - "bytes": "2.3.0", - "compressible": "2.0.10", - "debug": "2.2.0", - "on-headers": "1.0.1", - "vary": "1.1.1" - } + "integrity": "sha1-zOsSHsydCcUtetDDNQ6pPd1AK8M=" }, "concat-map": { "version": "0.0.1", @@ -1440,46 +865,25 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.11.tgz", "integrity": "sha1-q6CXR9++TD5w52am5BWG4YWfxvI=", - "dev": true, - "requires": { - "ini": "1.3.4", - "proto-list": "1.2.4" - } + "dev": true }, "configstore": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", - "dev": true, - "requires": { - "dot-prop": "3.0.0", - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1", - "os-tmpdir": "1.0.2", - "osenv": "0.1.4", - "uuid": "2.0.3", - "write-file-atomic": "1.3.4", - "xdg-basedir": "2.0.0" - } + "dev": true }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "0.1.4" - } + "dev": true }, "consolidate": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", - "dev": true, - "requires": { - "bluebird": "3.5.0" - } + "dev": true }, "constants-browserify": { "version": "1.0.0", @@ -1511,11 +915,7 @@ "cookie-parser": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.3.tgz", - "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=", - "requires": { - "cookie": "0.3.1", - "cookie-signature": "1.0.6" - } + "integrity": "sha1-D+MfoZ0AC5X0qt8fU/3CuKIDuqU=" }, "cookie-signature": { "version": "1.0.6", @@ -1525,11 +925,7 @@ "cookies": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.0.tgz", - "integrity": "sha1-C8lh2RDDUlSYD8fJ7/XaEgEbvwA=", - "requires": { - "depd": "1.1.0", - "keygrip": "1.0.1" - } + "integrity": "sha1-C8lh2RDDUlSYD8fJ7/XaEgEbvwA=" }, "core-js": { "version": "2.4.1", @@ -1541,20 +937,16 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz", + "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=" + }, "cosmiconfig": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.1.3.tgz", "integrity": "sha1-lSdx6w3dwcs/ovb75RpSLpOz7go=", "dev": true, - "requires": { - "is-directory": "0.3.1", - "js-yaml": "3.7.0", - "minimist": "1.2.0", - "object-assign": "4.1.1", - "os-homedir": "1.0.2", - "parse-json": "2.2.0", - "require-from-string": "1.2.1" - }, "dependencies": { "minimist": { "version": "1.2.0", @@ -1568,83 +960,46 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "elliptic": "6.4.0" - } + "dev": true }, "create-error-class": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", - "dev": true, - "requires": { - "capture-stack-trace": "1.0.0" - } + "dev": true }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", - "dev": true, - "requires": { - "cipher-base": "1.0.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "sha.js": "2.4.8" - } + "dev": true }, "create-hmac": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", - "dev": true, - "requires": { - "cipher-base": "1.0.3", - "create-hash": "1.1.3", - "inherits": "2.0.3", - "ripemd160": "2.0.1", - "safe-buffer": "5.0.1", - "sha.js": "2.4.8" - } + "dev": true }, "cross-env": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-4.0.0.tgz", - "integrity": "sha1-Fgg4YtCCdaRiiwskOxIb7apV3YA=", - "requires": { - "cross-spawn": "5.1.0", - "is-windows": "1.0.1" - } + "integrity": "sha1-Fgg4YtCCdaRiiwskOxIb7apV3YA=" }, "cross-spawn": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "requires": { - "lru-cache": "4.1.1", - "shebang-command": "1.2.0", - "which": "1.2.14" - } + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=" + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" }, "crypto-browserify": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", - "dev": true, - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.12", - "public-encrypt": "4.0.0", - "randombytes": "2.0.5" - } + "dev": true }, "css-color-names": { "version": "0.0.4", @@ -1657,22 +1012,6 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz", "integrity": "sha1-bPNXkZLONV6LONX0Ldeh8uyJjQ8=", "dev": true, - "requires": { - "babel-code-frame": "6.22.0", - "css-selector-tokenizer": "0.7.0", - "cssnano": "3.10.0", - "icss-utils": "2.1.0", - "loader-utils": "1.1.0", - "lodash.camelcase": "4.3.0", - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-modules-extract-imports": "1.1.0", - "postcss-modules-local-by-default": "1.2.0", - "postcss-modules-scope": "1.1.0", - "postcss-modules-values": "1.3.0", - "postcss-value-parser": "3.3.0", - "source-list-map": "0.1.8" - }, "dependencies": { "source-list-map": { "version": "0.1.8", @@ -1693,22 +1032,12 @@ "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", "dev": true, - "requires": { - "cssesc": "0.1.0", - "fastparse": "1.1.1", - "regexpu-core": "1.0.0" - }, "dependencies": { "regexpu-core": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } + "dev": true } } }, @@ -1722,60 +1051,19 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", - "dev": true, - "requires": { - "autoprefixer": "6.7.7", - "decamelize": "1.2.0", - "defined": "1.0.0", - "has": "1.0.1", - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-calc": "5.3.1", - "postcss-colormin": "2.2.2", - "postcss-convert-values": "2.6.1", - "postcss-discard-comments": "2.0.4", - "postcss-discard-duplicates": "2.1.0", - "postcss-discard-empty": "2.1.0", - "postcss-discard-overridden": "0.1.1", - "postcss-discard-unused": "2.2.3", - "postcss-filter-plugins": "2.0.2", - "postcss-merge-idents": "2.1.7", - "postcss-merge-longhand": "2.0.2", - "postcss-merge-rules": "2.1.2", - "postcss-minify-font-values": "1.0.5", - "postcss-minify-gradients": "1.0.5", - "postcss-minify-params": "1.2.2", - "postcss-minify-selectors": "2.1.1", - "postcss-normalize-charset": "1.1.1", - "postcss-normalize-url": "3.0.8", - "postcss-ordered-values": "2.2.3", - "postcss-reduce-idents": "2.4.0", - "postcss-reduce-initial": "1.0.1", - "postcss-reduce-transforms": "1.0.4", - "postcss-svgo": "2.1.6", - "postcss-unique-selectors": "2.0.2", - "postcss-value-parser": "3.3.0", - "postcss-zindex": "2.2.0" - } + "dev": true }, "csso": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", - "dev": true, - "requires": { - "clap": "1.2.0", - "source-map": "0.5.6" - } + "dev": true }, "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "1.0.2" - } + "dev": true }, "date-now": { "version": "0.1.4", @@ -1792,10 +1080,7 @@ "debug": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "requires": { - "ms": "0.7.1" - } + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=" }, "decamelize": { "version": "1.2.0", @@ -1824,16 +1109,7 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" - } + "dev": true }, "delegates": { "version": "1.0.0", @@ -1849,11 +1125,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } + "dev": true }, "destroy": { "version": "1.0.4", @@ -1864,30 +1136,18 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } + "dev": true }, "diffie-hellman": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "miller-rabin": "4.0.0", - "randombytes": "2.0.5" - } + "dev": true }, "dom-serializer": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, "dependencies": { "domelementtype": { "version": "1.1.3", @@ -1900,10 +1160,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/dom-urls/-/dom-urls-1.1.0.tgz", "integrity": "sha1-AB3fgWKM0ecGElxxdvU8zsVdkY4=", - "dev": true, - "requires": { - "urijs": "1.18.10" - } + "dev": true }, "domain-browser": { "version": "1.1.7", @@ -1919,33 +1176,18 @@ "domhandler": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", - "requires": { - "domelementtype": "1.3.0" - } + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=" }, "domutils": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=" }, "dot-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", - "dev": true, - "requires": { - "is-obj": "1.0.1" - } - }, - "dropzone": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.1.1.tgz", - "integrity": "sha1-n1sC/EqoTmRm4Ea6dwvIJ3bqSd4=" + "dev": true }, "duplexer": { "version": "0.1.1", @@ -1956,31 +1198,19 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", - "dev": true, - "requires": { - "readable-stream": "2.3.2" - } + "dev": true }, "editorconfig": { "version": "0.13.2", "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.13.2.tgz", "integrity": "sha1-jleSbZ7mmrbLmZ8CfCFxRnrM6zU=", "dev": true, - "requires": { - "bluebird": "3.5.0", - "commander": "2.9.0", - "lru-cache": "3.2.0", - "sigmund": "1.0.1" - }, "dependencies": { "lru-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", "integrity": "sha1-cXibO39Tmb7IVl3aOKow0qCX7+4=", - "dev": true, - "requires": { - "pseudomap": "1.0.2" - } + "dev": true } } }, @@ -2004,16 +1234,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "brorand": "1.1.0", - "hash.js": "1.1.1", - "hmac-drbg": "1.0.1", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } + "dev": true }, "emojis-list": { "version": "2.1.0", @@ -2025,63 +1246,11 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" }, - "engine.io-client": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.1.tgz", - "integrity": "sha1-QVqYUrrbFPoAj6PvHjFgjbZ2EyU=", - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "2.6.8", - "engine.io-parser": "2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parsejson": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "2.3.1", - "xmlhttprequest-ssl": "1.5.3", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "engine.io-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.1.tgz", - "integrity": "sha1-4Ps/DgRi9/WLt3waUun1p+JuRmg=", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "0.0.6", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.4", - "has-binary2": "1.0.2" - } - }, "enhanced-resolve": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.6" - } + "dev": true }, "entities": { "version": "1.1.1", @@ -2092,19 +1261,13 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "dev": true, - "requires": { - "prr": "0.0.0" - } + "dev": true }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, - "requires": { - "is-arrayish": "0.2.1" - } + "dev": true }, "error-inject": { "version": "1.0.0", @@ -2115,10 +1278,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.1.tgz", "integrity": "sha1-oyArj7AxFKqbQKDjZp5IsrZaAQo=", - "dev": true, - "requires": { - "stackframe": "1.0.3" - } + "dev": true }, "es6-promise": { "version": "4.1.0", @@ -2151,11 +1311,6 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=" }, - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" - }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -2166,71 +1321,29 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "dev": true, - "requires": { - "create-hash": "1.1.3" - } + "dev": true }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "dev": true, - "requires": { - "is-posix-bracket": "0.1.1" - } + "dev": true }, "expand-range": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "dev": true, - "requires": { - "fill-range": "2.2.3" - } + "dev": true }, "express": { "version": "4.15.3", "resolved": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", - "requires": { - "accepts": "1.3.3", - "array-flatten": "1.1.1", - "content-disposition": "0.5.2", - "content-type": "1.0.2", - "cookie": "0.3.1", - "cookie-signature": "1.0.6", - "debug": "2.6.7", - "depd": "1.1.0", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "finalhandler": "1.0.3", - "fresh": "0.5.0", - "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "path-to-regexp": "0.1.7", - "proxy-addr": "1.1.4", - "qs": "6.4.0", - "range-parser": "1.2.0", - "send": "0.15.3", - "serve-static": "1.12.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1", - "type-is": "1.6.15", - "utils-merge": "1.0.0", - "vary": "1.1.1" - }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "requires": { - "ms": "2.0.0" - } + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=" }, "ms": { "version": "2.0.0", @@ -2239,41 +1352,22 @@ } } }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" - }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } + "dev": true }, "extract-text-webpack-plugin": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", - "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=", - "requires": { - "async": "2.4.1", - "loader-utils": "1.1.0", - "schema-utils": "0.3.0", - "webpack-sources": "1.0.1" - } + "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=" }, "fast-deep-equal": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz", "integrity": "sha1-XG9FmaumszPuM0Li7ZeGcvEAH40=" }, - "fast-diff": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", - "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=" - }, "fastparse": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", @@ -2284,10 +1378,7 @@ "version": "0.11.2", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", "integrity": "sha512-N+uhF3mswIFeziHQjGScJ/yHXYt3DiLBeC+9vWW+WjUBiClMSOlV1YrXQi+7KM2aA3Rn4Bybgv+uXFQbfkzpvg==", - "dev": true, - "requires": { - "loader-utils": "1.1.0" - } + "dev": true }, "filename-regex": { "version": "2.0.1", @@ -2304,14 +1395,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "dev": true, - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.7", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } + "dev": true }, "filled-array": { "version": "1.1.0", @@ -2323,23 +1407,11 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", - "requires": { - "debug": "2.6.7", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.1", - "statuses": "1.3.1", - "unpipe": "1.0.0" - }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "requires": { - "ms": "2.0.0" - } + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=" }, "ms": { "version": "2.0.0", @@ -2352,157 +1424,13 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "dev": true, - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } + "dev": true }, "find-up": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "firebase": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-3.9.0.tgz", - "integrity": "sha1-xCN/UPWO6yUIGxg51svxdfj37Zs=", - "requires": { - "dom-storage": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.0.2.tgz", - "faye-websocket": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.3.tgz", - "jsonwebtoken": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.0.tgz", - "promise-polyfill": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.0.2.tgz", - "xmlhttprequest": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz" - }, - "dependencies": { - "base64url": { - "version": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs=" - }, - "buffer-equal-constant-time": { - "version": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "dom-storage": { - "version": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.0.2.tgz", - "integrity": "sha1-7RfL9oq9EOCu+BgnE+KXxeS1ALA=" - }, - "ecdsa-sig-formatter": { - "version": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", - "integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=", - "requires": { - "base64url": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz" - } - }, - "faye-websocket": { - "version": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.3.tgz", - "integrity": "sha1-SCpQWw3wrmJrlphm0710DNuWLoM=", - "requires": { - "websocket-driver": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz" - } - }, - "hoek": { - "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, - "isemail": { - "version": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", - "integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo=" - }, - "joi": { - "version": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", - "integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=", - "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "isemail": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz", - "moment": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "topo": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz" - } - }, - "jsonwebtoken": { - "version": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.0.tgz", - "integrity": "sha1-UVvyu6Bw7GFbrZf9LpRQJ+tHaUY=", - "requires": { - "joi": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz", - "jws": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", - "lodash.once": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "ms": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" - } - }, - "jwa": { - "version": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", - "integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=", - "requires": { - "base64url": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "buffer-equal-constant-time": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "ecdsa-sig-formatter": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz", - "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz" - } - }, - "jws": { - "version": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz", - "integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=", - "requires": { - "base64url": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz", - "jwa": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz", - "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz" - } - }, - "lodash.once": { - "version": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "moment": { - "version": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" - }, - "ms": { - "version": "https://registry.npmjs.org/ms/-/ms-0.7.3.tgz", - "integrity": "sha1-cIFVpeROM/X9D8U+gdDUCpG+H/8=" - }, - "promise-polyfill": { - "version": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.0.2.tgz", - "integrity": "sha1-2chtPcTcLfkBboiUbe/Wm0m0EWI=" - }, - "safe-buffer": { - "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", - "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=" - }, - "topo": { - "version": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz", - "integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=", - "requires": { - "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - } - }, - "websocket-driver": { - "version": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "requires": { - "websocket-extensions": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz" - } - }, - "websocket-extensions": { - "version": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", - "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=" - }, - "xmlhttprequest": { - "version": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" - }, - "xtend": { - "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - } - } + "dev": true }, "flatten": { "version": "1.0.2", @@ -2514,17 +1442,11 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.4.tgz", "integrity": "sha512-Suw6KewLV2hReSyEOeql+UUkBVyiBm3ok1VPrVFRZnQInWpdoZbbiG5i8aJVSjTr0yQ4Ava0Sh6/joCg1Brdqw==", - "requires": { - "debug": "2.6.8" - }, "dependencies": { "debug": { "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=" }, "ms": { "version": "2.0.0", @@ -2543,10 +1465,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } + "dev": true }, "forwarded": { "version": "0.1.0", @@ -2562,12 +1481,7 @@ "version": "1.6.1", "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.6.1.tgz", "integrity": "sha1-4yeBxHIvVGoGqbXXp8+ihSA3XXA=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "error-stack-parser": "2.0.1", - "string-length": "1.0.1" - } + "dev": true }, "fs.realpath": { "version": "1.0.0", @@ -2581,11 +1495,6 @@ "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", "dev": true }, - "fuse.js": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-2.7.4.tgz", - "integrity": "sha1-luQg/efvARrEnCWKYhMU/ldlNvk=" - }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -2602,34 +1511,19 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } + "dev": true }, "glob-base": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "dev": true, - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } + "dev": true }, "glob-parent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "dev": true, - "requires": { - "is-glob": "2.0.1" - } + "dev": true }, "globals": { "version": "9.18.0", @@ -2640,38 +1534,13 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.2", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } + "dev": true }, "got": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", - "dev": true, - "requires": { - "create-error-class": "3.0.2", - "duplexer2": "0.1.4", - "is-redirect": "1.0.0", - "is-retry-allowed": "1.1.0", - "is-stream": "1.1.0", - "lowercase-keys": "1.0.0", - "node-status-codes": "1.0.0", - "object-assign": "4.1.1", - "parse-json": "2.2.0", - "pinkie-promise": "2.0.1", - "read-all-stream": "3.1.0", - "readable-stream": "2.3.2", - "timed-out": "3.1.3", - "unzip-response": "1.0.2", - "url-parse-lax": "1.0.0" - } + "dev": true }, "graceful-fs": { "version": "4.1.11", @@ -2687,47 +1556,18 @@ "gzip-size": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", - "requires": { - "duplexer": "0.1.1" - } + "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=" }, "has": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, - "requires": { - "function-bind": "1.1.0" - } + "dev": true }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-binary2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.2.tgz", - "integrity": "sha1-6D26SfC5vk0CbSc2U1DZ8D9Uvpg=", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=" + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" }, "has-flag": { "version": "1.0.0", @@ -2739,10 +1579,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } + "dev": true }, "hash-sum": { "version": "1.0.2", @@ -2753,11 +1590,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.1.tgz", "integrity": "sha512-I2TYCUjYQMmqmRMCp6jKMC5bvdXxGIZ/heITRR/0F1u0OP920ImEj/cXt3WgcTKBnNYGn7enxUzdai3db829JA==", - "dev": true, - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } + "dev": true }, "he": { "version": "1.1.1", @@ -2768,22 +1601,13 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "1.1.1", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } + "dev": true }, "home-or-tmp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } + "dev": true }, "hosted-git-info": { "version": "2.4.2", @@ -2806,35 +1630,22 @@ "htmlparser2": { "version": "3.9.2", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.6.2", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.2" - } + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=" }, "http-assert": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.3.0.tgz", - "integrity": "sha1-oxpc+IyHPsu1eWkH1NbxMujAHko=", - "requires": { - "deep-equal": "1.0.1", - "http-errors": "1.6.1" - } + "integrity": "sha1-oxpc+IyHPsu1eWkH1NbxMujAHko=" }, "http-errors": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", - "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", - "requires": { - "depd": "1.1.0", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - } + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=" + }, + "https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", + "integrity": "sha1-PDfHrhqO65ZpBKKtHpdaGUt+06Q=" }, "https-browserify": { "version": "0.0.1", @@ -2853,29 +1664,18 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", "dev": true, - "requires": { - "postcss": "6.0.2" - }, "dependencies": { "postcss": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "source-map": "0.5.6", - "supports-color": "3.2.3" - } + "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "dev": true } } }, @@ -2895,10 +1695,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "2.0.1" - } + "dev": true }, "indexes-of": { "version": "1.0.1", @@ -2909,17 +1706,14 @@ "indexof": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } + "dev": true }, "inherits": { "version": "2.0.3", @@ -2941,10 +1735,7 @@ "invariant": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "requires": { - "loose-envify": "1.3.1" - } + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=" }, "invert-kv": { "version": "1.0.0", @@ -2973,10 +1764,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "1.8.0" - } + "dev": true }, "is-buffer": { "version": "1.1.5", @@ -2987,10 +1775,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "dev": true, - "requires": { - "builtin-modules": "1.1.1" - } + "dev": true }, "is-directory": { "version": "0.3.1", @@ -3008,10 +1793,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "dev": true, - "requires": { - "is-primitive": "2.0.0" - } + "dev": true }, "is-extendable": { "version": "0.1.1", @@ -3029,19 +1811,13 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } + "dev": true }, "is-generator-function": { "version": "1.0.6", @@ -3052,10 +1828,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "dev": true, - "requires": { - "is-extglob": "1.0.0" - } + "dev": true }, "is-npm": { "version": "1.0.0", @@ -3067,10 +1840,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "dev": true, - "requires": { - "kind-of": "3.2.2" - } + "dev": true }, "is-obj": { "version": "1.0.1", @@ -3088,19 +1858,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "dev": true, - "requires": { - "is-path-inside": "1.0.0" - } + "dev": true }, "is-path-inside": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "dev": true, - "requires": { - "path-is-inside": "1.0.2" - } + "dev": true }, "is-plain-obj": { "version": "1.1.0", @@ -3142,10 +1906,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", - "dev": true, - "requires": { - "html-comment-regex": "1.1.1" - } + "dev": true }, "is-utf8": { "version": "0.2.1", @@ -3174,9 +1935,6 @@ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, - "requires": { - "isarray": "1.0.0" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -3196,13 +1954,7 @@ "version": "1.6.14", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.6.14.tgz", "integrity": "sha1-07j3Mi0CuSd9WL0jgmTDJ+WARM0=", - "dev": true, - "requires": { - "config-chain": "1.1.11", - "editorconfig": "0.13.2", - "mkdirp": "0.5.1", - "nopt": "3.0.6" - } + "dev": true }, "js-tokens": { "version": "3.0.1", @@ -3213,11 +1965,7 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "2.7.3" - } + "dev": true }, "jsesc": { "version": "1.3.0", @@ -3239,10 +1987,7 @@ "json-stable-stringify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" - } + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=" }, "json5": { "version": "0.5.1", @@ -3257,10 +2002,7 @@ "jsonp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz", - "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=", - "requires": { - "debug": "2.2.0" - } + "integrity": "sha1-pltPoPEL2nGaBUQep7lMVfPhW64=" }, "keygrip": { "version": "1.0.1", @@ -3271,41 +2013,12 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } + "dev": true }, "koa": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/koa/-/koa-2.3.0.tgz", - "integrity": "sha1-nh6OTaQBg5xXuFJ+rcV/dhJ1Vac=", - "requires": { - "accepts": "1.3.3", - "content-disposition": "0.5.2", - "content-type": "1.0.2", - "cookies": "0.7.0", - "debug": "2.2.0", - "delegates": "1.0.0", - "depd": "1.1.0", - "destroy": "1.0.4", - "error-inject": "1.0.0", - "escape-html": "1.0.3", - "fresh": "0.5.0", - "http-assert": "1.3.0", - "http-errors": "1.6.1", - "is-generator-function": "1.0.6", - "koa-compose": "4.0.0", - "koa-convert": "1.2.0", - "koa-is-json": "1.0.0", - "mime-types": "2.1.15", - "on-finished": "2.3.0", - "only": "0.0.2", - "parseurl": "1.3.1", - "statuses": "1.3.1", - "type-is": "1.6.15", - "vary": "1.1.1" - } + "integrity": "sha1-nh6OTaQBg5xXuFJ+rcV/dhJ1Vac=" }, "koa-compose": { "version": "4.0.0", @@ -3316,18 +2029,11 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-1.2.0.tgz", "integrity": "sha1-2kCHXfSd4FOQmNFwC1CCDOvNIdA=", - "requires": { - "co": "4.6.0", - "koa-compose": "3.2.1" - }, "dependencies": { "koa-compose": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-3.2.1.tgz", - "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=", - "requires": { - "any-promise": "1.3.0" - } + "integrity": "sha1-qFzLQLfZhtjlo0Wzoazo6rz1Tec=" } } }, @@ -3340,10 +2046,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", - "dev": true, - "requires": { - "package-json": "2.4.0" - } + "dev": true }, "lazy-cache": { "version": "1.0.4", @@ -3361,23 +2064,13 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "1.0.0" - } + "dev": true }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } + "dev": true }, "loader-runner": { "version": "2.3.0", @@ -3388,12 +2081,7 @@ "loader-utils": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1" - } + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=" }, "lodash": { "version": "4.17.4", @@ -3432,19 +2120,12 @@ "lodash.template": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", - "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", - "requires": { - "lodash._reinterpolate": "3.0.0", - "lodash.templatesettings": "4.1.0" - } + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=" }, "lodash.templatesettings": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", - "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", - "requires": { - "lodash._reinterpolate": "3.0.0" - } + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=" }, "lodash.uniq": { "version": "4.5.0", @@ -3460,20 +2141,13 @@ "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.1" - } + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=" }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "0.4.1", - "signal-exit": "3.0.2" - } + "dev": true }, "lowercase-keys": { "version": "1.0.0", @@ -3484,11 +2158,7 @@ "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", - "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", - "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" - } + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==" }, "macaddress": { "version": "0.2.8", @@ -3508,6 +2178,11 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, + "md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha1-U6s41f48iJG6RlMp6iP6wFQBJvk=" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -3517,29 +2192,13 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "0.1.4", - "readable-stream": "2.3.2" - } + "dev": true }, "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", "dev": true, - "requires": { - "camelcase-keys": "2.1.0", - "decamelize": "1.2.0", - "loud-rejection": "1.6.0", - "map-obj": "1.0.1", - "minimist": "1.2.0", - "normalize-package-data": "2.3.8", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "redent": "1.0.0", - "trim-newlines": "1.0.0" - }, "dependencies": { "minimist": { "version": "1.2.0", @@ -3563,32 +2222,13 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "dev": true, - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.1", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.2.2", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } + "dev": true }, "miller-rabin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "brorand": "1.1.0" - } + "dev": true }, "mime": { "version": "1.3.4", @@ -3603,10 +2243,7 @@ "mime-types": { "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", - "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "requires": { - "mime-db": "1.27.0" - } + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=" }, "minimalistic-assert": { "version": "1.0.0", @@ -3624,10 +2261,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } + "dev": true }, "minimist": { "version": "0.0.8", @@ -3637,10 +2271,12 @@ "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" + }, + "moment": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", + "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==" }, "ms": { "version": "0.7.1", @@ -3657,31 +2293,6 @@ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", "dev": true, - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.10", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.3.2", - "stream-browserify": "2.0.1", - "stream-http": "2.7.2", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.2", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - }, "dependencies": { "string_decoder": { "version": "0.10.31", @@ -3701,31 +2312,19 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1.1.0" - } + "dev": true }, "normalize-package-data": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.8.tgz", "integrity": "sha1-2Bntoqne29H/pWPqQHHZNngilbs=", - "dev": true, - "requires": { - "hosted-git-info": "2.4.2", - "is-builtin-module": "1.0.0", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.1" - } + "dev": true }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "1.0.2" - } + "dev": true }, "normalize-range": { "version": "0.1.2", @@ -3737,13 +2336,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "prepend-http": "1.0.4", - "query-string": "4.3.4", - "sort-keys": "1.1.2" - } + "dev": true }, "num2fraction": { "version": "1.2.2", @@ -3760,31 +2353,18 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-component": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", - "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "dev": true, - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } + "dev": true }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" }, "on-headers": { "version": "1.0.1", @@ -3795,10 +2375,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } + "dev": true }, "only": { "version": "0.0.2", @@ -3826,38 +2403,24 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "1.0.0" - } + "dev": true }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } + "dev": true }, "package-json": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", - "dev": true, - "requires": { - "got": "5.7.1", - "registry-auth-token": "3.3.1", - "registry-url": "3.1.0", - "semver": "5.3.0" - } + "dev": true }, "pako": { "version": "0.2.9", @@ -3865,68 +2428,23 @@ "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", "dev": true }, - "parchment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.0.tgz", - "integrity": "sha1-x5OHqA/Er0uolHuU/FWoNfYoUKU=" - }, "parse-asn1": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "dev": true, - "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.6", - "create-hash": "1.1.3", - "evp_bytestokey": "1.0.0", - "pbkdf2": "3.0.12" - } + "dev": true }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "dev": true, - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.3", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } + "dev": true }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "1.3.1" - } - }, - "parsejson": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", - "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", - "requires": { - "better-assert": "1.0.2" - } - }, - "parseqs": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", - "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", - "requires": { - "better-assert": "1.0.2" - } - }, - "parseuri": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", - "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", - "requires": { - "better-assert": "1.0.2" - } + "dev": true }, "parseurl": { "version": "1.3.1", @@ -3943,10 +2461,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } + "dev": true }, "path-is-absolute": { "version": "1.0.1", @@ -3974,24 +2489,24 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } + "dev": true }, "pbkdf2": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", - "dev": true, - "requires": { - "create-hash": "1.1.3", - "create-hmac": "1.1.6", - "ripemd160": "2.0.1", - "safe-buffer": "5.0.1", - "sha.js": "2.4.8" + "dev": true + }, + "pem": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/pem/-/pem-1.12.4.tgz", + "integrity": "sha512-+EmVzUpE9ArKmrk09+Pl1Z2OLirJpx1eRjmi57YCYQV3rouqI6YrTQaSfGwiw7TW+QPC/B/GAlwPCkGBqQBYHw==", + "dependencies": { + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + } } }, "pify": { @@ -4010,40 +2525,25 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "2.0.4" - } + "dev": true }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "dev": true, - "requires": { - "find-up": "1.1.2" - } + "dev": true }, "postcss": { "version": "5.2.17", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", "dev": true, - "requires": { - "chalk": "1.1.3", - "js-base64": "2.1.9", - "source-map": "0.5.6", - "supports-color": "3.2.3" - }, "dependencies": { "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "dev": true } } }, @@ -4051,154 +2551,91 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-message-helpers": "2.0.0", - "reduce-css-calc": "1.3.0" - } + "dev": true }, "postcss-colormin": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", - "dev": true, - "requires": { - "colormin": "1.1.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-convert-values": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-discard-comments": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } + "dev": true }, "postcss-discard-duplicates": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } + "dev": true }, "postcss-discard-empty": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } + "dev": true }, "postcss-discard-overridden": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } + "dev": true }, "postcss-discard-unused": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "uniqs": "2.0.0" - } + "dev": true }, "postcss-filter-plugins": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "uniqid": "4.1.1" - } + "dev": true }, "postcss-load-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", - "dev": true, - "requires": { - "cosmiconfig": "2.1.3", - "object-assign": "4.1.1", - "postcss-load-options": "1.2.0", - "postcss-load-plugins": "2.3.0" - } + "dev": true }, "postcss-load-options": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", - "dev": true, - "requires": { - "cosmiconfig": "2.1.3", - "object-assign": "4.1.1" - } + "dev": true }, "postcss-load-plugins": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", - "dev": true, - "requires": { - "cosmiconfig": "2.1.3", - "object-assign": "4.1.1" - } + "dev": true }, "postcss-merge-idents": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-merge-longhand": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } + "dev": true }, "postcss-merge-rules": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", - "dev": true, - "requires": { - "browserslist": "1.7.7", - "caniuse-api": "1.6.1", - "postcss": "5.2.17", - "postcss-selector-parser": "2.2.3", - "vendors": "1.0.1" - } + "dev": true }, "postcss-message-helpers": { "version": "2.0.0", @@ -4210,75 +2647,43 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-minify-gradients": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-minify-params": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0", - "uniqs": "2.0.0" - } + "dev": true }, "postcss-minify-selectors": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-selector-parser": "2.2.3" - } + "dev": true }, "postcss-modules-extract-imports": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", "dev": true, - "requires": { - "postcss": "6.0.2" - }, "dependencies": { "postcss": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "source-map": "0.5.6", - "supports-color": "3.2.3" - } + "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "dev": true } } }, @@ -4287,30 +2692,18 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.2" - }, "dependencies": { "postcss": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "source-map": "0.5.6", - "supports-color": "3.2.3" - } + "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "dev": true } } }, @@ -4319,30 +2712,18 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", "dev": true, - "requires": { - "css-selector-tokenizer": "0.7.0", - "postcss": "6.0.2" - }, "dependencies": { "postcss": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "source-map": "0.5.6", - "supports-color": "3.2.3" - } + "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "dev": true } } }, @@ -4351,30 +2732,18 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", "dev": true, - "requires": { - "icss-replace-symbols": "1.1.0", - "postcss": "6.0.2" - }, "dependencies": { "postcss": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.2.tgz", "integrity": "sha1-XE/qWJ8Kw7AMqnWxy8OihBlbfl0=", - "dev": true, - "requires": { - "chalk": "1.1.3", - "source-map": "0.5.6", - "supports-color": "3.2.3" - } + "dev": true }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "dev": true } } }, @@ -4382,96 +2751,55 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } + "dev": true }, "postcss-normalize-url": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", - "dev": true, - "requires": { - "is-absolute-url": "2.1.0", - "normalize-url": "1.9.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-ordered-values": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-reduce-idents": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", - "dev": true, - "requires": { - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-reduce-initial": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", - "dev": true, - "requires": { - "postcss": "5.2.17" - } + "dev": true }, "postcss-reduce-transforms": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0" - } + "dev": true }, "postcss-selector-parser": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", - "dev": true, - "requires": { - "flatten": "1.0.2", - "indexes-of": "1.0.1", - "uniq": "1.0.1" - } + "dev": true }, "postcss-svgo": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", - "dev": true, - "requires": { - "is-svg": "2.1.0", - "postcss": "5.2.17", - "postcss-value-parser": "3.3.0", - "svgo": "0.7.2" - } + "dev": true }, "postcss-unique-selectors": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", - "dev": true, - "requires": { - "alphanum-sort": "1.0.2", - "postcss": "5.2.17", - "uniqs": "2.0.0" - } + "dev": true }, "postcss-value-parser": { "version": "3.3.0", @@ -4483,17 +2811,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", - "dev": true, - "requires": { - "has": "1.0.1", - "postcss": "5.2.17", - "uniqs": "2.0.0" - } - }, - "preact": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/preact/-/preact-7.2.1.tgz", - "integrity": "sha1-FZ4YkvYUmF5J6wqW/W5ti9+LvMU=" + "dev": true }, "prepend-http": { "version": "1.0.4", @@ -4538,11 +2856,7 @@ "proxy-addr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", - "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", - "requires": { - "forwarded": "0.1.0", - "ipaddr.js": "1.3.0" - } + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=" }, "prr": { "version": "0.0.0", @@ -4559,14 +2873,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "dev": true, - "requires": { - "bn.js": "4.11.7", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.3", - "parse-asn1": "5.1.0", - "randombytes": "2.0.5" - } + "dev": true }, "punycode": { "version": "1.4.1", @@ -4580,4288 +2887,46 @@ "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", "dev": true }, - "qs": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", - "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", - "dev": true, - "requires": { - "object-assign": "4.1.1", - "strict-uri-encode": "1.1.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "quill": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.0.tgz", - "integrity": "sha1-H6SF3ND0xFkl7TIVj1DYEpzKsTQ=", - "requires": { - "clone": "2.1.1", - "deep-equal": "1.0.1", - "eventemitter3": "2.0.3", - "extend": "3.0.1", - "parchment": "1.1.0", - "quill-delta": "3.5.0" - }, - "dependencies": { - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" - } - } - }, - "quill-delta": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.5.0.tgz", - "integrity": "sha1-W2fmhdpgw06r7URJxBbHSquJFXs=", - "requires": { - "deep-equal": "1.0.1", - "extend": "3.0.1", - "fast-diff": "1.1.1" - } - }, - "quill-emoji": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/quill-emoji/-/quill-emoji-0.0.9.tgz", - "integrity": "sha1-Alb9XZX+mpBXdMBfvIF+GhaKEec=", - "requires": { - "babel": "6.23.0", - "fuse.js": "2.7.4", - "preact": "7.2.1", - "quill": "1.3.0" - } - }, - "quill-image-drop-module": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/quill-image-drop-module/-/quill-image-drop-module-1.0.3.tgz", - "integrity": "sha1-Dl7IMp3WehISbxZrGRv2TSBXp9M=", - "requires": { - "quill": "1.3.0" - } - }, - "quill-image-resize-module": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/quill-image-resize-module/-/quill-image-resize-module-3.0.0.tgz", - "integrity": "sha1-D9k3Rqg3M22VsvU2FAQWpiPHF3E=", - "requires": { - "lodash": "4.17.4", - "quill": "1.2.3", - "raw-loader": "0.5.1" - }, - "dependencies": { - "acorn": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.2.tgz", - "integrity": "sha1-3ByPuQf2TbKrVz3iMmtzUnwk3jY=" - }, - "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", - "requires": { - "acorn": "4.0.11" - }, - "dependencies": { - "acorn": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz", - "integrity": "sha1-7c2jvZN+dVZBDULtWGD2c5nHlMA=" - } - } - }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "requires": { - "acorn": "3.3.0" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=" - } - } - }, - "ajv": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.5.tgz", - "integrity": "sha1-tu50ZXuZOgHc5Et5RNVvSFgo1b0=", - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=" - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "3.1.0", - "longest": "1.0.1", - "repeat-string": "1.6.1" - } - }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "anymatch": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", - "requires": { - "arrify": "1.0.1", - "micromatch": "2.3.11" - } - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "1.0.3" - } - }, - "aria-query": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.3.0.tgz", - "integrity": "sha1-y4qZhOKGJxHIPICt5bj1yg3itGc=", - "requires": { - "ast-types-flow": "0.0.7" - } - }, - "arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "requires": { - "arr-flatten": "1.0.1" - } - }, - "arr-flatten": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", - "integrity": "sha1-5f/lTUXhnzLyFukeuZyM6JK7YEs=" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "requires": { - "array-uniq": "1.0.3" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - }, - "array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" - }, - "array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "requires": { - "define-properties": "1.1.2", - "es-abstract": "1.7.0" - } - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "requires": { - "bn.js": "4.11.6", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "requires": { - "util": "0.10.3" - } - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" - }, - "async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.3.0.tgz", - "integrity": "sha1-EBPRBRBH3TIP4k5JTVxm7K9hR9k=", - "requires": { - "lodash": "4.17.4" - } - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=" - }, - "babel-cli": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.0.tgz", - "integrity": "sha1-oF/9IQ3KDCiKJtUxnFrIZpomWtA=", - "requires": { - "babel-core": "6.24.0", - "babel-polyfill": "6.23.0", - "babel-register": "6.24.0", - "babel-runtime": "6.23.0", - "chokidar": "1.6.1", - "commander": "2.9.0", - "convert-source-map": "1.5.0", - "fs-readdir-recursive": "1.0.0", - "glob": "7.1.1", - "lodash": "4.17.4", - "output-file-sync": "1.1.2", - "path-is-absolute": "1.0.1", - "slash": "1.0.0", - "source-map": "0.5.6", - "v8flags": "2.0.12" - } - }, - "babel-code-frame": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", - "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", - "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.1" - } - }, - "babel-core": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.24.0.tgz", - "integrity": "sha1-jzagp39cFVrtb5ILhE0julZ0KgI=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-generator": "6.24.0", - "babel-helpers": "6.23.0", - "babel-messages": "6.23.0", - "babel-register": "6.24.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0", - "babylon": "6.16.1", - "convert-source-map": "1.5.0", - "debug": "2.6.3", - "json5": "0.5.1", - "lodash": "4.17.4", - "minimatch": "3.0.3", - "path-is-absolute": "1.0.1", - "private": "0.1.7", - "slash": "1.0.0", - "source-map": "0.5.6" - } - }, - "babel-eslint": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-7.2.1.tgz", - "integrity": "sha1-B5Qi63O6gR48oIZc6Hrykyf4xS8=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0", - "babylon": "6.16.1" - } - }, - "babel-generator": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.24.0.tgz", - "integrity": "sha1-66JwqMxM5uCaYb5DRl18YsH4fFY=", - "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.23.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.4", - "source-map": "0.5.6", - "trim-right": "1.0.1" - } - }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.22.0.tgz", - "integrity": "sha1-Kd9WvhRNgb3qwIJiv6QdLF6Rzc0=", - "requires": { - "babel-helper-explode-assignable-expression": "6.22.0", - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-helper-call-delegate": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.22.0.tgz", - "integrity": "sha1-EZkhtWEg8X6drj90tPXMe8wbN+8=", - "requires": { - "babel-helper-hoist-variables": "6.22.0", - "babel-runtime": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0" - } - }, - "babel-helper-define-map": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.23.0.tgz", - "integrity": "sha1-FET5YMlpHWmiztaiBTFfj9AIBOc=", - "requires": { - "babel-helper-function-name": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.23.0", - "lodash": "4.17.4" - } - }, - "babel-helper-explode-assignable-expression": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.22.0.tgz", - "integrity": "sha1-yXv3bu0+C65ASBIfK52uGk59BHg=", - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0" - } - }, - "babel-helper-function-name": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.23.0.tgz", - "integrity": "sha1-JXQtZxdciQPb5LbLnZ4fy43PI6Y=", - "requires": { - "babel-helper-get-function-arity": "6.22.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0" - } - }, - "babel-helper-get-function-arity": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.22.0.tgz", - "integrity": "sha1-C+tGStadxzR0EKxq3p8DpQY09c4=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-helper-hoist-variables": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.22.0.tgz", - "integrity": "sha1-Pqy/cx2AcFhF3S6XGPYAz7m0unI=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-helper-optimise-call-expression": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.23.0.tgz", - "integrity": "sha1-8+5+7TVbQoITizPQK3g2nkcGIvU=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-helper-regex": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.22.0.tgz", - "integrity": "sha1-efUyvhZHsfDuNHS19cPaWAAdJH0=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0", - "lodash": "4.17.4" - } - }, - "babel-helper-remap-async-to-generator": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.22.0.tgz", - "integrity": "sha1-IYaucyeO0DuLFc7QiWCdqYEFM4M=", - "requires": { - "babel-helper-function-name": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0" - } - }, - "babel-helper-replace-supers": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.23.0.tgz", - "integrity": "sha1-7q+K2bWOxDN8qUIjus3KH42bS/0=", - "requires": { - "babel-helper-optimise-call-expression": "6.23.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0" - } - }, - "babel-helpers": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.23.0.tgz", - "integrity": "sha1-T48uCS0LaogIpL3nnCfx4uzw2ZI=", - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.23.0" - } - }, - "babel-loader": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.4.1.tgz", - "integrity": "sha1-CzQRLVsHSKjc2/Uaz2+b1C1QuMo=", - "requires": { - "find-cache-dir": "0.1.1", - "loader-utils": "0.2.17", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - } - }, - "babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=" - }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=" - }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=" - }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=" - }, - "babel-plugin-transform-async-to-generator": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.22.0.tgz", - "integrity": "sha1-GUtpOOwZWtNu/EwzqXGs8A2M014=", - "requires": { - "babel-helper-remap-async-to-generator": "6.22.0", - "babel-plugin-syntax-async-functions": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-class-properties": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.23.0.tgz", - "integrity": "sha1-GHt0fuQEOZATVjyZPbA480dUrDs=", - "requires": { - "babel-helper-function-name": "6.23.0", - "babel-plugin-syntax-class-properties": "6.13.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0" - } - }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-block-scoping": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.23.0.tgz", - "integrity": "sha1-5IiVzws3W+FIzXyIebQicHoFO1E=", - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0", - "lodash": "4.17.4" - } - }, - "babel-plugin-transform-es2015-classes": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.23.0.tgz", - "integrity": "sha1-SbU/MmICov0bO7ql4u3YpPeGQ8E=", - "requires": { - "babel-helper-define-map": "6.23.0", - "babel-helper-function-name": "6.23.0", - "babel-helper-optimise-call-expression": "6.23.0", - "babel-helper-replace-supers": "6.23.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0" - } - }, - "babel-plugin-transform-es2015-computed-properties": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.22.0.tgz", - "integrity": "sha1-fDg+lim7pIIMEbBCW91ikPfwV+c=", - "requires": { - "babel-runtime": "6.23.0", - "babel-template": "6.23.0" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.22.0.tgz", - "integrity": "sha1-ZyOXAxwhYQ1y3Su7C6n7Ynfhw2s=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-function-name": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.22.0.tgz", - "integrity": "sha1-9fzIsJCT+aI8dqw9njksPsS3cQQ=", - "requires": { - "babel-helper-function-name": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.0.tgz", - "integrity": "sha1-oZEfubfsfgWkOmPFmVAHVXvPai4=", - "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "6.24.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0" - } - }, - "babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.0.tgz", - "integrity": "sha1-6SGu+3LCzCbLA9EHYmFWQTIiE08=", - "requires": { - "babel-plugin-transform-strict-mode": "6.22.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.23.0.tgz", - "integrity": "sha1-rjRpIn/6w5sDENkP7HO/3E9jF7A=", - "requires": { - "babel-helper-hoist-variables": "6.22.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0" - } - }, - "babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.0.tgz", - "integrity": "sha1-/V+mNSHK6NJzknw5WK/XwGdzNFA=", - "requires": { - "babel-plugin-transform-es2015-modules-amd": "6.24.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.22.0.tgz", - "integrity": "sha1-2qYOEUoELqdp3VP+Uo/IIxHrmPw=", - "requires": { - "babel-helper-replace-supers": "6.23.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-parameters": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.23.0.tgz", - "integrity": "sha1-OiqrtwyK+UXVzjhvGkJQYlqDrjs=", - "requires": { - "babel-helper-call-delegate": "6.22.0", - "babel-helper-get-function-arity": "6.22.0", - "babel-runtime": "6.23.0", - "babel-template": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0" - } - }, - "babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.22.0.tgz", - "integrity": "sha1-i6d24K/6pgv/IekhQDuKZSov9yM=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.22.0.tgz", - "integrity": "sha1-qzFoKehm7j9LnrlpOXV9GaW8RZM=", - "requires": { - "babel-helper-regex": "6.22.0", - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "requires": { - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.22.0.tgz", - "integrity": "sha1-jZzCfn7h3s/mVFT7mGRSoEphPSA=", - "requires": { - "babel-helper-regex": "6.22.0", - "babel-runtime": "6.23.0", - "regexpu-core": "2.0.0" - } - }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.22.0.tgz", - "integrity": "sha1-1XyDNSgZGOVO8FMRjObrEIRoCE0=", - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "6.22.0", - "babel-plugin-syntax-exponentiation-operator": "6.13.0", - "babel-runtime": "6.23.0" - } - }, - "babel-plugin-transform-regenerator": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.22.0.tgz", - "integrity": "sha1-ZXQFk6MZxEUiFXU41pC4QJRhfqY=", - "requires": { - "regenerator-transform": "0.9.8" - } - }, - "babel-plugin-transform-strict-mode": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.22.0.tgz", - "integrity": "sha1-4AjfATQP3IfpWdplmRt+BZcMjHw=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0" - } - }, - "babel-polyfill": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz", - "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=", - "requires": { - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "regenerator-runtime": "0.10.3" - } - }, - "babel-preset-env": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.3.2.tgz", - "integrity": "sha1-COq9K/gQw2eAaffgUjI0GfFEh0k=", - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-syntax-trailing-function-commas": "6.22.0", - "babel-plugin-transform-async-to-generator": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.23.0", - "babel-plugin-transform-es2015-classes": "6.23.0", - "babel-plugin-transform-es2015-computed-properties": "6.22.0", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.22.0", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.22.0", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.0", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.23.0", - "babel-plugin-transform-es2015-modules-umd": "6.24.0", - "babel-plugin-transform-es2015-object-super": "6.22.0", - "babel-plugin-transform-es2015-parameters": "6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "6.22.0", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.22.0", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.22.0", - "babel-plugin-transform-exponentiation-operator": "6.22.0", - "babel-plugin-transform-regenerator": "6.22.0", - "browserslist": "1.7.7", - "invariant": "2.2.2" - } - }, - "babel-preset-es2015": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.0.tgz", - "integrity": "sha1-wWLWixkyaW4DbNMRDcHM0wPSZzo=", - "requires": { - "babel-plugin-check-es2015-constants": "6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "6.22.0", - "babel-plugin-transform-es2015-block-scoping": "6.23.0", - "babel-plugin-transform-es2015-classes": "6.23.0", - "babel-plugin-transform-es2015-computed-properties": "6.22.0", - "babel-plugin-transform-es2015-destructuring": "6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "6.22.0", - "babel-plugin-transform-es2015-for-of": "6.23.0", - "babel-plugin-transform-es2015-function-name": "6.22.0", - "babel-plugin-transform-es2015-literals": "6.22.0", - "babel-plugin-transform-es2015-modules-amd": "6.24.0", - "babel-plugin-transform-es2015-modules-commonjs": "6.24.0", - "babel-plugin-transform-es2015-modules-systemjs": "6.23.0", - "babel-plugin-transform-es2015-modules-umd": "6.24.0", - "babel-plugin-transform-es2015-object-super": "6.22.0", - "babel-plugin-transform-es2015-parameters": "6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "6.22.0", - "babel-plugin-transform-es2015-spread": "6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "6.22.0", - "babel-plugin-transform-es2015-template-literals": "6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "6.22.0", - "babel-plugin-transform-regenerator": "6.22.0" - } - }, - "babel-register": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.0.tgz", - "integrity": "sha1-Xon4RjuplwNW0C6wfavjMIsIDP0=", - "requires": { - "babel-core": "6.24.0", - "babel-runtime": "6.23.0", - "core-js": "2.4.1", - "home-or-tmp": "2.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "source-map-support": "0.4.14" - } - }, - "babel-runtime": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", - "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", - "requires": { - "core-js": "2.4.1", - "regenerator-runtime": "0.10.3" - } - }, - "babel-template": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.23.0.tgz", - "integrity": "sha1-BNTycK27OqcEqBQ64m+qUpI45jg=", - "requires": { - "babel-runtime": "6.23.0", - "babel-traverse": "6.23.1", - "babel-types": "6.23.0", - "babylon": "6.16.1", - "lodash": "4.17.4" - } - }, - "babel-traverse": { - "version": "6.23.1", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.23.1.tgz", - "integrity": "sha1-08tZAQ7NBql9gTEAZflmtpnhT0g=", - "requires": { - "babel-code-frame": "6.22.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.23.0", - "babel-types": "6.23.0", - "babylon": "6.16.1", - "debug": "2.6.3", - "globals": "9.17.0", - "invariant": "2.2.2", - "lodash": "4.17.4" - } - }, - "babel-types": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.23.0.tgz", - "integrity": "sha1-uxcXnXU4utOM0MnhFdNA935+ms8=", - "requires": { - "babel-runtime": "6.23.0", - "esutils": "2.0.2", - "lodash": "4.17.4", - "to-fast-properties": "1.0.2" - } - }, - "babylon": { - "version": "6.16.1", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.16.1.tgz", - "integrity": "sha1-MMWiL0gZeKnn+M399JaxHZS0BNM=" - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=" - }, - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=" - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=" - }, - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - }, - "brace-expansion": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=", - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "requires": { - "expand-range": "1.8.2", - "preserve": "0.2.0", - "repeat-element": "1.1.2" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", - "requires": { - "buffer-xor": "1.0.3", - "cipher-base": "1.0.3", - "create-hash": "1.1.2", - "evp_bytestokey": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", - "requires": { - "browserify-aes": "1.0.6", - "browserify-des": "1.0.0", - "evp_bytestokey": "1.0.0" - } - }, - "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", - "requires": { - "cipher-base": "1.0.3", - "des.js": "1.0.0", - "inherits": "2.0.3" - } - }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "requires": { - "bn.js": "4.11.6", - "randombytes": "2.0.3" - } - }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "requires": { - "bn.js": "4.11.6", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.2", - "create-hmac": "1.1.4", - "elliptic": "6.4.0", - "inherits": "2.0.3", - "parse-asn1": "5.1.0" - } - }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", - "requires": { - "pako": "0.2.9" - } - }, - "browserslist": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", - "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", - "requires": { - "caniuse-db": "1.0.30000646", - "electron-to-chromium": "1.3.2" - } - }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", - "requires": { - "base64-js": "1.2.0", - "ieee754": "1.1.8", - "isarray": "1.0.0" - } - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "requires": { - "callsites": "0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=" - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "caniuse-db": { - "version": "1.0.30000646", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000646.tgz", - "integrity": "sha1-xyS5DWHfJChuAV/FKNBiBzwA3vQ=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" - } - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" - } - }, - "chokidar": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.6.1.tgz", - "integrity": "sha1-L0RHq16W5Q+z14n9kNTHLg5McMI=", - "requires": { - "anymatch": "1.3.0", - "async-each": "1.0.1", - "glob-parent": "2.0.0", - "inherits": "2.0.3", - "is-binary-path": "1.0.1", - "is-glob": "2.0.1", - "path-is-absolute": "1.0.1", - "readdirp": "2.1.0" - } - }, - "cipher-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.3.tgz", - "integrity": "sha1-7qvxlEGc6QDaMBjCB9IS8qbfCgc=", - "requires": { - "inherits": "2.0.3" - } - }, - "circular-json": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.1.tgz", - "integrity": "sha1-vos2rvzN6LPKeqLWr8B6NyQsDS0=" - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "requires": { - "restore-cursor": "1.0.1" - } - }, - "cli-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", - "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=" - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", - "wordwrap": "0.0.2" - } - }, - "clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", - "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.2.6", - "typedarray": "0.0.6" - } - }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "0.1.4" - } - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=" - }, - "convert-source-map": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", - "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=" - }, - "core-js": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", - "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", - "requires": { - "bn.js": "4.11.6", - "elliptic": "6.4.0" - } - }, - "create-hash": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.2.tgz", - "integrity": "sha1-USEAYte7dHn2xlu0GpIgix1hq60=", - "requires": { - "cipher-base": "1.0.3", - "inherits": "2.0.3", - "ripemd160": "1.0.1", - "sha.js": "2.4.8" - } - }, - "create-hmac": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.4.tgz", - "integrity": "sha1-0/tLolPriz9W456i+8uK90e9MXA=", - "requires": { - "create-hash": "1.1.2", - "inherits": "2.0.3" - } - }, - "crypto-browserify": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.0.tgz", - "integrity": "sha1-NlKgkGq5sqfgw85mpAjpV6JIVSI=", - "requires": { - "browserify-cipher": "1.0.0", - "browserify-sign": "4.0.4", - "create-ecdh": "4.0.0", - "create-hash": "1.1.2", - "create-hmac": "1.1.4", - "diffie-hellman": "5.0.2", - "inherits": "2.0.3", - "pbkdf2": "3.0.9", - "public-encrypt": "4.0.0", - "randombytes": "2.0.3" - } - }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "requires": { - "es5-ext": "0.10.15" - } - }, - "damerau-levenshtein": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", - "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=" - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" - }, - "debug": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz", - "integrity": "sha1-D364wwll7AjHKsz6ATDIt5mEFB0=", - "requires": { - "ms": "0.7.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "define-properties": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", - "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", - "requires": { - "foreach": "2.0.5", - "object-keys": "1.0.11" - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "requires": { - "globby": "5.0.0", - "is-path-cwd": "1.0.0", - "is-path-in-cwd": "1.0.0", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "rimraf": "2.6.1" - } - }, - "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "requires": { - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0" - } - }, - "detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "requires": { - "repeating": "2.0.1" - } - }, - "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", - "requires": { - "bn.js": "4.11.6", - "miller-rabin": "4.0.0", - "randombytes": "2.0.3" - } - }, - "doctrine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", - "integrity": "sha1-xz2NKQnSIpHhoAejlYBNqLZl/mM=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - }, - "domain-browser": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", - "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" - }, - "electron-to-chromium": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.2.tgz", - "integrity": "sha1-uM5ck7MI2w6S9tBDXEbd7I9jY6s=" - }, - "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", - "requires": { - "bn.js": "4.11.6", - "brorand": "1.1.0", - "hash.js": "1.0.3", - "hmac-drbg": "1.0.0", - "inherits": "2.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "emoji-regex": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.4.1.tgz", - "integrity": "sha1-d0hv6c1FQh0mCmI4uI1yHi+tIFA=" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "enhanced-resolve": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz", - "integrity": "sha1-n0tib1dyRe3PSyrYPYbhf09CHew=", - "requires": { - "graceful-fs": "4.1.11", - "memory-fs": "0.4.1", - "object-assign": "4.1.1", - "tapable": "0.2.6" - } - }, - "errno": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", - "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", - "requires": { - "prr": "0.0.0" - } - }, - "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "requires": { - "is-arrayish": "0.2.1" - } - }, - "es-abstract": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.7.0.tgz", - "integrity": "sha1-363ndOAb/Nl/lhgCmMRJyGI/uUw=", - "requires": { - "es-to-primitive": "1.1.1", - "function-bind": "1.1.0", - "is-callable": "1.1.3", - "is-regex": "1.0.4" - } - }, - "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", - "requires": { - "is-callable": "1.1.3", - "is-date-object": "1.0.1", - "is-symbol": "1.0.1" - } - }, - "es5-ext": { - "version": "0.10.15", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz", - "integrity": "sha1-wzClk0we4hKEp8CBqG5f2TfJHqY=", - "requires": { - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "es6-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", - "integrity": "sha1-jjGcnwRTv1ddN0lAplWSDlnKVRI=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.15", - "es6-symbol": "3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.15", - "es6-iterator": "2.0.1", - "es6-set": "0.1.5", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.15", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.15" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.15", - "es6-iterator": "2.0.1", - "es6-symbol": "3.1.1" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "requires": { - "es6-map": "0.1.5", - "es6-weak-map": "2.0.2", - "esrecurse": "4.1.0", - "estraverse": "4.2.0" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "requires": { - "babel-code-frame": "6.22.0", - "chalk": "1.1.3", - "concat-stream": "1.6.0", - "debug": "2.6.3", - "doctrine": "2.0.0", - "escope": "3.6.0", - "espree": "3.4.1", - "esquery": "1.0.0", - "estraverse": "4.2.0", - "esutils": "2.0.2", - "file-entry-cache": "2.0.0", - "glob": "7.1.1", - "globals": "9.17.0", - "ignore": "3.2.6", - "imurmurhash": "0.1.4", - "inquirer": "0.12.0", - "is-my-json-valid": "2.16.0", - "is-resolvable": "1.0.0", - "js-yaml": "3.8.2", - "json-stable-stringify": "1.0.1", - "levn": "0.3.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "natural-compare": "1.4.0", - "optionator": "0.8.2", - "path-is-inside": "1.0.2", - "pluralize": "1.2.1", - "progress": "1.1.8", - "require-uncached": "1.0.3", - "shelljs": "0.7.7", - "strip-bom": "3.0.0", - "strip-json-comments": "2.0.1", - "table": "3.8.3", - "text-table": "0.2.0", - "user-home": "2.0.0" - }, - "dependencies": { - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "requires": { - "os-homedir": "1.0.2" - } - } - } - }, - "eslint-config-airbnb": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-14.1.0.tgz", - "integrity": "sha1-NV0pAEC7+OAL+LSxn0twy+fCMX8=", - "requires": { - "eslint-config-airbnb-base": "11.1.2" - } - }, - "eslint-config-airbnb-base": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-11.1.2.tgz", - "integrity": "sha1-JZIJp2eL9pPjHL6PlT8ga2qnzMM=" - }, - "eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", - "requires": { - "debug": "2.6.3", - "object-assign": "4.1.1", - "resolve": "1.3.2" - } - }, - "eslint-module-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.0.0.tgz", - "integrity": "sha1-pvjCHZATWHWc3DXbrBmCrh7li84=", - "requires": { - "debug": "2.2.0", - "pkg-dir": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", - "requires": { - "ms": "0.7.1" - } - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - } - } - }, - "eslint-plugin-import": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", - "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", - "requires": { - "builtin-modules": "1.1.1", - "contains-path": "0.1.0", - "debug": "2.6.3", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "0.2.3", - "eslint-module-utils": "2.0.0", - "has": "1.0.1", - "lodash.cond": "4.5.2", - "minimatch": "3.0.3", - "pkg-up": "1.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, - "eslint-plugin-jsx-a11y": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-4.0.0.tgz", - "integrity": "sha1-d5uw/nsI2lZKQiYkkR3hAGHgSO4=", - "requires": { - "aria-query": "0.3.0", - "ast-types-flow": "0.0.7", - "damerau-levenshtein": "1.0.4", - "emoji-regex": "6.4.1", - "jsx-ast-utils": "1.4.0", - "object-assign": "4.1.1" - } - }, - "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "requires": { - "array.prototype.find": "2.0.4", - "doctrine": "1.5.0", - "has": "1.0.1", - "jsx-ast-utils": "1.4.0", - "object.assign": "4.0.4" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "requires": { - "esutils": "2.0.2", - "isarray": "1.0.0" - } - } - } - }, - "espree": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.4.1.tgz", - "integrity": "sha1-KKg6tKrtce2P4PXv5ht2oFwTxNI=", - "requires": { - "acorn": "5.0.2", - "acorn-jsx": "3.0.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "esquery": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", - "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", - "requires": { - "estraverse": "4.2.0" - } - }, - "esrecurse": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.1.0.tgz", - "integrity": "sha1-RxO2U2rffyrE8yfVWed1a/9kgiA=", - "requires": { - "estraverse": "4.1.1", - "object-assign": "4.1.1" - }, - "dependencies": { - "estraverse": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.1.tgz", - "integrity": "sha1-9srKcokzqFDvkGYdDheYK6RxEaI=" - } - } - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "requires": { - "d": "1.0.0", - "es5-ext": "0.10.15" - } - }, - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" - }, - "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" - }, - "evp_bytestokey": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", - "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", - "requires": { - "create-hash": "1.1.2" - } - }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" - }, - "expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "requires": { - "is-posix-bracket": "0.1.1" - } - }, - "expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "requires": { - "fill-range": "2.2.3" - } - }, - "extend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" - }, - "extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "fast-diff": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.1.tgz", - "integrity": "sha1-CuoOTmBbaiGJ8Ok21Lf7rxt8/Zs=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "requires": { - "escape-string-regexp": "1.0.5", - "object-assign": "4.1.1" - } - }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "requires": { - "flat-cache": "1.2.2", - "object-assign": "4.1.1" - } - }, - "filename-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", - "integrity": "sha1-mW4+gEebmLmJfxWopYs9CE6SZ3U=" - }, - "fill-range": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", - "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", - "requires": { - "is-number": "2.1.0", - "isobject": "2.1.0", - "randomatic": "1.1.6", - "repeat-element": "1.1.2", - "repeat-string": "1.6.1" - } - }, - "find-cache-dir": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", - "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", - "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "flat-cache": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.2.2.tgz", - "integrity": "sha1-+oZxTnLCHbiGAXYezy9VXRq8a5Y=", - "requires": { - "circular-json": "0.3.1", - "del": "2.2.2", - "graceful-fs": "4.1.11", - "write": "0.2.1" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "requires": { - "for-in": "1.0.2" - } - }, - "foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "fs-readdir-recursive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz", - "integrity": "sha1-jNF0XItPiinIyuw5JHaSG6GV9WA=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.1.tgz", - "integrity": "sha1-8Z/Sj0Pur3YWgOUZogPE0LPTGv8=", - "dependencies": { - "abbrev": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "aproba": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.1.1.tgz", - "integrity": "sha1-ldNgDwdxCqDpKYxyatXs8urLq6s=" - }, - "are-we-there-yet": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz", - "integrity": "sha1-gORw6VoIR5T+GJkmLFZnxuiN4bM=" - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=" - }, - "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=" - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=" - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=" - }, - "brace-expansion": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.6.tgz", - "integrity": "sha1-cZfX6qm4fmSDkOph/GbIRCdCDfk=" - }, - "buffer-shims": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-shims/-/buffer-shims-1.0.0.tgz", - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=" - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=" - }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=" - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } - } - }, - "debug": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=" - }, - "deep-extend": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.1.tgz", - "integrity": "sha1-7+QRPQgIX05vlod1mBD4B0aeIlM=" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "extend": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz", - "integrity": "sha1-WkdDU7nzNT3dgXbf03uRyDpG8dQ=" - }, - "extsprintf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", - "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz", - "integrity": "sha1-icNTQAi5fq2ky7FX1Y9vXfAl6uQ=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fstream": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.10.tgz", - "integrity": "sha1-YE6Kkv4m/9n2+uMDmdSYThqyKCI=" - }, - "fstream-ignore": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.5.tgz", - "integrity": "sha1-nDHa40dnAY/h0kmyTa2mfQktoQU=" - }, - "gauge": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.3.tgz", - "integrity": "sha1-HCOFX5YvF7OtPQ3HRD8wRULt/gk=" - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=" - }, - "getpass": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.6.tgz", - "integrity": "sha1-KD/9n8ElaECHUxHBtg6MQBhxEOY=", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } - } - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=" - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, - "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=" - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" - }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=" - }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ini": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", - "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" - }, - "is-my-json-valid": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", - "integrity": "sha1-k27do8o8IR/ZjzstPgjaQ/eykVs=" - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jodid25519": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", - "integrity": "sha1-BtSRIlUJNBlHfUJWM2BuDpB4KWc=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" - }, - "jsprim": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz", - "integrity": "sha1-KnJW9wQSop7jZwqspiWZTE3P8lI=" - }, - "mime-db": { - "version": "1.26.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.26.0.tgz", - "integrity": "sha1-6v/NDk/Gk1z4E02iRuLmw1MFrf8=" - }, - "mime-types": { - "version": "2.1.14", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.14.tgz", - "integrity": "sha1-9+99l1g/yvO30oK2+LVnnaselO4=" - }, - "minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=" - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=" - }, - "ms": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", - "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" - }, - "node-pre-gyp": { - "version": "0.6.33", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz", - "integrity": "sha1-ZArFUZj2qSWXLgwWxKwmoDTV7Mk=" - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=" - }, - "npmlog": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.0.2.tgz", - "integrity": "sha1-0DlQ4OeM4VJ7om0qdZLpNIrD518=" - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "qs": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.1.tgz", - "integrity": "sha1-kYwLO802Z5dyuvE1say0wWUe150=" - }, - "rc": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.7.tgz", - "integrity": "sha1-xepWS7B6/5/TpbMukGwdOmWUD+o=", - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, - "readable-stream": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", - "integrity": "sha1-qeb+w8fdqF+LsbO6cChgRVb8gl4=" - }, - "request": { - "version": "2.79.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz", - "integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=" - }, - "rimraf": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "integrity": "sha1-loAAk8vxoMhr2VtGJUZ1NcKd+gQ=" - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" - }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=" - }, - "sshpk": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.2.tgz", - "integrity": "sha1-1agEziJpVRVjjnmNviMnPeBwpfo=", - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=" - }, - "tar-pack": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.3.0.tgz", - "integrity": "sha1-MJMYFkGPVa/E0hd1r91nIM7kXa4=", - "dependencies": { - "once": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", - "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=" - }, - "readable-stream": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz", - "integrity": "sha1-ZvqLcg4UOLNkaB8q0aY8YYRIydA=" - } - } - }, - "tough-cookie": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", - "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=" - }, - "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "uid-number": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", - "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "uuid": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.0.1.tgz", - "integrity": "sha1-ZUS7ot/ajBzxfmKaOjBeK7H+5sE=" - }, - "verror": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", - "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=" - }, - "wide-align": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.0.tgz", - "integrity": "sha1-QO3egCpx/qHwcNo+YtzaLnrdlq0=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - } - } - }, - "function-bind": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", - "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=" - }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "requires": { - "is-property": "1.0.2" - } - }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.3", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "requires": { - "glob-parent": "2.0.0", - "is-glob": "2.0.1" - } - }, - "glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "requires": { - "is-glob": "2.0.1" - } - }, - "globals": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz", - "integrity": "sha1-DAymltm5u2lNLlRwvTd3fKrVAoY=" - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "requires": { - "array-union": "1.0.2", - "arrify": "1.0.1", - "glob": "7.1.1", - "object-assign": "4.1.1", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - }, - "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "requires": { - "function-bind": "1.1.0" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "hash.js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.0.3.tgz", - "integrity": "sha1-EzL/ABVsCg/92CNgE9B7d6BFFXM=", - "requires": { - "inherits": "2.0.3" - } - }, - "hmac-drbg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.0.tgz", - "integrity": "sha1-PbRx9FquSplKBogyIXH1G4uRvuU=", - "requires": { - "hash.js": "1.0.3", - "minimalistic-assert": "1.0.0", - "minimalistic-crypto-utils": "1.0.1" - } - }, - "home-or-tmp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", - "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "hosted-git-info": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.4.1.tgz", - "integrity": "sha1-SwRF5BwASovRM3dzpP95DKQDGMg=" - }, - "https-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", - "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=" - }, - "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" - }, - "ignore": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.2.6.tgz", - "integrity": "sha1-JujaBkS+C7TLOVFvbHnw4PT/5Iw=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "requires": { - "ansi-escapes": "1.4.0", - "ansi-regex": "2.1.1", - "chalk": "1.1.3", - "cli-cursor": "1.0.2", - "cli-width": "2.1.0", - "figures": "1.7.0", - "lodash": "4.17.4", - "readline2": "1.0.1", - "run-async": "0.1.0", - "rx-lite": "3.1.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "through": "2.3.8" - } - }, - "interpret": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.2.tgz", - "integrity": "sha1-9PYj8LtxIvFfVxfI4lS4FhtcWy0=" - }, - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "requires": { - "loose-envify": "1.3.1" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "1.8.0" - } - }, - "is-buffer": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" - }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "1.1.1" - } - }, - "is-callable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", - "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-dotfile": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.2.tgz", - "integrity": "sha1-LBMjg/ORmfjtwmjKAbmwB9IFzE0=" - }, - "is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "requires": { - "is-primitive": "2.0.0" - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - }, - "is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "requires": { - "is-extglob": "1.0.0" - } - }, - "is-my-json-valid": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", - "integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=", - "requires": { - "generate-function": "2.0.0", - "generate-object-property": "1.2.0", - "jsonpointer": "4.0.1", - "xtend": "4.0.1" - } - }, - "is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "requires": { - "kind-of": "3.1.0" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=" - }, - "is-path-in-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", - "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", - "requires": { - "is-path-inside": "1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", - "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", - "requires": { - "path-is-inside": "1.0.2" - } - }, - "is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" - }, - "is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" - }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" - }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "1.0.1" - } - }, - "is-resolvable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", - "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", - "requires": { - "tryit": "1.0.3" - } - }, - "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - }, - "js-tokens": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", - "integrity": "sha1-COnxMkhKLEWjCQfp3E1VZ7fxFNc=" - }, - "js-yaml": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.2.tgz", - "integrity": "sha1-AtPiwPa+qyAkjUEsNSIDgn14ZyE=", - "requires": { - "argparse": "1.0.9", - "esprima": "3.1.3" - } - }, - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=" - }, - "json-loader": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.4.tgz", - "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=" - }, - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "requires": { - "jsonify": "0.0.0" - } - }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" - }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" - }, - "jsx-ast-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.0.tgz", - "integrity": "sha1-Wv44ho9WvIzHrq7wEAuox1vRJZE=", - "requires": { - "object-assign": "4.1.1" - } - }, - "kind-of": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.1.0.tgz", - "integrity": "sha1-R11pil5J/15T0U4+cyQp3Iv0z0c=", - "requires": { - "is-buffer": "1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "1.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "1.1.2", - "type-check": "0.3.2" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - }, - "dependencies": { - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "requires": { - "is-utf8": "0.2.1" - } - } - } - }, - "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" - }, - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" - }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=" - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - }, - "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "3.0.1" - } - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "requires": { - "errno": "0.1.4", - "readable-stream": "2.2.6" - } - }, - "micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "requires": { - "arr-diff": "2.0.0", - "array-unique": "0.2.1", - "braces": "1.8.5", - "expand-brackets": "0.1.5", - "extglob": "0.3.2", - "filename-regex": "2.0.0", - "is-extglob": "1.0.0", - "is-glob": "2.0.1", - "kind-of": "3.1.0", - "normalize-path": "2.1.1", - "object.omit": "2.0.1", - "parse-glob": "3.0.4", - "regex-cache": "0.4.3" - } - }, - "miller-rabin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", - "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", - "requires": { - "bn.js": "4.11.6", - "brorand": "1.1.0" - } - }, - "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha1-Kk5AkLlrLbBqnX3wEFWmKnfJt3Q=", - "requires": { - "brace-expansion": "1.1.6" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", - "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=" - }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=" - }, - "nan": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.5.1.tgz", - "integrity": "sha1-1bAWkSUzJql6K77p5hxV2NYDUeI=" - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - }, - "node-libs-browser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", - "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", - "requires": { - "assert": "1.4.1", - "browserify-zlib": "0.1.4", - "buffer": "4.9.1", - "console-browserify": "1.1.0", - "constants-browserify": "1.0.0", - "crypto-browserify": "3.11.0", - "domain-browser": "1.1.7", - "events": "1.1.1", - "https-browserify": "0.0.1", - "os-browserify": "0.2.1", - "path-browserify": "0.0.0", - "process": "0.11.9", - "punycode": "1.4.1", - "querystring-es3": "0.2.1", - "readable-stream": "2.2.6", - "stream-browserify": "2.0.1", - "stream-http": "2.7.0", - "string_decoder": "0.10.31", - "timers-browserify": "2.0.2", - "tty-browserify": "0.0.0", - "url": "0.11.0", - "util": "0.10.3", - "vm-browserify": "0.0.4" - } - }, - "normalize-package-data": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.6.tgz", - "integrity": "sha1-SY+kIMlkAfeHQCuiHmAN75+YH/8=", - "requires": { - "hosted-git-info": "2.4.1", - "is-builtin-module": "1.0.0", - "semver": "5.3.0", - "validate-npm-package-license": "3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "1.0.1" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "object-keys": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", - "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" - }, - "object.assign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.0.4.tgz", - "integrity": "sha1-scnMBE7xuf5jYG/BQau7MuFHMMw=", - "requires": { - "define-properties": "1.1.2", - "function-bind": "1.1.0", - "object-keys": "1.0.11" - } - }, - "object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "requires": { - "for-own": "0.1.5", - "is-extendable": "0.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "0.1.3", - "fast-levenshtein": "2.0.6", - "levn": "0.3.0", - "prelude-ls": "1.1.2", - "type-check": "0.3.2", - "wordwrap": "1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - } - } - }, - "os-browserify": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", - "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=" - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "1.0.0" - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - }, - "output-file-sync": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz", - "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=", - "requires": { - "graceful-fs": "4.1.11", - "mkdirp": "0.5.1", - "object-assign": "4.1.1" - } - }, - "pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" - }, - "parchment": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.0.8.tgz", - "integrity": "sha1-E+xr7M5sFnSB8Xcr1RpZBt51oDg=" - }, - "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", - "requires": { - "asn1.js": "4.9.1", - "browserify-aes": "1.0.6", - "create-hash": "1.1.2", - "evp_bytestokey": "1.0.0", - "pbkdf2": "3.0.9" - } - }, - "parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "requires": { - "glob-base": "0.3.0", - "is-dotfile": "1.0.2", - "is-extglob": "1.0.0", - "is-glob": "2.0.1" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "1.3.1" - } - }, - "path-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "pbkdf2": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.9.tgz", - "integrity": "sha1-8sSyWmAAWLPDdzwIbDfbvuH/5pM=", - "requires": { - "create-hmac": "1.1.4" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "requires": { - "pinkie": "2.0.4" - } - }, - "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", - "requires": { - "find-up": "1.1.2" - } - }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "requires": { - "find-up": "1.1.2" - } - }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" - }, - "private": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", - "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=" - }, - "process": { - "version": "0.11.9", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.9.tgz", - "integrity": "sha1-e9WtIapiU+fahoImTx4R0RwDGME=" - }, - "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" - }, - "prr": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", - "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=" - }, - "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", - "requires": { - "bn.js": "4.11.6", - "browserify-rsa": "4.0.1", - "create-hash": "1.1.2", - "parse-asn1": "5.1.0", - "randombytes": "2.0.3" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "quill": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.2.3.tgz", - "integrity": "sha1-j8Yu1m2Bc+35vB2ft3fddOsGMu4=", - "requires": { - "clone": "2.1.1", - "deep-equal": "1.0.1", - "eventemitter3": "2.0.3", - "extend": "3.0.0", - "parchment": "1.0.8", - "quill-delta": "3.5.0" - } - }, - "quill-delta": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.5.0.tgz", - "integrity": "sha1-W2fmhdpgw06r7URJxBbHSquJFXs=", - "requires": { - "deep-equal": "1.0.1", - "extend": "3.0.0", - "fast-diff": "1.1.1" - } - }, - "randomatic": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.6.tgz", - "integrity": "sha1-EQ3Kv/OX6dz/fAeJzMCkmt8exbs=", - "requires": { - "is-number": "2.1.0", - "kind-of": "3.1.0" - } - }, - "randombytes": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", - "integrity": "sha1-Z0yZdgkBw8QRJ3GjHlIdw0nMCew=" - }, - "raw-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.3.6", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "readable-stream": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.6.tgz", - "integrity": "sha1-i0Ou125xSDk40SqNRsbPGgCx+BY=", - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "0.10.31", - "util-deprecate": "1.0.2" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.3", - "readable-stream": "2.2.6", - "set-immediate-shim": "1.0.1" - } - }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "mute-stream": "0.0.5" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "1.3.2" - } - }, - "regenerate": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", - "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=" - }, - "regenerator-runtime": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.3.tgz", - "integrity": "sha1-jENnqQS1HqYqkIrDEL+Z/5CoKj4=" - }, - "regenerator-transform": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.8.tgz", - "integrity": "sha1-D4i7K8A5Mt23trcxLmgHjwECbWw=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.23.0", - "private": "0.1.7" - } - }, - "regex-cache": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", - "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } - }, - "regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } - }, - "regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=" - }, - "regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" - } - } - }, - "remove-trailing-separator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.1.tgz", - "integrity": "sha1-YV67lq9VlVLUv0BXyENtSGq2PMQ=" - }, - "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "1.0.2" - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - }, - "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "requires": { - "caller-path": "0.1.0", - "resolve-from": "1.0.1" - } - }, - "resolve": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.2.tgz", - "integrity": "sha1-HwRCyeDLuBNuh7kwX5MvRsfygjU=", - "requires": { - "path-parse": "1.0.5" - } - }, - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=" - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "requires": { - "exit-hook": "1.1.1", - "onetime": "1.1.0" - } - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "0.1.4" - } - }, - "rimraf": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", - "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "requires": { - "glob": "7.1.1" - } - }, - "ripemd160": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-1.0.1.tgz", - "integrity": "sha1-k6S71JQrxXS2mo+lfHHeEOzKfW4=" - }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "requires": { - "once": "1.4.0" - } - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=" - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "sha.js": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", - "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", - "requires": { - "inherits": "2.0.3" - } - }, - "shelljs": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", - "integrity": "sha1-svXHfvlxSPS09uImguELuoZnz/E=", - "requires": { - "glob": "7.1.1", - "interpret": "1.0.2", - "rechoir": "0.6.2" - } - }, - "slash": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", - "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - }, - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" - }, - "source-list-map": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.1.tgz", - "integrity": "sha1-GjOsIQyhRNHlYfkG68yrVmn/TLQ=" - }, - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=" - }, - "source-map-support": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.14.tgz", - "integrity": "sha1-nURjdyWYuGJxtPUj9sH04Cp9au8=", - "requires": { - "source-map": "0.5.6" - } - }, - "spdx-correct": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", - "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "requires": { - "spdx-license-ids": "1.2.2" - } - }, - "spdx-expression-parse": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", - "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=" - }, - "spdx-license-ids": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", - "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=" - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.2.6" - } - }, - "stream-http": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.0.tgz", - "integrity": "sha1-zsH047SUvEqBtFGAiXD4sgtO1fY=", - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.2.6", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=" - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "requires": { - "ajv": "4.11.5", - "ajv-keywords": "1.5.1", - "chalk": "1.1.3", - "lodash": "4.17.4", - "slice-ansi": "0.0.4", - "string-width": "2.0.0" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" - }, - "string-width": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.0.0.tgz", - "integrity": "sha1-Y1xUNsxypuDDh87KJ41OLuxSaH4=", - "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "3.0.1" - } - } - } - }, - "tapable": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.6.tgz", - "integrity": "sha1-IGvo4YiGC1FEJTdebxrom/sB/Y0=" - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - }, - "timers-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", - "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", - "requires": { - "setimmediate": "1.0.5" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "to-fast-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.2.tgz", - "integrity": "sha1-8/XAw7pymafvmUJ+RGMyV63kMyA=" - }, - "trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" - }, - "tryit": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", - "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=" - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "1.1.2" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, - "uglify-js": { - "version": "2.8.20", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.20.tgz", - "integrity": "sha1-vocQD7wY3jh27WBunSS0VoMRzs8=", - "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - } - } - }, - "user-home": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", - "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=" - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "v8flags": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.0.12.tgz", - "integrity": "sha1-cyNdn3F2+OiDP7KGeVRF95ONhOU=", - "requires": { - "user-home": "1.1.1" - } - }, - "validate-npm-package-license": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", - "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } - }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", - "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", - "requires": { - "async": "2.3.0", - "chokidar": "1.6.1", - "graceful-fs": "4.1.11" - } - }, - "webpack": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.3.3.tgz", - "integrity": "sha1-7swIPBj7e/lY6k9AtXpmQMWgzHg=", - "requires": { - "acorn": "4.0.11", - "acorn-dynamic-import": "2.0.2", - "ajv": "4.11.5", - "ajv-keywords": "1.5.1", - "async": "2.3.0", - "enhanced-resolve": "3.1.0", - "interpret": "1.0.2", - "json-loader": "0.5.4", - "loader-runner": "2.3.0", - "loader-utils": "0.2.17", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", - "source-map": "0.5.6", - "supports-color": "3.2.3", - "tapable": "0.2.6", - "uglify-js": "2.8.20", - "watchpack": "1.3.1", - "webpack-sources": "0.2.3", - "yargs": "6.6.0" - }, - "dependencies": { - "acorn": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.11.tgz", - "integrity": "sha1-7c2jvZN+dVZBDULtWGD2c5nHlMA=" - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "1.0.0" - } - }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" - } - } - } - }, - "webpack-sources": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", - "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", - "requires": { - "source-list-map": "1.1.1", - "source-map": "0.5.6" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "requires": { - "mkdirp": "0.5.1" - } - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "requires": { - "camelcase": "3.0.0" - }, - "dependencies": { - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - } - } - } - } - }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, - "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" - }, "dependencies": { "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, - "requires": { - "kind-of": "3.2.2" - }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } + "dev": true } } }, @@ -8869,10 +2934,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "1.1.5" - } + "dev": true } } }, @@ -8881,9 +2943,6 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", "dev": true, - "requires": { - "safe-buffer": "5.1.1" - }, "dependencies": { "safe-buffer": { "version": "5.1.1", @@ -8903,12 +2962,6 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", "dev": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, "dependencies": { "minimist": { "version": "1.2.0", @@ -8922,46 +2975,24 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1", - "readable-stream": "2.3.2" - } + "dev": true }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.3.8", - "path-type": "1.1.0" - } + "dev": true }, "read-pkg-up": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } + "dev": true }, "readable-stream": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.2.tgz", "integrity": "sha1-WgTfBeT1f+Pw3Gj90R3FyXx+b00=", - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "safe-buffer": "5.1.1", - "string_decoder": "1.0.2", - "util-deprecate": "1.0.2" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -8979,34 +3010,19 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "minimatch": "3.0.4", - "readable-stream": "2.3.2", - "set-immediate-shim": "1.0.1" - } + "dev": true }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "dev": true, - "requires": { - "indent-string": "2.1.0", - "strip-indent": "1.0.1" - } + "dev": true }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", "dev": true, - "requires": { - "balanced-match": "0.4.2", - "math-expression-evaluator": "1.2.17", - "reduce-function-call": "1.0.2" - }, "dependencies": { "balanced-match": { "version": "0.4.2", @@ -9021,9 +3037,6 @@ "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", "dev": true, - "requires": { - "balanced-match": "0.4.2" - }, "dependencies": { "balanced-match": { "version": "0.4.2", @@ -9046,22 +3059,13 @@ "regenerator-transform": { "version": "0.9.11", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz", - "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=", - "requires": { - "babel-runtime": "6.23.0", - "babel-types": "6.25.0", - "private": "0.1.7" - } + "integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=" }, "regex-cache": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", - "dev": true, - "requires": { - "is-equal-shallow": "0.1.3", - "is-primitive": "2.0.0" - } + "dev": true }, "regexp-quote": { "version": "0.0.0", @@ -9071,31 +3075,19 @@ "regexpu-core": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", - "requires": { - "regenerate": "1.3.2", - "regjsgen": "0.2.0", - "regjsparser": "0.1.5" - } + "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=" }, "registry-auth-token": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", - "dev": true, - "requires": { - "rc": "1.2.1", - "safe-buffer": "5.0.1" - } + "dev": true }, "registry-url": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", - "dev": true, - "requires": { - "rc": "1.2.1" - } + "dev": true }, "regjsgen": { "version": "0.2.0", @@ -9106,9 +3098,6 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", - "requires": { - "jsesc": "0.5.0" - }, "dependencies": { "jsesc": { "version": "0.5.0", @@ -9139,10 +3128,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "1.0.2" - } + "dev": true }, "require-directory": { "version": "2.1.1", @@ -9165,46 +3151,30 @@ "resolve": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", - "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", - "requires": { - "path-parse": "1.0.5" - } + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=" }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dev": true, - "requires": { - "align-text": "0.1.4" - } + "dev": true }, "rimraf": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true, - "requires": { - "glob": "7.1.2" - } + "dev": true }, "ripemd160": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", - "dev": true, - "requires": { - "hash-base": "2.0.2", - "inherits": "2.0.3" - } + "dev": true }, "rxjs": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.1.tgz", - "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=", - "requires": { - "symbol-observable": "1.0.4" - } + "integrity": "sha1-ti91fyeURdJloYpY+wpw3JDpFiY=" }, "safe-buffer": { "version": "5.0.1", @@ -9214,12 +3184,7 @@ "sanitize-html": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.14.1.tgz", - "integrity": "sha1-cw/6Ikm98YMz7/5FsoYXPJxa0Lg=", - "requires": { - "htmlparser2": "3.9.2", - "regexp-quote": "0.0.0", - "xtend": "4.0.1" - } + "integrity": "sha1-cw/6Ikm98YMz7/5FsoYXPJxa0Lg=" }, "sax": { "version": "1.2.3", @@ -9230,10 +3195,7 @@ "schema-utils": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "requires": { - "ajv": "5.2.0" - } + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=" }, "semver": { "version": "5.3.0", @@ -9245,38 +3207,17 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "5.3.0" - } + "dev": true }, "send": { "version": "0.15.3", "resolved": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", - "requires": { - "debug": "2.6.7", - "depd": "1.1.0", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.0", - "fresh": "0.5.0", - "http-errors": "1.6.1", - "mime": "1.3.4", - "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" - }, "dependencies": { "debug": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", - "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", - "requires": { - "ms": "2.0.0" - } + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=" }, "ms": { "version": "2.0.0", @@ -9294,13 +3235,6 @@ "version": "2.4.3", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.3.tgz", "integrity": "sha1-WYaxewUCZCtkHCH4GLGszjICXSM=", - "requires": { - "etag": "1.8.0", - "fresh": "0.5.0", - "ms": "2.0.0", - "parseurl": "1.3.1", - "safe-buffer": "5.0.1" - }, "dependencies": { "ms": { "version": "2.0.0", @@ -9312,13 +3246,7 @@ "serve-static": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", - "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", - "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.1", - "send": "0.15.3" - } + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=" }, "serviceworker-cache-polyfill": { "version": "4.0.0", @@ -9353,18 +3281,12 @@ "version": "2.4.8", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } + "dev": true }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "requires": { - "shebang-regex": "1.0.0" - } + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=" }, "shebang-regex": { "version": "1.0.0", @@ -9395,80 +3317,11 @@ "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", "dev": true }, - "socket.io-client": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.3.tgz", - "integrity": "sha1-bK9K/5+FsZ/ZG2zhPWmttWT4hzs=", - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "2.6.8", - "engine.io-client": "3.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "object-component": "0.0.3", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "socket.io-parser": "3.1.2", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "socket.io-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.2.tgz", - "integrity": "sha1-28IoIVH8T6675Aru3Ady66YZ9/I=", - "requires": { - "component-emitter": "1.2.1", - "debug": "2.6.8", - "has-binary2": "1.0.2", - "isarray": "2.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", - "dev": true, - "requires": { - "is-plain-obj": "1.1.0" - } + "dev": true }, "source-list-map": { "version": "2.0.0", @@ -9484,19 +3337,13 @@ "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", - "dev": true, - "requires": { - "source-map": "0.5.6" - } + "dev": true }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", - "dev": true, - "requires": { - "spdx-license-ids": "1.2.2" - } + "dev": true }, "spdx-expression-parse": { "version": "1.0.4", @@ -9531,24 +3378,13 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", - "dev": true, - "requires": { - "inherits": "2.0.3", - "readable-stream": "2.3.2" - } + "dev": true }, "stream-http": { "version": "2.7.2", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", - "dev": true, - "requires": { - "builtin-status-codes": "3.0.0", - "inherits": "2.0.3", - "readable-stream": "2.3.2", - "to-arraybuffer": "1.0.1", - "xtend": "4.0.1" - } + "dev": true }, "strict-uri-encode": { "version": "1.1.0", @@ -9559,56 +3395,36 @@ "string_decoder": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", - "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", - "requires": { - "safe-buffer": "5.0.1" - } + "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=" }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", - "dev": true, - "requires": { - "strip-ansi": "3.0.1" - } + "dev": true }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } + "dev": true }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" }, "strip-bom": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } + "dev": true }, "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "dev": true, - "requires": { - "get-stdin": "4.0.1" - } + "dev": true }, "strip-json-comments": { "version": "2.0.1", @@ -9621,28 +3437,12 @@ "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "dev": true, - "requires": { - "css-parse": "1.7.0", - "debug": "2.2.0", - "glob": "7.0.6", - "mkdirp": "0.5.1", - "sax": "0.5.8", - "source-map": "0.1.43" - }, "dependencies": { "glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } + "dev": true }, "sax": { "version": "0.5.8", @@ -9654,10 +3454,7 @@ "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": "1.0.1" - } + "dev": true } } }, @@ -9665,12 +3462,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.1.tgz", "integrity": "sha1-d/SzT9Aw0lsmF7z1UT21sHMMQIk=", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "lodash.clonedeep": "4.5.0", - "when": "3.6.4" - } + "dev": true }, "supports-color": { "version": "2.0.0", @@ -9681,64 +3473,31 @@ "version": "0.7.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", - "dev": true, - "requires": { - "coa": "1.0.3", - "colors": "1.1.2", - "csso": "2.3.2", - "js-yaml": "3.7.0", - "mkdirp": "0.5.1", - "sax": "1.2.3", - "whet.extend": "0.9.9" - } + "dev": true }, "sw-precache": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/sw-precache/-/sw-precache-5.2.0.tgz", "integrity": "sha512-sKctdX+5hUxkqJ/1DM88ubQ+QRvyw7CnxWdk909N2DgvxMqc1gcQFrwL7zpVc87wFmCA/OvRQd0iMC2XdFopYg==", - "dev": true, - "requires": { - "dom-urls": "1.1.0", - "es6-promise": "4.1.0", - "glob": "7.1.2", - "lodash.defaults": "4.2.0", - "lodash.template": "4.4.0", - "meow": "3.7.0", - "mkdirp": "0.5.1", - "pretty-bytes": "4.0.2", - "sw-toolbox": "3.6.0", - "update-notifier": "1.0.3" - } + "dev": true }, "sw-precache-webpack-plugin": { "version": "0.10.1", "resolved": "https://registry.npmjs.org/sw-precache-webpack-plugin/-/sw-precache-webpack-plugin-0.10.1.tgz", "integrity": "sha1-PjUwAPeQVM4/e4/IBH3XYs0O6+U=", - "dev": true, - "requires": { - "del": "2.2.2", - "sw-precache": "5.2.0", - "uglify-js": "2.8.29" - } + "dev": true }, "sw-toolbox": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/sw-toolbox/-/sw-toolbox-3.6.0.tgz", "integrity": "sha1-Jt8dHHA0hljk3qKIQxkUm3sxg7U=", "dev": true, - "requires": { - "path-to-regexp": "1.7.0", - "serviceworker-cache-polyfill": "4.0.0" - }, "dependencies": { "path-to-regexp": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } + "dev": true } } }, @@ -9763,15 +3522,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", - "dev": true, - "requires": { - "setimmediate": "1.0.5" - } - }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=" + "dev": true }, "to-arraybuffer": { "version": "1.0.1", @@ -9810,22 +3561,13 @@ "type-is": { "version": "1.6.15", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", - "requires": { - "media-typer": "0.3.0", - "mime-types": "2.1.15" - } + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=" }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dev": true, - "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" - } + "dev": true }, "uglify-to-browserify": { "version": "1.0.2", @@ -9849,10 +3591,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "dev": true, - "requires": { - "macaddress": "0.2.8" - } + "dev": true }, "uniqs": { "version": "2.0.0", @@ -9875,17 +3614,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", - "dev": true, - "requires": { - "boxen": "0.6.0", - "chalk": "1.1.3", - "configstore": "2.1.0", - "is-npm": "1.0.0", - "latest-version": "2.0.0", - "lazy-req": "1.1.0", - "semver-diff": "2.1.0", - "xdg-basedir": "2.0.0" - } + "dev": true }, "urijs": { "version": "1.18.10", @@ -9898,10 +3627,6 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, "dependencies": { "punycode": { "version": "1.3.2", @@ -9915,29 +3640,19 @@ "version": "0.5.9", "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", "integrity": "sha512-B7QYFyvv+fOBqBVeefsxv6koWWtjmHaMFT6KZWti4KRw8YUD/hOU+3AECvXuzyVawIBx3z7zQRejXCDSO5kk1Q==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "mime": "1.3.4" - } + "dev": true }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dev": true, - "requires": { - "prepend-http": "1.0.4" - } + "dev": true }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "dev": true, - "requires": { - "inherits": "2.0.1" - }, "dependencies": { "inherits": { "version": "2.0.1", @@ -9963,15 +3678,16 @@ "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", "dev": true }, + "v-clipboard": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/v-clipboard/-/v-clipboard-1.0.4.tgz", + "integrity": "sha512-+CW+Ba5KyUkCxiST5HT6mDwCosTyUKEdSyju8foen8P5805FizS7+vxb2/HxyTOXP+LcE5/YkJI+3659V+Oe1Q==" + }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", - "dev": true, - "requires": { - "spdx-correct": "1.0.2", - "spdx-expression-parse": "1.0.4" - } + "dev": true }, "vary": { "version": "1.1.1", @@ -9988,20 +3704,23 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "dev": true, - "requires": { - "indexof": "0.0.1" - } + "dev": true }, "vue": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/vue/-/vue-2.3.4.tgz", "integrity": "sha512-oLCxuVcVQ2inwSbS7B+zfjB6CSjgQ0yyCOzPcg7S5CXeOCbtkaiN5frR6MtwvrveqbG86OsGd9jWf6JsGyQkLw==" }, - "vue-facebook-signin-button": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/vue-facebook-signin-button/-/vue-facebook-signin-button-1.0.1.tgz", - "integrity": "sha1-xqrbFgghhG8td2f7jmkeC55oICg=" + "vue-chartjs": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/vue-chartjs/-/vue-chartjs-3.3.1.tgz", + "integrity": "sha512-XYNYB3Lkfa2ZIsCH3B7HqPFMZC3flL3+IyjHMXOeVwrzSLlbzPaTQ4lyVS/CD4q8EhwpFluiLIstREtDM58lhQ==" + }, + "vue-collapse": { + "version": "1.0.31", + "resolved": "https://registry.npmjs.org/vue-collapse/-/vue-collapse-1.0.31.tgz", + "integrity": "sha1-gA5pDrM70YP7t+sLYWnlbUsM+ww=", + "dev": true }, "vue-hot-reload-api": { "version": "2.1.0", @@ -10009,34 +3728,11 @@ "integrity": "sha1-nKWKbg35B4VUzhcIaItleHVNht4=", "dev": true }, - "vue-image-crop-upload": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/vue-image-crop-upload/-/vue-image-crop-upload-1.3.14.tgz", - "integrity": "sha1-BjAHthc2ZmK5NTLQHfW9kIu875Q=", - "requires": { - "babel-runtime": "6.23.0" - } - }, "vue-loader": { "version": "12.2.1", "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-12.2.1.tgz", "integrity": "sha1-U/J8CXPThnaPWnUVb0Epte/GulU=", - "dev": true, - "requires": { - "consolidate": "0.14.5", - "hash-sum": "1.0.2", - "js-beautify": "1.6.14", - "loader-utils": "1.1.0", - "lru-cache": "4.1.1", - "postcss": "5.2.17", - "postcss-load-config": "1.2.0", - "postcss-selector-parser": "2.2.3", - "resolve": "1.3.3", - "source-map": "0.5.6", - "vue-hot-reload-api": "2.1.0", - "vue-style-loader": "3.0.1", - "vue-template-es2015-compiler": "1.5.2" - } + "dev": true }, "vue-multiselect": { "version": "2.0.0-beta.15", @@ -10048,14 +3744,6 @@ "resolved": "https://registry.npmjs.org/vue-no-ssr/-/vue-no-ssr-0.1.2.tgz", "integrity": "sha1-RkvG1DR2YrHRdf7KRYadd/ejB9k=" }, - "vue-quill-editor": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-2.2.6.tgz", - "integrity": "sha512-7AZvzZ4LFhhkieIzi/9wSYmxWTQzB4IYOtzKcubBc5lBihaQnGt0cye9pFbaE4yJpBSOCCqIMe7zQ09wnIaS0Q==", - "requires": { - "quill": "1.3.0" - } - }, "vue-router": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-2.6.0.tgz", @@ -10064,37 +3752,24 @@ "vue-server-renderer": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.3.4.tgz", - "integrity": "sha512-PgWas+UmA0ABed8u0sDGXDPWv0n7k9Fk6P2iLAtQHl2hYKhxZzWw0zfUmqDf0e0gxLjsToj4ee1iB8uK+cf0CQ==", - "requires": { - "chalk": "1.1.3", - "hash-sum": "1.0.2", - "he": "1.1.1", - "lodash.template": "4.4.0", - "lodash.uniq": "4.5.0", - "resolve": "1.3.3", - "serialize-javascript": "1.3.0", - "source-map": "0.5.6" - } + "integrity": "sha512-PgWas+UmA0ABed8u0sDGXDPWv0n7k9Fk6P2iLAtQHl2hYKhxZzWw0zfUmqDf0e0gxLjsToj4ee1iB8uK+cf0CQ==" + }, + "vue-slider-component": { + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-2.4.8.tgz", + "integrity": "sha512-DZQWhqXB+GkLeEBNOCJrZnhcy/yDa5NYWmKd+KyKt8ymoRGelMX1JQhkMnbsyW/aI+7Khihmg0v0hZ0TM/+WzA==" }, "vue-style-loader": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.0.1.tgz", "integrity": "sha1-yLY5uy8kuvnXgnTcF+TyZMHe2gg=", - "dev": true, - "requires": { - "hash-sum": "1.0.2", - "loader-utils": "1.1.0" - } + "dev": true }, "vue-template-compiler": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.3.4.tgz", "integrity": "sha512-GezvHn6bw053zIo0TQIjimRpyELjCEOrc5hGHtHUeadbVSdKB9yqY6By9WiYvbFwOZiuMmFpSfjD8VzVibWGtQ==", - "dev": true, - "requires": { - "de-indent": "1.0.2", - "he": "1.1.1" - } + "dev": true }, "vue-template-es2015-compiler": { "version": "1.5.2", @@ -10121,51 +3796,19 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.3.1.tgz", "integrity": "sha1-fYaTkHsozmAT5/NhCqKhrPB9rYc=", - "dev": true, - "requires": { - "async": "2.4.1", - "chokidar": "1.7.0", - "graceful-fs": "4.1.11" - } + "dev": true }, "webpack": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.6.1.tgz", "integrity": "sha1-LgRX8KuxrF3zqxBsacZy8jZ4Xwc=", "dev": true, - "requires": { - "acorn": "5.0.3", - "acorn-dynamic-import": "2.0.2", - "ajv": "4.11.8", - "ajv-keywords": "1.5.1", - "async": "2.4.1", - "enhanced-resolve": "3.1.0", - "interpret": "1.0.3", - "json-loader": "0.5.4", - "json5": "0.5.1", - "loader-runner": "2.3.0", - "loader-utils": "0.2.17", - "memory-fs": "0.4.1", - "mkdirp": "0.5.1", - "node-libs-browser": "2.0.0", - "source-map": "0.5.6", - "supports-color": "3.2.3", - "tapable": "0.2.6", - "uglify-js": "2.8.29", - "watchpack": "1.3.1", - "webpack-sources": "0.2.3", - "yargs": "6.6.0" - }, "dependencies": { "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } + "dev": true }, "camelcase": { "version": "3.0.0", @@ -10177,24 +3820,13 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } + "dev": true }, "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.1.3", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } + "dev": true }, "source-list-map": { "version": "1.1.2", @@ -10206,94 +3838,44 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "requires": { - "has-flag": "1.0.0" - } + "dev": true }, "webpack-sources": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", - "dev": true, - "requires": { - "source-list-map": "1.1.2", - "source-map": "0.5.6" - } + "dev": true }, "yargs": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" - } + "dev": true } } }, "webpack-bundle-analyzer": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.8.2.tgz", - "integrity": "sha1-i2JAwpqdY7xy8J2SD7BQrbzOn+g=", - "requires": { - "acorn": "5.0.3", - "chalk": "1.1.3", - "commander": "2.9.0", - "ejs": "2.5.6", - "express": "4.15.3", - "filesize": "3.5.10", - "gzip-size": "3.0.0", - "lodash": "4.17.4", - "mkdirp": "0.5.1", - "opener": "1.4.3", - "ws": "2.3.1" - } + "integrity": "sha1-i2JAwpqdY7xy8J2SD7BQrbzOn+g=" }, "webpack-dev-middleware": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=", - "dev": true, - "requires": { - "memory-fs": "0.4.1", - "mime": "1.3.4", - "path-is-absolute": "1.0.1", - "range-parser": "1.2.0" - } + "dev": true }, "webpack-hot-middleware": { "version": "2.18.0", "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.18.0.tgz", "integrity": "sha1-oWu1Nbg6aslKeKxevOTzBZ6CdNM=", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "html-entities": "1.2.1", - "querystring": "0.2.0", - "strip-ansi": "3.0.1" - } + "dev": true }, "webpack-merge": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.0.tgz", "integrity": "sha1-atciI7PguDflMeRZfBmfkJNhUR4=", - "dev": true, - "requires": { - "lodash": "4.17.4" - } + "dev": true }, "webpack-node-externals": { "version": "1.6.0", @@ -10304,11 +3886,7 @@ "webpack-sources": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", - "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==", - "requires": { - "source-list-map": "2.0.0", - "source-map": "0.5.6" - } + "integrity": "sha512-05tMxipUCwHqYaVS8xc7sYPTly8PzXayRCB4dTxLhWTqlKUiwH6ezmEe0OSreL1c30LAuA3Zqmc+uEBUGFJDjw==" }, "when": { "version": "3.6.4", @@ -10325,10 +3903,7 @@ "which": { "version": "1.2.14", "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", - "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", - "requires": { - "isexe": "2.0.0" - } + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=" }, "which-module": { "version": "1.0.0", @@ -10340,10 +3915,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", - "dev": true, - "requires": { - "string-width": "1.0.2" - } + "dev": true }, "window-size": { "version": "0.1.0", @@ -10361,11 +3933,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dev": true, - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - } + "dev": true }, "wrappy": { "version": "1.0.2", @@ -10377,35 +3945,18 @@ "version": "1.3.4", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" - } + "dev": true }, "ws": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/ws/-/ws-2.3.1.tgz", - "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=", - "requires": { - "safe-buffer": "5.0.1", - "ultron": "1.1.0" - } + "integrity": "sha1-a5Sz5EfLajY/eF6vlK9jWejoHIA=" }, "xdg-basedir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", - "dev": true, - "requires": { - "os-homedir": "1.0.2" - } - }, - "xmlhttprequest-ssl": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", - "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=" + "dev": true }, "xtend": { "version": "4.0.1", @@ -10428,12 +3979,6 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", "dev": true, - "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", - "window-size": "0.1.0" - }, "dependencies": { "camelcase": { "version": "1.2.1", @@ -10448,9 +3993,6 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", "dev": true, - "requires": { - "camelcase": "3.0.0" - }, "dependencies": { "camelcase": { "version": "3.0.0", @@ -10459,11 +4001,6 @@ "dev": true } } - }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=" } } } diff --git a/package.json b/package.json index 2fefe378..7d4d43d4 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,15 @@ { - "name": "vue-hackernews-2.0", - "description": "A Vue.js project", - "author": "Evan You ", - "private": true, + "name": "@webdollar/front-webdollar", + "version": "0.0.2", + "description": "WebDollar Frontend", + "author": "WebDollar.io", "scripts": { "dev": "node server", "start": "cross-env NODE_ENV=production node server", "build": "rimraf dist && npm run build:client && npm run build:server", "build:client": "cross-env NODE_ENV=production webpack --config build/webpack.client.config.js --progress --hide-modules", - "build:server": "cross-env NODE_ENV=production webpack --config build/webpack.server.config.js --progress --hide-modules" + "build:server": "cross-env NODE_ENV=production webpack --config build/webpack.server.config.js --progress --hide-modules", + "test": "npm run build" }, "engines": { "node": ">=8.0", @@ -20,33 +21,33 @@ "babel-polyfill": "^6.23.0", "babel-preset-es2015": "^6.24.1", "babel-preset-stage-3": "^6.24.1", + "babel-runtime": "^6.26.0", + "chart.js": "^2.7.2", "compression": "^1.6.2", "cookie-parser": "^1.4.3", + "cors": "^2.8.4", "cross-env": "^4.0.0", - "dropzone": "^5.1.1", "es6-promise": "^4.1.0", "express": "^4.15.2", "extract-text-webpack-plugin": "^2.1.0", - "firebase": "^3.7.2", + "https": "^1.0.0", "jsonp": "^0.2.1", "koa": "^2.3.0", "lru-cache": "^4.0.2", - "quill-emoji": "0.0.9", - "quill-image-drop-module": "^1.0.3", - "quill-image-resize-module": "^3.0.0", + "md5": "^2.2.1", + "pem": "^1.12.4", "rxjs": "^5.4.1", "sanitize-html": "^1.14.1", "serve-favicon": "^2.4.1", - "socket.io-client": "^2.0.3", "transform-runtime": "0.0.0", + "v-clipboard": "^1.0.4", "vue": "^2.3.2", - "vue-facebook-signin-button": "^1.0.1", - "vue-image-crop-upload": "^1.3.14", + "vue-chartjs": "^3.3.1", "vue-multiselect": "^2.0.0-beta.15", "vue-no-ssr": "^0.1.2", - "vue-quill-editor": "^2.2.6", "vue-router": "^2.5.0", "vue-server-renderer": "^2.3.2", + "vue-slider-component": "*", "vuex": "^2.3.1", "vuex-router-sync": "^4.1.2", "vuex-saga": "^0.1.3", @@ -56,8 +57,9 @@ "autoprefixer": "^6.7.7", "babel-core": "^6.24.1", "babel-loader": "^6.4.1", - "babel-polyfill": "^6.0.16", "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-runtime": "^6.23.0", + "babel-polyfill": "^6.0.16", "babel-preset-env": "^1.4.0", "babel-preset-es2017": "^6.24.1", "css-loader": "^0.28.0", @@ -69,6 +71,7 @@ "stylus-loader": "^3.0.1", "sw-precache-webpack-plugin": "^0.10.1", "url-loader": "^0.5.8", + "vue-collapse": "^1.0.31", "vue-loader": "^12.0.2", "vue-style-loader": "^3.0.0", "vue-template-compiler": "^2.3.2", diff --git a/public/SkyHub-landing-image.jpg b/public/SkyHub-landing-image.jpg deleted file mode 100755 index 611effa7..00000000 Binary files a/public/SkyHub-landing-image.jpg and /dev/null differ diff --git a/public/SkyHub-logo-square.png b/public/SkyHub-logo-square.png deleted file mode 100644 index dc63c0af..00000000 Binary files a/public/SkyHub-logo-square.png and /dev/null differ diff --git a/public/SkyHub-logo.png b/public/SkyHub-logo.png deleted file mode 100644 index d9c376c0..00000000 Binary files a/public/SkyHub-logo.png and /dev/null differ diff --git a/public/WebDollar-dist/WebDollar-Protocol-bundle.js b/public/WebDollar-dist/WebDollar-Protocol-bundle.js new file mode 100644 index 00000000..7bf98777 --- /dev/null +++ b/public/WebDollar-dist/WebDollar-Protocol-bundle.js @@ -0,0 +1,118223 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/dist/"; +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = 363); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(10); +var core = __webpack_require__(50); +var hide = __webpack_require__(38); +var redefine = __webpack_require__(39); +var ctx = __webpack_require__(51); +var PROTOTYPE = 'prototype'; + +var $export = function (type, name, source) { + var IS_FORCED = type & $export.F; + var IS_GLOBAL = type & $export.G; + var IS_STATIC = type & $export.S; + var IS_PROTO = type & $export.P; + var IS_BIND = type & $export.B; + var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]; + var exports = IS_GLOBAL ? core : core[name] || (core[name] = {}); + var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}); + var key, own, out, exp; + if (IS_GLOBAL) source = name; + for (key in source) { + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if (target) redefine(target, key, out, type & $export.U); + // export + if (exports[key] != out) hide(exports, key, exp); + if (IS_PROTO && expProto[key] != out) expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; + + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) {/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + + + +var base64 = __webpack_require__(568) +var ieee754 = __webpack_require__(569) +var isArray = __webpack_require__(257) + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11))) + +/***/ }), +/* 2 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_node_sockets_node_clients_service_discovery_fallbacks_fallback_nodes_list__ = __webpack_require__(261); +const uuid = __webpack_require__(258); + +const BigNumber = __webpack_require__(68); +const BigInteger = __webpack_require__(31); + +let consts = { + + DEBUG: false, + OPEN_SERVER: true, + +}; + +consts.BLOCKCHAIN = { + + DIFFICULTY:{ + NO_BLOCKS : 10, + TIME_PER_BLOCK : 40, //in s, timestamp in UNIX format + }, + + TIMESTAMP:{ + VALIDATION_NO_BLOCKS: 10, + NETWORK_ADJUSTED_TIME_MAXIMUM_BLOCK_OFFSET: 10*60, + NETWORK_ADJUSTED_TIME_NODE_MAX_UTC_DIFFERENCE: 10*60, + }, + + BLOCKS_POW_LENGTH: 32, + BLOCKS_MAX_TARGET: new BigNumber("0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"), + BLOCKS_MAX_TARGET_BIG_INTEGER: new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16), + BLOCKS_MAX_TARGET_BUFFER: Buffer.from("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", "hex"), + BLOCKS_NONCE : 4, + + LIGHT:{ + + VALIDATE_LAST_BLOCKS: 10 , //overwrite below + SAFETY_LAST_BLOCKS: 40, //overwrite below + + SAFETY_LAST_BLOCKS_DELETE_BROWSER: 500, //overwrite below + SAFETY_LAST_BLOCKS_DELETE_NODE: 100, //overwrite below + + SAFETY_LAST_ACCOUNTANT_TREES: 50, //overwrite below + SAFETY_LAST_ACCOUNTANT_TREES_TO_DELETE: 150, //overwrite below + + SAFETY_LAST_BLOCKS_DELETE: undefined, + + GZIPPED: true, + + }, + + FORKS:{ + + //forks larger than this will not be accepted + IMMUTABILITY_LENGTH: 15, + + }, + + HARD_FORKS : { + + TRANSACTIONS_BUG_2_BYTES: 46950, + + TRANSACTIONS_OPTIMIZATION: 153060, + DIFFICULTY_TIME_BIGGER: 153060, + WALLET_RECOVERY: 153060, + + DIFFICULTY_REMOVED_CONDITION: 161990, + + } + +}; + +consts.BLOCKCHAIN.LIGHT.SAFETY_LAST_BLOCKS_DELETE = ( true ? consts.BLOCKCHAIN.LIGHT.SAFETY_LAST_BLOCKS_DELETE_BROWSER : consts.BLOCKCHAIN.LIGHT.SAFETY_LAST_BLOCKS_DELETE_NODE ); + +consts.BLOCKCHAIN.LIGHT.VALIDATE_LAST_BLOCKS = consts.BLOCKCHAIN.DIFFICULTY.NO_BLOCKS * 2 ; +consts.BLOCKCHAIN.LIGHT.SAFETY_LAST_BLOCKS = consts.BLOCKCHAIN.LIGHT.VALIDATE_LAST_BLOCKS + 2* consts.BLOCKCHAIN.DIFFICULTY.NO_BLOCKS ; + +consts.MINI_BLOCKCHAIN = { + + TOKENS: { + + OTHER_TOKENS:{ + LENGTH: 24, + ACTIVATED: -1, // not activated + }, + + WEBD_TOKEN:{ + LENGTH: 1, + VALUE: 0x01, + } + + } +}; + + +consts.POPOW_PARAMS={ + m: 30, //length proof Pi for validating the Genesis + + k: 30, //length proof Xi for Accountant Tree + k1: 30, //length + + d: 0.5, + + ACTIVATED : true, +}; + + +consts.TRANSACTIONS = { + + VERSIONS:{ + SCHNORR_VERSION: 0x01, + }, + + SIGNATURE_SCHNORR:{ + LENGTH : 64 + }, + +}; + +consts.SPAM_GUARDIAN = { + + TRANSACTIONS:{ + MAXIMUM_IDENTICAL_INPUTS: 10, + MAXIMUM_IDENTICAL_OUTPUTS: 255, + } + +}; + +consts.ADDRESSES = { + + PRIVATE_KEY:{ + WIF:{ + VERSION_PREFIX : "80", //it is in HEX + CHECK_SUM_LENGTH : 4, //in bytes + }, + LENGTH : 64, //ending BASE64 HEX + }, + PUBLIC_KEY:{ + LENGTH : 32, //ending BASE64 HEX + }, + + ADDRESS:{ + + USE_BASE64 : true, + + LENGTH : 20, + + WIF:{ + LENGTH: 0, + + VERSION_PREFIX : "00", //ending BASE64 HEX + CHECK_SUM_LENGTH : 4, //in bytes //ending BASE64 HEX + + PREFIX_BASE64 : "584043fe", //BASE64 HEX WEBD$ + //WEBD 584043 + //WEBD$ 584043FF + + SUFFIX_BASE64 : "FF", //ending BASE64 HEX + //#w$ EC3F + //%#$ 8FBF + + PREFIX_BASE58 : "00", //BASE58 HEX and it will be converted to Base64/58 + SUFFIX_BASE58 : "", + } + + }, + +}; + +let prefix = ( consts.ADDRESSES.ADDRESS.USE_BASE64 ? consts.ADDRESSES.ADDRESS.WIF.PREFIX_BASE64 : consts.ADDRESSES.ADDRESS.WIF.PREFIX_BASE58); +let suffix = ( consts.ADDRESSES.ADDRESS.USE_BASE64 ? consts.ADDRESSES.ADDRESS.WIF.SUFFIX_BASE64 : consts.ADDRESSES.ADDRESS.WIF.SUFFIX_BASE58); +consts.ADDRESSES.ADDRESS.WIF.LENGTH = consts.ADDRESSES.ADDRESS.LENGTH + consts.ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH + consts.ADDRESSES.ADDRESS.WIF.VERSION_PREFIX.length/2 + prefix.length/2 + suffix.length/2; + +consts.HASH_ARGON2_PARAMS = { + salt: 'Satoshi_is_Finney', + saltBuffer: Buffer.from("Satoshi_is_Finney"), + time: 2, + memPower: 8, + memBytes: 256, + parallelism: 2, + //argon2d + algoNode: 0, + algoBrowser: 0, + hashLen: 32, + distPath: 'https://antelle.github.io/argon2-browser/dist' +}; + +// change also to Browser-Mining-WebWorker.js + +//DATABASE NAMES +consts.DATABASE_NAMES = { + + DEFAULT_DATABASE: "defaultDB"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + + WALLET_DATABASE: "defaultDB2"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + + //TODO IT SHOULD BE REPLACED with "walletDB", + + BLOCKCHAIN_DATABASE:{ + FOLDER:"blockchainDB3"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + FILE_NAME : 'blockchain4.bin', + }, + + POOL_DATABASE: "poolDB"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + SERVER_POOL_DATABASE: "serverPoolDB"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + MINER_POOL_DATABASE: "minerPoolDB"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + + VALIDATE_DATABASE: "validateDB"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + TESTS_DATABASE: "testDB"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||""), + TRANSACTIONS_DATABASE: "transactionsDB"+(Object({"MINING_POOL_STATUS":undefined}).INSTANCE_PREFIX||"") + +}; + +consts.MINING_POOL_TYPE = { + + MINING_POOL_DISABLED: 0, + + MINING_POOL_SERVER: 1, + MINING_POOL: 2, + MINING_POOL_MINER: 3, + +}; + +consts.MINING_POOL = { + + MINING_POOL_STATUS : (undefined || consts.MINING_POOL_TYPE.MINING_POOL_DISABLED), + + MINING:{ + MINING_POOL_MINIMUM_PAYOUT: 200000, + FEE_PER_BYTE: 600, // in WEBD + MAXIMUM_BLOCKS_TO_MINE_BEFORE_ERROR: 13 + }, + + CONNECTIONS:{ + + NO_OF_IDENTICAL_IPS: 80, + + }, + + + +}; + +consts.SETTINGS = { + + UUID: uuid.v4(), + + NODE: { + + VERSION: "1.192", + + VERSION_COMPATIBILITY: "1.174", + VERSION_COMPATIBILITY_POOL_MINERS: "1.174", + + VERSION_COMPATIBILITY_UPDATE: "", + VERSION_COMPATIBILITY_UPDATE_BLOCK_HEIGHT: 0, + + PROTOCOL: "WebDollar", + SSL: true, + + PORT: 80, //port + MINER_POOL_PORT: 8086, //port + + }, + + PARAMS: { + FALLBACK_INTERVAL: 10 * 1000, //miliseconds + STATUS_INTERVAL: 40 * 1000, + LATENCY_CHECK: 5*1000, + MAX_ALLOWED_LATENCY: 10*1000, //miliseconds + CONCURRENCY_BLOCK_DOWNLOAD_MINERS_NUMBER: ( true? 10 : 30), + + + WAITLIST: { + TRY_RECONNECT_AGAIN: 30 * 1000, //miliseconds + INTERVAL: 2 * 1000, //miliseconds + + //banned nodes + BLOCKED_NODES: [ ], //addresses that will be blocked example: "domain.com" + }, + + SIGNALING: { + SERVER_PROTOCOL_CONNECTING_WEB_PEERS_INTERVAL: 2 * 1000, + }, + + MAX_SIZE: { + BLOCKS_MAX_SIZE_BYTES : 1 * 1024 * 1024 , // in bytes + SOCKET_MAX_SIZE_BYRES : 3 * 1024 * 1024 + 50, // in bytes + + SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES: 32 * 1024, //32 kb + MINIMUM_SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES: 32 *1024, //32 kb + }, + + WALLET:{ + VERSION: "0.1" + }, + + CONNECTIONS:{ + + NO_OF_IDENTICAL_IPS: 20, + + SOCKETS_TO_PROPAGATE_NEW_BLOCK_TIP: 100, + + TERMINAL:{ + + CLIENT: { + + MAX_SOCKET_CLIENTS_WAITLIST: 3, + MAX_SOCKET_CLIENTS_WAITLIST_FALLBACK: 3, + + MIN_SOCKET_CLIENTS_WAITLIST: 0, + MIN_SOCKET_CLIENTS_WAITLIST_FALLBACK: 2, + + SERVER_OPEN:{ + MAX_SOCKET_CLIENTS_WAITLIST: 5, + MAX_SOCKET_CLIENTS_WAITLIST_FALLBACK: 3, + }, + + SSL:{ + MAX_SOCKET_CLIENTS_WAITLIST_WHEN_SSL: 20, + MAX_SOCKET_CLIENTS_WAITLIST_FALLBACK_WHEN_SSL: 10, + }, + }, + + + SERVER: { + MAXIMUM_CONNECTIONS_FROM_TERMINAL: 400, + MAXIMUM_CONNECTIONS_FROM_BROWSER: 1000, + + MAXIMUM_CONNECTIONS_FROM_BROWSER_POOL: 2000, + MAXIMUM_CONNECTIONS_FROM_TERMINAL_POOL: 2000, + + TERMINAL_CONNECTIONS_REQUIRED_TO_DISCONNECT_FROM_FALLBACK: 10, + }, + + }, + + BROWSER:{ + + CLIENT: { + MAXIMUM_CONNECTIONS_IN_BROWSER_WAITLIST: 4, + MAXIMUM_CONNECTIONS_IN_BROWSER_WAITLIST_FALLBACK: 2, + + MIN_SOCKET_CLIENTS_WAITLIST: 0, + MIN_SOCKET_CLIENTS_WAITLIST_FALLBACK: 1, + }, + + SERVER: {}, + + WEBRTC: { + MAXIMUM_CONNECTIONS: 13, + }, + + }, + + COMPUTED: { + CLIENT:{ + + }, + SERVER:{ + + }, + }, + + FORKS:{ + MAXIMUM_BLOCKS_TO_DOWNLOAD: 300, + MAXIMUM_BLOCKS_TO_DOWNLOAD_TO_USE_SLEEP: 30, + }, + + TIMEOUT: { + WAIT_ASYNC_DISCOVERY_TIMEOUT: 7500, + } + + }, + + }, + + MEM_POOL : { + + TIME_LOCK : { + TRANSACTIONS_MAX_LIFE_TIME_IN_POOL_AFTER_EXPIRATION: 2 * consts.BLOCKCHAIN.LIGHT.VALIDATE_LAST_BLOCKS, + }, + + MAXIMUM_TRANSACTIONS_TO_DOWNLOAD: 100, + + } +}; + +consts.TERMINAL_WORKERS = { + + // file gets created on build + CPU_WORKER_NONCES_WORK: 700, //per seconds + + CPU_CPP_WORKER_NONCES_WORK: 0, //per second 0 is undefined + CPU_CPP_WORKER_NONCES_WORK_BATCH: 500, //per second + + //NONCES_WORK should be way bigger than WORK_BATCHES + + + //TODO + GPU_WORKER_NONCES_WORK: 20000, //per blocks, should be batches x 10 seconds + GPU_WORKER_NONCES_WORK_BATCH: 200, //per blocks + + /** + * cpu + * cpu-cpp + * gpu + */ + TYPE: "cpu", //cpu-cpp + + // file gets created on build + PATH: './dist_bundle/terminal_worker.js', + PATH_CPP: './dist_bundle/CPU/argon2-bench2', + PATH_GPU: './dist_bundle/GPU/argon2-gpu-test', + + GPU_MODE: "opencl", //opencl + GPU_MAX: 1, + GPU_INSTANCES: 1, + + // make it false to see their output (console.log's, errors, ..) + SILENT: true, + + // -1 disables multi-threading. + // 0 defaults to number of cpus / 2. + // + // Threading isn't used: + // - if it detects only 1 cpu. + // - if you use 0 and u got only 2 cpus. + CPU_MAX: 0, //for CPU-CPP use, 2x or even 3x threads +}; + +if (Object({"MINING_POOL_STATUS":undefined}).MAXIMUM_CONNECTIONS_FROM_BROWSER !== undefined) + consts.SETTINGS.PARAMS.CONNECTIONS.TERMINAL.SERVER.MAXIMUM_CONNECTIONS_FROM_BROWSER = Object({"MINING_POOL_STATUS":undefined}).MAXIMUM_CONNECTIONS_FROM_BROWSER; + +if (Object({"MINING_POOL_STATUS":undefined}).MAXIMUM_CONNECTIONS_FROM_TERMINAL !== undefined) + consts.SETTINGS.PARAMS.CONNECTIONS.TERMINAL.SERVER.MAXIMUM_CONNECTIONS_FROM_TERMINAL = Object({"MINING_POOL_STATUS":undefined}).MAXIMUM_CONNECTIONS_FROM_TERMINAL; + + +if ( consts.DEBUG === true ){ + + consts.SETTINGS.NODE.VERSION = "3"+consts.SETTINGS.NODE.VERSION; + consts.SETTINGS.NODE.VERSION_COMPATIBILITY = "3"+consts.SETTINGS.NODE.VERSION_COMPATIBILITY; + consts.SETTINGS.NODE.SSL = false; + consts.MINING_POOL.MINING.MAXIMUM_BLOCKS_TO_MINE_BEFORE_ERROR = 10000; + + consts.SETTINGS.NODE.PORT = 8085; + + //consts.BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_BUG_2_BYTES = 100; + + __WEBPACK_IMPORTED_MODULE_0_node_sockets_node_clients_service_discovery_fallbacks_fallback_nodes_list__["a" /* default */].nodes = [{ + "addr": ["http://127.0.0.1:8085"], + }]; + + +} + + +/* harmony default export */ __webpack_exports__["a"] = (consts); + +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 3 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__ = __webpack_require__(25); +const bs58 = __webpack_require__(262); + + + +const safeCompare = __webpack_require__(577); + +class BufferExtended { + + substr(buffer, index, count){ + + if (count === undefined) + count = buffer.length; + + let length = Math.min(index + count, buffer.length); + + if (length-index < 0) + throw {message: "length-index <= 0...", buffer: buffer.toString("hex"), index:index, length:length, count: count}; + + if (length-index === 0) return new Buffer(0); + + let buf = new Buffer(length-index); + buffer.copy(buf, 0, index, length); + + return buf; + + } + + longestMatch(buffer, buffer2, startIndex){ + + if (startIndex === undefined) + startIndex = 0; + + let i = 0; + while (i + startIndex < buffer.length && i < buffer2.length ) { + + if (buffer[i + startIndex] !== buffer2[i]) //no more match + break; + + i++; + } + + if (i !== 0){ //we have a match + return this.substr(buffer, startIndex, i); + } + + return null; + + } + + safeCompare(buffer1, buffer2){ + + if (!buffer1.equals(buffer2)) return false; //optimization + + return safeCompare(buffer1, buffer2); + + } + + toBase(buffer){ + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.USE_BASE64) + return __WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__["a" /* default */].encodeBase64(buffer); + else + return bs58.encode(buffer); + + } + + fromBase(string){ + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.USE_BASE64) + return __WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__["a" /* default */].decodeBase64(string); //if it is string, it must be a Base string + else + return bs58.decode(string); + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new BufferExtended()); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +/* eslint-disable node/no-deprecated-api */ +var buffer = __webpack_require__(1) +var Buffer = buffer.Buffer + +// alternative to using Object.keys for old browsers +function copyProps (src, dst) { + for (var key in src) { + dst[key] = src[key] + } +} +if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) { + module.exports = buffer +} else { + // Copy properties from require('buffer') + copyProps(buffer, exports) + exports.Buffer = SafeBuffer +} + +function SafeBuffer (arg, encodingOrOffset, length) { + return Buffer(arg, encodingOrOffset, length) +} + +// Copy static methods from Buffer +copyProps(Buffer, SafeBuffer) + +SafeBuffer.from = function (arg, encodingOrOffset, length) { + if (typeof arg === 'number') { + throw new TypeError('Argument must not be a number') + } + return Buffer(arg, encodingOrOffset, length) +} + +SafeBuffer.alloc = function (size, fill, encoding) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + var buf = Buffer(size) + if (fill !== undefined) { + if (typeof encoding === 'string') { + buf.fill(fill, encoding) + } else { + buf.fill(fill) + } + } else { + buf.fill(0) + } + return buf +} + +SafeBuffer.allocUnsafe = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return Buffer(size) +} + +SafeBuffer.allocUnsafeSlow = function (size) { + if (typeof size !== 'number') { + throw new TypeError('Argument must be a number') + } + return buffer.SlowBuffer(size) +} + + +/***/ }), +/* 5 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_main_blockchain_wallet_Main_Blockchain_Wallet__ = __webpack_require__(572); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_main_blockchain_chain_Main_Blockchain__ = __webpack_require__(716); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_main_blockchain_mining_Main_Blockchain_Mining__ = __webpack_require__(789); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_main_blockchain_agents_Main_Blockchain_Agent__ = __webpack_require__(798); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_main_blockchain_balances_Main_Blockchain_Balances__ = __webpack_require__(852); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_common_utils_validation_Validations_Utils__ = __webpack_require__(854); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_node_lists_waitlist_Nodes_Waitlist__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_common_crypto_WebDollar_Crypto__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11__node_lists_types_Node_Type__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_12_common_mining_pools_pool_pool_management_Pool_Management__ = __webpack_require__(857); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_13_common_mining_pools_miner_Miner_Pool_Management__ = __webpack_require__(880); + + + + + + + + + + + + + + + + +let ServerPoolManagement = undefined; + +if (false) + ServerPoolManagement = require("common/mining-pools/server-pool/Server-Pool-Management").default; + + +class Blockchain{ + + constructor(){ + + this._startMiningNextTimeSynchronized = false; + this._blockchainInitiated = false; + + this._walletLoaded = false; + + this.Chain = new __WEBPACK_IMPORTED_MODULE_2_main_blockchain_chain_Main_Blockchain__["a" /* default */]( undefined ); + this.blockchain = this.Chain; + + this._synchronized = undefined; + + this.Wallet = new __WEBPACK_IMPORTED_MODULE_1_main_blockchain_wallet_Main_Blockchain_Wallet__["a" /* default */](this.Chain); + + this.Mining = new __WEBPACK_IMPORTED_MODULE_3_main_blockchain_mining_Main_Blockchain_Mining__["a" /* default */](this.Chain, undefined); + this.SoloMining = this.Mining; + + this.Transactions = this.Chain.transactions; + this.Transactions.setWallet(this.Wallet); + + this.Balances = new __WEBPACK_IMPORTED_MODULE_5_main_blockchain_balances_Main_Blockchain_Balances__["a" /* default */](this.Chain); + + this.AccountantTree = this.Chain.accountantTree; + + this.onLoaded = new Promise((resolve)=>{ + this._onLoadedResolver = resolve; + }); + + this.onPoolsInitialized = new Promise((resolve)=>{ + this._onPoolsInitializedResolver = resolve; + }); + + this.onPoolsCreated = new Promise((resolve)=>{ + this._onPoolsCreatedResolver = resolve; + }); + + this._loaded = false; + this._poolsLoaded = false; + + } + + async createBlockchain(agentName, beforeBlockchainLoadCallback, afterBlockchainLoadCallback, afterSynchronizationCallback, synchronize = true ){ + + this._blockchainInitiated = true; + + this.Agent = __WEBPACK_IMPORTED_MODULE_4_main_blockchain_agents_Main_Blockchain_Agent__["a" /* default */].createAgent(agentName, this.blockchain); + this.Agent.setBlockchain(this.blockchain); + + this.blockchain._setAgent(this.Agent); + + //Waiting Until a Single Window is present + let validation; + try { + + validation = new __WEBPACK_IMPORTED_MODULE_6_common_utils_validation_Validations_Utils__["a" /* default */](); + + await validation.validate(); + + } catch (exception){ + + } + + await validation.waitSingleTab( () => { + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Multiple Windows Detected"}); + }); + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Single Window"}); + + + await this.initializeBlockchain( beforeBlockchainLoadCallback, afterBlockchainLoadCallback, afterSynchronizationCallback, synchronize ); + + } + + async loadWallet(){ + + if (!this._walletLoaded) { + await this.Wallet.loadWallet(); + + //starting mining + await this.Mining.loadMinerAddress(this.Wallet.addresses[0], this.Wallet); + + this._walletLoaded = true; + } + } + + async initializeBlockchain(beforeBlockchainLoadCallback, afterBlockchainLoadCallback, afterSynchronizationCallback, synchronize = true){ + + await this.loadWallet(); + + await this.createMiningPools(); + + if (true) { //let's make a hash first + + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Loading Hashing Function"}); + await __WEBPACK_IMPORTED_MODULE_10_common_crypto_WebDollar_Crypto__["a" /* default */].hashPOW(Buffer(32)); + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Successfully Hash Function Loaded"}); + + } + + if (typeof beforeBlockchainLoadCallback === "function") + await beforeBlockchainLoadCallback(); + + if (synchronize){ + + await this.Chain.loadBlockchain(); + + await this.blockchain.transactions.pendingQueue.pendingQueueSavingManager.loadPendingTransactions(); + + } + + if (typeof afterBlockchainLoadCallback === "function") + await afterBlockchainLoadCallback(); + + //loading the blockchain + if (synchronize){ + + await this.Agent.initializeStartAgentOnce(); + + if (this.Agent.consensus && !__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DEBUG) + await this.synchronizeBlockchain(true); //it tries synchronizing multiple times + else { + this.synchronized = true; //consider it as synchronized + this.startMining(); + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Blockchain Ready to Mine"}); + } + + } + + if (typeof afterSynchronizationCallback === "function") + await afterSynchronizationCallback(); + + this.loaded = true; + } + + async startMining(){ + if (Object({"MINING_POOL_STATUS":undefined}).START_MINING || this._startMiningNextTimeSynchronized) + this.Mining.startMining(); + } + + async startMiningInstantly(){ + this.Mining.startMining(); + } + + + /** + * it tries synchronizing multiple times + * @returns {Promise.} + */ + async synchronizeBlockchain(firstTime, synchronizeComplete=false){ + + if (this.synchronized === false) return; + + this.synchronized = false; + console.warn("################### RESYNCHRONIZATION STARTED ##########"); + + let suspendMining = false; + if (!this.blockchain.light || (this.blockchain.light && __WEBPACK_IMPORTED_MODULE_7_node_lists_Nodes_List__["a" /* default */].nodes.length <= 0)) + suspendMining = true; + + if (suspendMining) { + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Start Synchronizing"}); + this.Mining.stopMining(); + } + + while (!this.synchronized){ + + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Synchronizing"}); + + let resultAgentStarted = await this.Agent.startAgent(firstTime, synchronizeComplete); + firstTime = false; + + if (resultAgentStarted.result){ + + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Synchronization Successful"}); + this.synchronized = true; + + } else { + + if (firstTime) + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', { message: "Error Synchronizing" }); + else + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "No Internet Access"}); + + if (__WEBPACK_IMPORTED_MODULE_7_node_lists_Nodes_List__["a" /* default */].nodes.length === 0) + __WEBPACK_IMPORTED_MODULE_9_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].resetWaitlist(__WEBPACK_IMPORTED_MODULE_11__node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER); + + this.Agent.initializeAgentPromise(); + } + + } + + this.synchronized = true; + console.warn( "Blockchain Ready to Mine" ); + + if (suspendMining) { + this.startMining(); + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/status', {message: "Blockchain Ready to Mine"}); + } + + } + + get poolsLoaded(){ + return this._poolsLoaded; + } + + + get loaded(){ + return this._loaded; + } + + + set loaded(newValue){ + this._loaded = newValue; + this._onLoadedResolver(newValue); + } + + set startMiningNextTimeSynchronized(newValue){ + this._startMiningNextTimeSynchronized = newValue; + + if (newValue && this.synchronized) + this.startMining(); + } + + get synchronized(){ + return this._synchronized; + } + + set synchronized(newValue){ + this._synchronized = newValue; + + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/synchronizing', !newValue ); + __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit('blockchain/synchronized', newValue ); + + } + + + //MINING POOLS SETTINGS + async createMiningPools(){ + + if (this.PoolManagement === undefined) + this.PoolManagement = new __WEBPACK_IMPORTED_MODULE_12_common_mining_pools_pool_pool_management_Pool_Management__["a" /* default */](this.blockchain, this.Wallet); + + if (this.MinerPoolManagement === undefined) + this.MinerPoolManagement = new __WEBPACK_IMPORTED_MODULE_13_common_mining_pools_miner_Miner_Pool_Management__["a" /* default */](this.blockchain); + + if (ServerPoolManagement !== undefined && this.ServerPoolManagement === undefined) + this.ServerPoolManagement = new ServerPoolManagement(); + + this._onPoolsCreatedResolver(true); + + await this._initializeMiningPools(); + + + } + + async _initializeMiningPools(){ + + let pool = false, minerPool = false, serverPool = false; + + try { + pool = await this.PoolManagement.initializePoolManagement(); + } catch (exception){ + console.error("PoolManagement raised an error", exception); + } + + try { + minerPool = await this.MinerPoolManagement.initializeMinerPoolManagement(); + } catch (exception){ + console.error("MinerPool raised an error", exception); + } + + try { + if (this.ServerPoolManagement !== undefined) + serverPool = await this.ServerPoolManagement.initializeServerPoolManagement(); + } catch (exception){ + + console.error("ServerPool raised an error", exception) + } + + this._onPoolsInitializedResolver(pool, minerPool, serverPool); + + await __WEBPACK_IMPORTED_MODULE_8_common_events_Status_Events__["a" /* default */].emit("main-pools/status", { message: "Pool Initialized"}); + + await this._startMiningPools(); + + } + + async _startMiningPools(){ + + if (this.MinerPoolManagement.minerPoolSettings.minerPoolActivated) + await this.MinerPoolManagement.setMinerPoolStarted(this.MinerPoolManagement.minerPoolSettings.minerPoolActivated, true); + + if (this.PoolManagement.poolSettings.poolActivated) + await this.PoolManagement.setPoolStarted(this.PoolManagement.poolSettings.poolActivated, true); + + if (this.ServerPoolManagement !== undefined && this.ServerPoolManagement.serverPoolSettings.serverPoolActivated) + await this.ServerPoolManagement.setServerPoolStarted(this.ServerPoolManagement.serverPoolSettings.serverPoolActivated, true); + + } + + + get isPoolActivated(){ + return (this.PoolManagement !== undefined && this.PoolManagement._poolStarted) || (this.ServerPoolManagement !== undefined && this.ServerPoolManagement._serverPoolStarted); + } + + get versionCompatibility() { + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.NODE.VERSION_COMPATIBILITY_UPDATE !== '' && __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.NODE.VERSION_COMPATIBILITY_UPDATE_BLOCK_HEIGHT !== 0 && this.blockchain.blocks.length > __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.NODE.VERSION_COMPATIBILITY_UPDATE_BLOCK_HEIGHT) + return __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.NODE.VERSION_COMPATIBILITY_UPDATE; + else + return __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.NODE.VERSION_COMPATIBILITY; + } + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new Blockchain()); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 6 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_node_lists_geolocation_lists_GeoLocation_Lists__ = __webpack_require__(200); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_sockets_protocol_extend_socket_Socket_Address__ = __webpack_require__(64); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Mode_List_Object_js__ = __webpack_require__(739); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Connection_Type__ = __webpack_require__(37); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_node_lists_waitlist_Nodes_Waitlist__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_node_lists_types_Node_Type__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_consts_const_global__ = __webpack_require__(2); + + + + + + + + +const EventEmitter = __webpack_require__(46); + +/* + The List is populated with Node Sockets only if the socket pass the Hello Message + */ + +class NodesList { + + // nodes = [] - storing the connected sockets + // events = [] - used for callbacks + + constructor(){ + + console.log("NodesList constructor"); + + this.emitter = new EventEmitter(); + this.emitter.setMaxListeners(2000); + + this.nodes = []; + this.nodesTotal = 0; + + setInterval( this.recalculateSocketsLatency.bind(this), __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].SETTINGS.PARAMS.LATENCY_CHECK ); + + this.removeDisconnectedSockets(); + } + + + searchNodeSocketByAddress(sckAddress, connectionType, validationDoubleConnectionsTypes){ + + if (connectionType === undefined) connectionType = 'all'; + + sckAddress = __WEBPACK_IMPORTED_MODULE_1_common_sockets_protocol_extend_socket_Socket_Address__["a" /* default */].createSocketAddress(sckAddress); + + for (let i=0; i=0) + socket.node.protocol.nodeDomain = socket.node.protocol.nodeDomain.replace("my-ip", socket.node.sckAddress.address); + + if (socket.node.protocol.nodeDomain.indexOf("browser")===0) + socket.node.protocol.nodeDomain = socket.node.protocol.nodeDomain.replace("browser", socket.node.sckAddress.address); + + await __WEBPACK_IMPORTED_MODULE_4_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].addNewNodeToWaitlist(socket.node.protocol.nodeDomain, undefined, socket.node.protocol.nodeType, socket.node.protocol.nodeConsensusType, true, socket.node.level, socket, socket); + + } + + if (socket.node.protocol.nodeType === __WEBPACK_IMPORTED_MODULE_5_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER ){ //add light waitlist + await __WEBPACK_IMPORTED_MODULE_4_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].addNewNodeToWaitlist( socket.node.sckAddress, undefined, socket.node.protocol.nodeType, socket.node.protocol.nodeConsensusType, true, socket.node.level, socket, socket); + } + + + __WEBPACK_IMPORTED_MODULE_0_node_lists_geolocation_lists_GeoLocation_Lists__["a" /* default */].includeSocket(socket); + + await this.emitter.emit("nodes-list/connected", object); + + this.nodes.push(object); + + return true; + } + + console.error("Already connected to ", socket.node.sckAddress.getAddress(true)); + socket.disconnect(); + return false; + } + + //Removing socket from the list (the connection was terminated) + disconnectSocket(socket, connectionType){ + + + if (socket !== null && !socket.hasOwnProperty("node") ) { + + //console.error("Error - disconnectSocket rejected by invalid helloValidated"); + //if (socket.hasOwnProperty("node")) console.log("hello validated value",socket.node.protocol.helloValidated); + socket.disconnect(); + return false; + } + + if (connectionType === undefined) connectionType = 'all'; + + //console.log("disconnecting", socket, this.nodes); + + for (let i=this.nodes.length-1; i>=0; i--) + if ((this.nodes[i].connectionType === connectionType || connectionType === "all") && + (this.nodes[i].socket === socket || this.nodes[i].socket.node.sckAddress.uuid === socket.node.sckAddress.uuid )) { + + console.error('deleting client socket '+ i +" "+ socket.node.sckAddress.toString()); + + let nodeToBeDeleted = this.nodes[i]; + this.nodes.splice(i, 1); + + this.emitter.emit("nodes-list/disconnected", nodeToBeDeleted); + + socket.disconnect(); + return true; + } + + //console.error("Disconnecting Socket but it was not validated before...", socket.node.sckAddress.getAddress()); + + socket.disconnect(); + return false; + } + + //return the JOIN of the clientSockets and serverSockets + getNodesByConnectionType( connectionType, fallback = undefined ){ + + if ( connectionType === undefined) connectionType = 'all'; + + let list = []; + + for (let i=0; i= 0 ) + list.push(this.nodes[i]); + } else + // in case type is just a simple string + if ( connectionType === this.nodes[i].socket.node.protocol.connectionType || connectionType === "all" ) + list.push(this.nodes[i]); + + return list; + } + + //return the JOIN of the clientSockets and serverSockets + getNodesByType(type){ + + if ( type === undefined) type = 'all'; + + let list = []; + + for (let i=0; i= 0) + list.push(this.nodes[i]); + } else + // in case type is just a simple string + if (type === this.nodes[i].socket.node.protocol.nodeType || type === "all") + list.push( this.nodes[i] ); + + return list; + } + + + countNodesByConnectionType(connectionType, fallback){ + + if ( connectionType === undefined) connectionType = 'all'; + + let count = 0; + + for (let i=0; i= 0) + count++; + } + else if (connectionType === this.nodes[i].connectionType || connectionType === "all") + count++; + } + + return count; + } + + countNodesByType(nodeType){ + + if ( nodeType === undefined) nodeType = 'all'; + + let count = 0; + + for (let i=0; i= 0) + count++; + } + else if (nodeType === this.nodes[i].socket.node.protocol.nodeType || nodeType === "all") + count++; + } + + return count; + } + + + removeDisconnectedSockets(){ + + for (let i=this.nodes.length-1; i>=0; i--) + if (this.nodes[i].socket.disconnected) + this.nodes.splice(i,1); + + setTimeout(()=>{this.removeDisconnectedSockets()}, 2000); + } + + disconnectAllNodes(connectionType = __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Connection_Type__["a" /* default */].CONNECTION_CLIENT_SOCKET){ + + for (let i=this.nodes.length-1; i>=0; i--) + if ( this.nodes[i].socket.node.protocol.connectionType === connectionType || connectionType === "all" ) + this.nodes[i].socket.disconnect(); + + } + + disconnectAllNodesByConsensusType(nodeConsensusType){ + + for (let i=this.nodes.length-1; i>=0; i--) + if ( this.nodes[i].socket.node.protocol.nodeConsensusType === nodeConsensusType ) + this.nodes[i].socket.disconnect(); + + } + + disconnectFromFallbacks(){ + + for (let i=this.nodes.length-1; i>=0; i--) + if (this.nodes[i].isFallback) + this.nodes.splice(i,1); + + } + + countFallbacks(){ + + let count = 0; + + for (let i=this.nodes.length-1; i>=0; i--) + if (this.nodes[i].isFallback) + count ++; + + return count; + + } + + recalculateSocketsLatency(){ + + for (let i=0; i=0; i--) { + number = number.plus( power.multiply(buffer[i]) ); + power = power.multiply(256); + } + + return number; + } + + convertBigNumber( bigNumber, length ){ + //converting number value into a buffer + + let buffer = new Buffer(length); + let count = length-1; + + while (bigNumber.isGreaterThan(0)){ + + buffer[count] = bigNumber.modulo(256).toNumber(); + bigNumber = bigNumber.dividedToIntegerBy(256); + + count --; + } + + return buffer; + } + + serializeNumber1Byte(data){ + //converting number value into a buffer + let buffer = Buffer(1); + buffer[0] = (data & 0xff); + + return buffer; + } + + serializeNumber2Bytes(data){ + //converting number value into a buffer + let buffer = Buffer(2); + buffer[1] = data & 0xff; + buffer[0] = data>>8 & 0xff; + + return buffer; + } + + serializeNumber3Bytes(data){ + //converting number value into a buffer + let buffer = Buffer(3); + buffer[2] = data & 0xff; + buffer[1] = data>>8 & 0xff; + buffer[0] = data>>16 & 0xff; + + return buffer; + } + + //converting number value into a buffer + serializeNumber4Bytes(data){ + let buffer = Buffer(4); + buffer[3] = data & 0xff; + buffer[2] = data>>8 & 0xff; + buffer[1] = data>>16 & 0xff; + buffer[0] = data>>24 & 0xff; + + return buffer; + } + + //will show the nonce positive + deserializeNumber4Bytes_Positive(buffer, offset = 0){ + + let value = 0; + + for ( let i = offset; i<=offset + 3 ; i++) + value = (value *256 ) + buffer[i]; + + return value; + } + + deserializeNumber4Bytes(buffer, offset=0){ + return buffer[3+offset] | (buffer[2+offset] << 8) | (buffer[1+offset] << 16) | (buffer[0+offset] << 24); + } + + deserializeNumber3Bytes(buffer, offset=0){ + return buffer[2+offset] | (buffer[1+offset] << 8) | (buffer[0+offset] << 16); + } + + deserializeNumber2Bytes(buffer, offset=0){ + return buffer[1+offset] | (buffer[0+offset] << 8); + } + + deserializeNumber1Bytes(buffer, offset=0){ + return buffer[0+offset]; + } + + + serializeNumber7Bytes(long){ + + // we want to represent the input as a 8-bytes array + var byteArray = new Buffer(7); + + for ( let index = 0; index < byteArray.length; index ++ ) { + let byte = long & 0xff; + byteArray [ index ] = byte; + long = (long - byte) / 256 ; + } + + return byteArray; + } + + deserializeNumber7Bytes(buffer, offset = 0){ + + let value = 0; + + for ( let i = offset + 6 ; i >= offset; i--) + value = (value * 256) + buffer[i]; + + return value; + } + + deserializeNumber(buffer){ + + if(buffer.length === 1) return buffer[0]; else + + if (buffer.length === 2) return buffer[1] | (buffer[0] << 8); else + + if (buffer.length === 3) return buffer[2] | (buffer[1] << 8) | (buffer[0] << 16); else + + if (buffer.length === 4) return buffer[3] | (buffer[2] << 8) | (buffer[1] << 16) | (buffer[0] << 24); else + + if (buffer.length === 6) return buffer[5] | (buffer[4] << 8) | (buffer[3] << 16) | (buffer[2] << 24) | (buffer[1] << 32) | (buffer[0] << 40); + + } + + /** + * Convers buffer to a Fixed Length buffer + * @returns {Buffer} + */ + serializeToFixedBuffer(noBytes, buffer){ + + if (buffer === undefined || buffer === null) + return new Buffer(noBytes); + if (buffer.length === noBytes) // in case has the same number of bits as output + return buffer; + + let result = new Buffer(noBytes); + + let c = 0; + for (let i = buffer.length-1; i >= 0; i--){ + c++; + result[noBytes-c] = buffer[i]; + } + + return result; + } + + serializeHashOptimized(hash){ + + return this.serializeBufferRemovingLeadingZeros(hash); + + } + + deserializeHashOptimized(buffer,offset){ + + let hashPrefix = []; + + let hashLength = this.deserializeNumber1Bytes(buffer, offset); + offset += 1; + + for (let i = 0; i < 32 - hashLength; i++) hashPrefix.push(0); + + let hashLeadingZero = __WEBPACK_IMPORTED_MODULE_0__BufferExtended__["a" /* default */].substr(buffer, offset, hashLength); + offset += hashLength; + + let deserializedHash = Buffer.concat([ + new Buffer(hashPrefix), + hashLeadingZero + ]); + + let result = { + hash: deserializedHash, + offset: offset + }; + + return result; + } + + serializeBufferRemovingLeadingZeros(buffer){ + + let count = 0; + while (count < buffer.length && buffer[count] === 0) + count++; + + let result = new Buffer(1 + buffer.length - count ); + result [0] = buffer.length - count; + + for (let i = count; i < buffer.length; i++) + result[i-count+1] = buffer[i]; + + return result; + + } + + + /** + * Returns the position of most significant bit of 1 + * Eg: for n = 00000000000000000000000000001010 returns 3 + * @returns {number} + */ + mostSignificantOneBitPosition(n){ + + let num = 0; + + if (0xFFFF0000 & n) { + n = (0xFFFF0000 & n)>>16; + num += 16; + } + if (0xFF00 & n) { + n = (0xFF00 & n) >> 8; + num += 8; + } + if (0xF0 & n) { + n = (0xF0 & n) >> 4; + num += 4; + } + if (12 & n) { + n = (12 & n) >> 2; + num += 2; + } + if (2 & n) { + n = (2 & n) >> 1; + num += 1; + } + + return num; + } + + + /** + * Serialize a Big Number object into an optimal Buffer + * based on https://stackoverflow.com/questions/8482309/converting-javascript-integer-to-byte-array-and-back + */ + serializeBigNumber(data){ + //9999999999.99999999999 + // d: [999, 9999999, 9999999, 9999000] + // d biggest number is 0x5AF3107A3FFF + // e: 9 - it can also be negative + // s: 1 + + if (data instanceof BigNumber === false) + throw 'data is not big decimal'; + if ( data.c.length === 0 ) + throw "data is 0 and can't be "; + + let buffer = new Buffer( 1 + 1 + data.c.length*6 ); + + buffer[0] = Math.abs(data.e) % 128 + (data.e >= 0 ? 0 : 1)*128; + buffer[1] = data.c.length % 128 + (data.s >= 0? 0 : 1)*128; + + for (let i = 0; i < data.c.length; i++) { + + //converting the number to buffer + let long = data.c[i], byte; + + byte = long & 0xff; + buffer[2 + (i * 6 )] = byte; + long = (long - byte) / 256 ; + + byte = long & 0xff; + buffer[2 + (i * 6 + 1 )] = byte; + long = (long - byte) / 256 ; + + byte = long & 0xff; + buffer[2 + (i * 6 + 2 )] = byte; + long = (long - byte) / 256 ; + + byte = long & 0xff; + buffer[2 + (i * 6 + 3 )] = byte; + long = (long - byte) / 256 ; + + byte = long & 0xff; + buffer[2 + (i * 6 + 4 )] = byte; + long = (long - byte) / 256 ; + + byte = long & 0xff; + buffer[2 + (i * 6 + 5 )] = byte; + long = (long - byte) / 256 ; + + } + + return buffer; + } + + /** + * Deserialize a Big Number object from an optimal Buffer + * based on https://stackoverflow.com/questions/8482309/converting-javascript-integer-to-byte-array-and-back + */ + deserializeBigNumber(buffer, offset ){ + + offset = offset || 0; + + let bigNumber = {e:0, s:0, c: []}; + + if (!Buffer.isBuffer(buffer)) + throw "Can't deserialize Big Number because it is not a buffer"; + + bigNumber.e = buffer[0 + offset ] % 128; + bigNumber.e *= Math.floor(buffer[0 + offset] / 128) === 0 ? 1 : -1; + + let length = buffer[1 + offset ] % 128; + bigNumber.s = Math.floor(buffer[1 + offset] / 128) === 0 ? 1 : -1; + + for (let i = 0; i < length; i++){ + + let nr = 0 ; + + nr = buffer[2 + i*6 + 5 + offset ]; + nr = (nr * 256) + buffer[2 + i*6 + 4 + offset ]; + nr = (nr * 256) + buffer[2 + i*6 + 3 + offset ]; + nr = (nr * 256) + buffer[2 + i*6 + 2 + offset ]; + nr = (nr * 256) + buffer[2 + i*6 + 1 + offset ]; + nr = (nr * 256) + buffer[2 + i*6 + 0 + offset ]; + + bigNumber.c.push(nr); + } + + //console.log("bigNumber", bigNumber); + let res = new BigNumber(0); + res.c = bigNumber.c; + res.s = bigNumber.s; + res.e = bigNumber.e; + + return { + number: res, + newOffset: 2+length*6 + offset, + } + } + + + + + deserializeNumber(buffer){ + + if(buffer.length === 1) return buffer[0]; else + + if (buffer.length === 2) return buffer[1] | (buffer[0] << 8); else + + if (buffer.length === 3) return buffer[2] | (buffer[1] << 8) | (buffer[0] << 16); else + + if (buffer.length === 4) return buffer[3] | (buffer[2] << 8) | (buffer[1] << 16) | (buffer[0] << 24); + + } + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new Serialization()); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(14); +module.exports = function (it) { + if (!isObject(it)) throw TypeError(it + ' is not an object!'); + return it; +}; + + +/***/ }), +/* 10 */ +/***/ (function(module, exports) { + +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self + // eslint-disable-next-line no-new-func + : Function('return this')(); +if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef + + +/***/ }), +/* 11 */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || Function("return this")() || (1,eval)("this"); +} catch(e) { + // This works if the window reference is available + if(typeof window === "object") + g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), +/* 12 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_utils_Advanced_Emitter__ = __webpack_require__(187); + + +class StatusEvents extends __WEBPACK_IMPORTED_MODULE_0_common_utils_Advanced_Emitter__["a" /* default */]{ + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new StatusEvents()); + +/***/ }), +/* 13 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return !!exec(); + } catch (e) { + return true; + } +}; + + +/***/ }), +/* 14 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; + + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __webpack_require__) { + +var store = __webpack_require__(118)('wks'); +var uid = __webpack_require__(74); +var Symbol = __webpack_require__(10).Symbol; +var USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function (name) { + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; + + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __webpack_require__) { + +var ERRORS = __webpack_require__(303) +var NATIVE = __webpack_require__(188) + +// short-hand +var tfJSON = ERRORS.tfJSON +var TfTypeError = ERRORS.TfTypeError +var TfPropertyTypeError = ERRORS.TfPropertyTypeError +var tfSubError = ERRORS.tfSubError +var getValueTypeName = ERRORS.getValueTypeName + +var TYPES = { + arrayOf: function arrayOf (type) { + type = compile(type) + + function _arrayOf (array, strict) { + if (!NATIVE.Array(array)) return false + if (NATIVE.Nil(array)) return false + + return array.every(function (value, i) { + try { + return typeforce(type, value, strict) + } catch (e) { + throw tfSubError(e, i) + } + }) + } + _arrayOf.toJSON = function () { return '[' + tfJSON(type) + ']' } + + return _arrayOf + }, + + maybe: function maybe (type) { + type = compile(type) + + function _maybe (value, strict) { + return NATIVE.Nil(value) || type(value, strict, maybe) + } + _maybe.toJSON = function () { return '?' + tfJSON(type) } + + return _maybe + }, + + map: function map (propertyType, propertyKeyType) { + propertyType = compile(propertyType) + if (propertyKeyType) propertyKeyType = compile(propertyKeyType) + + function _map (value, strict) { + if (!NATIVE.Object(value)) return false + if (NATIVE.Nil(value)) return false + + for (var propertyName in value) { + try { + if (propertyKeyType) { + typeforce(propertyKeyType, propertyName, strict) + } + } catch (e) { + throw tfSubError(e, propertyName, 'key') + } + + try { + var propertyValue = value[propertyName] + typeforce(propertyType, propertyValue, strict) + } catch (e) { + throw tfSubError(e, propertyName) + } + } + + return true + } + + if (propertyKeyType) { + _map.toJSON = function () { + return '{' + tfJSON(propertyKeyType) + ': ' + tfJSON(propertyType) + '}' + } + } else { + _map.toJSON = function () { return '{' + tfJSON(propertyType) + '}' } + } + + return _map + }, + + object: function object (uncompiled) { + var type = {} + + for (var typePropertyName in uncompiled) { + type[typePropertyName] = compile(uncompiled[typePropertyName]) + } + + function _object (value, strict) { + if (!NATIVE.Object(value)) return false + if (NATIVE.Nil(value)) return false + + var propertyName + + try { + for (propertyName in type) { + var propertyType = type[propertyName] + var propertyValue = value[propertyName] + + typeforce(propertyType, propertyValue, strict) + } + } catch (e) { + throw tfSubError(e, propertyName) + } + + if (strict) { + for (propertyName in value) { + if (type[propertyName]) continue + + throw new TfPropertyTypeError(undefined, propertyName) + } + } + + return true + } + _object.toJSON = function () { return tfJSON(type) } + + return _object + }, + + oneOf: function oneOf () { + var types = [].slice.call(arguments).map(compile) + + function _oneOf (value, strict) { + return types.some(function (type) { + try { + return typeforce(type, value, strict) + } catch (e) { + return false + } + }) + } + _oneOf.toJSON = function () { return types.map(tfJSON).join('|') } + + return _oneOf + }, + + quacksLike: function quacksLike (type) { + function _quacksLike (value) { + return type === getValueTypeName(value) + } + _quacksLike.toJSON = function () { return type } + + return _quacksLike + }, + + tuple: function tuple () { + var types = [].slice.call(arguments).map(compile) + + function _tuple (values, strict) { + if (NATIVE.Nil(values)) return false + if (NATIVE.Nil(values.length)) return false + if (strict && (values.length !== types.length)) return false + + return types.every(function (type, i) { + try { + return typeforce(type, values[i], strict) + } catch (e) { + throw tfSubError(e, i) + } + }) + } + _tuple.toJSON = function () { return '(' + types.map(tfJSON).join(', ') + ')' } + + return _tuple + }, + + value: function value (expected) { + function _value (actual) { + return actual === expected + } + _value.toJSON = function () { return expected } + + return _value + } +} + +function compile (type) { + if (NATIVE.String(type)) { + if (type[0] === '?') return TYPES.maybe(type.slice(1)) + + return NATIVE[type] || TYPES.quacksLike(type) + } else if (type && NATIVE.Object(type)) { + if (NATIVE.Array(type)) return TYPES.arrayOf(type[0]) + + return TYPES.object(type) + } else if (NATIVE.Function(type)) { + return type + } + + return TYPES.value(type) +} + +function typeforce (type, value, strict, surrogate) { + if (NATIVE.Function(type)) { + if (type(value, strict)) return true + + throw new TfTypeError(surrogate || type, value) + } + + // JIT + return typeforce(compile(type), value, strict) +} + +// assign types to typeforce function +for (var typeName in NATIVE) { + typeforce[typeName] = NATIVE[typeName] +} + +for (typeName in TYPES) { + typeforce[typeName] = TYPES[typeName] +} + +var EXTRA = __webpack_require__(686) +for (typeName in EXTRA) { + typeforce[typeName] = EXTRA[typeName] +} + +// async wrapper +function __async (type, value, strict, callback) { + // default to falsy strict if using shorthand overload + if (typeof strict === 'function') return __async(type, value, false, strict) + + try { + typeforce(type, value, strict) + } catch (e) { + return callback(e) + } + + callback() +} + +typeforce.async = __async +typeforce.compile = compile +typeforce.TfTypeError = TfTypeError +typeforce.TfPropertyTypeError = TfPropertyTypeError + +module.exports = typeforce + + +/***/ }), +/* 17 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_crypto_ed25519__ = __webpack_require__(69); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_node_menu_Advanced_Messages__ = __webpack_require__(71); + + + + + +// tutorial based on http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript +// full demo https://bstavroulakis.com/demos/billcoin/address.php + +//video tutorial https://asecuritysite.com/encryption/base58 + + + + +class InterfaceBlockchainAddressHelper{ + + constructor (){ + + } + + static _generatePrivateKeyAdvanced(salt, showDebug, privateKeyWIF){ + + //tutorial based on http://procbits.com/2013/08/27/generating-a-bitcoin-address-with-javascript + + let privateKey; + + if (privateKeyWIF !== undefined && privateKeyWIF !== null) { + let result = InterfaceBlockchainAddressHelper.validatePrivateKeyWIF(privateKeyWIF); + if (result.result) { + privateKey = result.privateKey; + } + } + + if (privateKey === undefined) { + privateKey = __WEBPACK_IMPORTED_MODULE_0_common_crypto_ed25519__["a" /* default */].generatePrivateKey(); + } + + + //if you want to follow the step-by-step results in this article, comment the + //previous code and uncomment the following + + if (showDebug) { + console.log("privateKeyHex", privateKey.toString("hex"), "length", privateKey.length) //1184CD2CDD640CA42CFC3A091C51D549B2F016D454B2774019C2B2D2E08529FD + } + + /** + * Private Key was calculated before + * Let's calculate the PrivateKeyWIF (with checksum) + */ + + //add 0x80 to the front, https://en.bitcoin.it/wiki/List_of_address_prefixes + let privateKeyAndVersion = Buffer.concat( [ Buffer.from(__WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.VERSION_PREFIX, "hex"), privateKey] ); + let checksum = InterfaceBlockchainAddressHelper._calculateChecksum(privateKeyAndVersion, showDebug); + + + //append checksum to end of the private key and version + let keyWithChecksum = Buffer.concat( [privateKeyAndVersion, checksum]); + + if (showDebug) + console.log("keyWithChecksum", keyWithChecksum, typeof keyWithChecksum); //"801184CD2CDD640CA42CFC3A091C51D549B2F016D454B2774019C2B2D2E08529FD206EC97E" + + privateKeyWIF = keyWithChecksum; + + if (showDebug) { + console.log("privateKeyWIF", privateKeyWIF.toString("hex"), "length", privateKeyWIF.length); //base58 "5Hx15HFGyep2CfPxsJKe2fXJsCVn5DEiyoeGGF6JZjGbTRnqfiD" + console.log("privateKey", privateKey.toString("hex"), "length", privateKey.length) //base58 "5Hx15HFGyep2CfPxsJKe2fXJsCVn5DEiyoeGGF6JZjGbTRnqfiD" + } + + return { + privateKeyWIF: privateKeyWIF, + privateKey: privateKey, + }; + } + + static _generatePrivateKey(salt, showDebug){ + + return InterfaceBlockchainAddressHelper._generatePrivateKeyAdvanced(salt, showDebug).privateKeyWIF.string; + } + + /** + * generate PublicKey from PrivateKeyWIF + * @param privateKeyWIF + * @param showDebug + * @returns {{result, privateKey}|*} + * @private + */ + static _generatePublicKey(privateKeyWIF, showDebug){ + + // Tutorial based on https://github.com/cryptocoinjs/secp256k1-node + + if (privateKeyWIF === null || privateKeyWIF === undefined || !Buffer.isBuffer(privateKeyWIF) ){ + console.error("ERROR! ", privateKeyWIF, " is not a Buffer"); + throw {message: 'privateKeyWIF must be a Buffer', privateKeyWIF: privateKeyWIF}; + } + + let validation = InterfaceBlockchainAddressHelper.validatePrivateKeyWIF(privateKeyWIF); + + if (showDebug) + console.log("VALIDATION", validation); + + let privateKey = undefined; + + if (validation.result === false) return validation; + else privateKey = validation.privateKey; + + if (showDebug) + console.log("privateKey", privateKey, typeof privateKey); + + // get the public key in a compressed format + const pubKey = __WEBPACK_IMPORTED_MODULE_0_common_crypto_ed25519__["a" /* default */].generatePublicKey(privateKey); + + if (showDebug) + console.log("pubKey", pubKey); + + return new Buffer(pubKey); + } + + static verifySignedData(msg, signature, pubKey){ + return __WEBPACK_IMPORTED_MODULE_0_common_crypto_ed25519__["a" /* default */].verify(signature, msg, pubKey) + } + + static signMessage(msg, privateKey){ + return __WEBPACK_IMPORTED_MODULE_0_common_crypto_ed25519__["a" /* default */].sign(msg, privateKey); + } + + static _generateUnencodedAddressFromPublicKey(publicKey, showDebug){ + + if (!Buffer.isBuffer(publicKey)) + throw {message: 'publicKey must be a Buffer', publicKey: publicKey}; + + //bitcoin original + let unencodedAddress = __WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__["a" /* default */].RIPEMD160(__WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__["a" /* default */].SHA256(publicKey)); + + if (showDebug) + console.log("hash160 hex", unencodedAddress.toString('hex') ); //"3c176e659bea0f29a3e9bf7880c112b1b31b4dc8" + + return unencodedAddress; + } + + static _generateAddressFromPublicKey(publicKey, showDebug){ + + let unencodedAddress = InterfaceBlockchainAddressHelper._generateUnencodedAddressFromPublicKey(publicKey, showDebug); + + let addressWIF = InterfaceBlockchainAddressHelper.generateAddressWIF(unencodedAddress); + + if (showDebug) + console.log("addressWIF", __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].toBase(addressWIF)); //16UjcYNBG9GTK4uq2f7yYEbuifqCzoLMGS + + return { + unencodedAddress: unencodedAddress, + addressWIF: __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].toBase(addressWIF), + address: __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].toBase(unencodedAddress), + }; + } + + static generateAddressWIF(address, showDebug, toBase = false){ + + if (!Buffer.isBuffer(address) && typeof address === "string") + address = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].fromBase(address); + + let prefix = ( __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.USE_BASE64 ? __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.PREFIX_BASE64 : __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.PREFIX_BASE58); + let suffix = ( __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.USE_BASE64 ? __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.SUFFIX_BASE64 : __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.SUFFIX_BASE58); + + //maybe address is already a + if (address.length === __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX.length/2 + prefix.length/2 + suffix.length/2) + return (toBase ? __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].toBase(address) : address); + + address = Buffer.concat ( [ Buffer.from(__WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX,"hex"), address ]) ; //if using testnet, would use 0x6F or 111. + + let checksum = InterfaceBlockchainAddressHelper._calculateChecksum(address, showDebug); + + let addressWIF = Buffer.concat([ + Buffer.from( prefix , "hex"), + address, + checksum, + Buffer.from( suffix, "hex") + ]); + + + return (toBase ? __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].toBase(addressWIF) : addressWIF); + } + + static generateAddress(salt, privateKeyWIF){ + + let privateKey, publicKey, address; + + let invalidAddress = true; + + while (invalidAddress) { + + privateKey = InterfaceBlockchainAddressHelper._generatePrivateKeyAdvanced(salt, false, privateKeyWIF); + publicKey = InterfaceBlockchainAddressHelper._generatePublicKey(privateKey.privateKeyWIF, false); + address = InterfaceBlockchainAddressHelper._generateAddressFromPublicKey(publicKey, false); + + try { + if (InterfaceBlockchainAddressHelper.getUnencodedAddressFromWIF(address.address) !== null) + invalidAddress = false; + } catch (exception){ + console.error("Address is invalid", address.address, address.address.length); + InterfaceBlockchainAddressHelper.getUnencodedAddressFromWIF(address.address); + } + + } + + return { + address: address.address, + addressWIF: address.addressWIF, + + unencodedAddress: address.unencodedAddress, + + publicKey: publicKey, + privateKey: privateKey, + }; + } + + /** + * address is usually a Base string and it coins Version+Checksum+Address + * @param address + */ + static getUnencodedAddressFromWIF(address){ + + if (typeof address === "string") //base + address = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].fromBase(address); + + if (typeof address === "object" && address.hasOwnProperty("unencodedAddress")) + address = address.unencodedAddress; + + + try { + let result = this._validateAddressWIF(address); + + if (result.result === true) return result.unencodedAddress; + else return null; + + } catch (exception){ + return null; + } + } + + static _calculateChecksum(privateKeyAndVersion, showDebug){ + + //add 0x80 to the front, https://en.bitcoin.it/wiki/List_of_address_prefixes + + if (!Buffer.isBuffer(privateKeyAndVersion) && typeof privateKeyAndVersion === 'string') + privateKeyAndVersion = Buffer.from(privateKeyAndVersion, 'hex'); + + let secondSHA = __WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__["a" /* default */].SHA256(__WEBPACK_IMPORTED_MODULE_1_common_crypto_WebDollar_Crypto__["a" /* default */].SHA256(privateKeyAndVersion)); + let checksum = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(secondSHA, 0, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.CHECK_SUM_LENGTH ); + + if (showDebug) + console.log("checksum", checksum.toString("hex")); //"206EC97E" + + return checksum; + } + + /** + * it returns the validity of PrivateKey + + and in case privateKey is a WIF, it returns the private key without WIF + + * @param privateKeyWIF + * @returns {{result: boolean, privateKey: *}} + */ + static validatePrivateKeyWIF(privateKeyWIF){ + + if (privateKeyWIF === null || !Buffer.isBuffer(privateKeyWIF) ){ + throw {message: 'privateKeyWIF must be a Buffer'}; + } + + //contains VERSION prefix + let versionDetected = false; + let versionDetectedBuffer = ''; + + if (privateKeyWIF.length === __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.CHECK_SUM_LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.VERSION_PREFIX.length/2 ){ + + //console.log("Buffer.IndexOf", privateKeyWIF.indexOf( Buffer.from(ADDRESSES.PRIVATE_KEY.VERSION_PREFIX, "hex") )) + + if (privateKeyWIF.indexOf( Buffer.from(__WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.VERSION_PREFIX, "hex") ) === 0){ + versionDetected = true; + + versionDetectedBuffer = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(privateKeyWIF, 0, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.VERSION_PREFIX.length/2 ); + privateKeyWIF = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(privateKeyWIF, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.VERSION_PREFIX.length/2); + } + + } + + let checkSumDetected = false; + + if (privateKeyWIF.length === __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.CHECK_SUM_LENGTH ) { + + //console.log(privateKeyWIF, privateKeyWIF.length, 32 + consts.ADDRESSES.PRIVATE_KEY.WIF.CHECK_SUM_LENGTH ); + let privateKeyWIFCheckSum = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(privateKeyWIF, privateKeyWIF.length - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.CHECK_SUM_LENGTH ); + + let privateKeyWithoutCheckSum = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(privateKeyWIF, 0, privateKeyWIF.length - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.CHECK_SUM_LENGTH ); + + //versionDetectedBuffer + privateKeyWIFWithoutCheckSum; + let privateKeyJustVersionHex = Buffer.concat([versionDetectedBuffer, privateKeyWithoutCheckSum]); + + + let checksum = InterfaceBlockchainAddressHelper._calculateChecksum(privateKeyJustVersionHex); + + // console.log("checkSum", privateKeyCheckSum, "privateKeyJustVersionHex", privateKeyJustVersionHex); + // console.log("checkSum2", checksum); + + if (checksum.equals(privateKeyWIFCheckSum) ) { + checkSumDetected = true; + + privateKeyWIF = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(privateKeyWIF, 0, privateKeyWIF.length - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.WIF.CHECK_SUM_LENGTH ) + } + } + + + if (privateKeyWIF.length !== __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.PRIVATE_KEY.LENGTH){ + + if (!checkSumDetected) throw {message: "PRIVATE KEY CHECK SUM is not right"}; + + if (!versionDetected) throw {message: "PRIVATE KEY VERSION PREFIX is not recognized"}; + } + + return {result: true, privateKey: privateKeyWIF}; + } + + + /** + * it returns the validity of PrivateKey + + and in case privateKey is a WIF, it returns the private key without WIF + + * @param addressWIF + * @returns {{result: boolean, address: *}} + */ + static _validateAddressWIF(addressWIF){ + + if (addressWIF === null || !Buffer.isBuffer(addressWIF) ){ + throw { message: 'addressWIF must be a Buffer', addressWIF: addressWIF }; + } + + //contains VERSION prefix + let versionDetected = false; + let prefixDetected = false; + let suffixDetected = false; + let versionDetectedBuffer = ''; + + let prefix = ( __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.USE_BASE64 ? __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.PREFIX_BASE64 : __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.PREFIX_BASE58); + let suffix = ( __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.USE_BASE64 ? __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.SUFFIX_BASE64 : __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.SUFFIX_BASE58); + + //prefix + if ( addressWIF.length === __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX.length/2 + prefix.length/2 + suffix.length/2 ){ + + if ( addressWIF.indexOf( Buffer.from(prefix, "hex") ) === 0 ) { + prefixDetected = true; + addressWIF = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(addressWIF, prefix.length/2); + } + + } + + if ( addressWIF.length === __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX.length/2 + suffix.length/2 ) { + + if ( addressWIF.lastIndexOf( Buffer.from(suffix, "hex") ) === addressWIF.length - suffix.length/2 ) { + suffixDetected = true; + addressWIF = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(addressWIF, 0, addressWIF.length - suffix.length/2 ); + } + } + + + if (addressWIF.length === __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX.length/2 ){ + + if (addressWIF.indexOf( Buffer.from(__WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX, "hex") ) === 0){ + versionDetected = true; + + versionDetectedBuffer = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(addressWIF, 0, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX.length/2 ); + addressWIF = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(addressWIF, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.VERSION_PREFIX.length/2); + } + + } + + let checkSumDetected = false; + + if (addressWIF.length === __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.LENGTH + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH ) { + + let addressWIFCheckSum = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(addressWIF, addressWIF.length - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH ); + + let privateKeyWithoutCheckSum = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(addressWIF, 0, addressWIF.length - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH ); + + let privateKeyJustVersionHex = Buffer.concat([versionDetectedBuffer, privateKeyWithoutCheckSum]); + + let checksum = InterfaceBlockchainAddressHelper._calculateChecksum(privateKeyJustVersionHex); + + if (checksum.equals(addressWIFCheckSum) ) { + checkSumDetected = true; + + addressWIF = __WEBPACK_IMPORTED_MODULE_2_common_utils_BufferExtended__["a" /* default */].substr(addressWIF, 0, addressWIF.length - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.WIF.CHECK_SUM_LENGTH ) + } + } + + + if (addressWIF.length !== __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].ADDRESSES.ADDRESS.LENGTH){ + + if (!prefixDetected) + throw {message: "ADDRESS KEY PREFIX is not right", addressWIF: addressWIF}; + + if (!suffixDetected) + throw {message: "ADDRESS KEY SUFFIX is not right", addressWIF: addressWIF}; + + if (!checkSumDetected) + throw {message: "ADDRESS KEY CHECK SUM is not right", addressWIF: addressWIF}; + + if (!versionDetected) + throw {message: "ADDRESS KEY VERSION PREFIX is not recognized", addressWIF: addressWIF}; + } + + return {result: true, unencodedAddress: addressWIF}; + } + + static askForPassword(message){ + + return new Promise( async (resolve) => { + + let answer = await __WEBPACK_IMPORTED_MODULE_4_node_menu_Advanced_Messages__["a" /* default */].input("Please enter your last password (12 words separated by space):"); + + let oldPassword = answer.trim().split(' '); + + if (oldPassword.length !== 12) { + __WEBPACK_IMPORTED_MODULE_4_node_menu_Advanced_Messages__["a" /* default */].alert('Your old password has ' + oldPassword.length + ' words. It must have 12!', "Password Error", "error", 5000); + resolve(null); + return; + } + + resolve(oldPassword); + + + }); + + } + + + + +} + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceBlockchainAddressHelper); + +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __webpack_require__) { + +// Thank's IE8 for his funny defineProperty +module.exports = !__webpack_require__(13)(function () { + return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(9); +var IE8_DOM_DEFINE = __webpack_require__(223); +var toPrimitive = __webpack_require__(54); +var dP = Object.defineProperty; + +exports.f = __webpack_require__(18) ? Object.defineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (IE8_DOM_DEFINE) try { + return dP(O, P, Attributes); + } catch (e) { /* empty */ } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; + + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.15 ToLength +var toInteger = __webpack_require__(56); +var min = Math.min; +module.exports = function (it) { + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; + + +/***/ }), +/* 21 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Logger__ = __webpack_require__(747); + + + +const LOG_TYPE = { + DEFAULT: 0, + POOLS: 1, + BLOCKCHAIN: 2, + BLOCKCHAIN_FORKS: 3, + CLI_MENU: 4, + SAVING_MANAGER: 5, +}; + + +/* + * Logging class which provides a logging helper to work with multiple + * winston logger instances using different configuration settings for + * each logger. This is useful in larger applications where you may want + * group logging output into topics or categories for different parts of + * the code. + */ + +class Log{ + + constructor(){ + + this.LOG_TYPE = LOG_TYPE; + + /* + * Create 4 different loggers with specific settings which can be + * set in the config.json file. + * The default logger uses "info" as default level. + * The pools logger uses "debug" as default level + * You can create new "settings" in the config.json file and + * instantiate another logger below + */ + this.defaultLogger = new __WEBPACK_IMPORTED_MODULE_1__Logger__["a" /* default */]("default", LOG_TYPE.DEFAULT); + this.poolsLogger = new __WEBPACK_IMPORTED_MODULE_1__Logger__["a" /* default */]("pools", LOG_TYPE.POOLS); + this.blockchainLogger = new __WEBPACK_IMPORTED_MODULE_1__Logger__["a" /* default */]("blockchain", LOG_TYPE.BLOCKCHAIN); + this.blockchainForksLogger = new __WEBPACK_IMPORTED_MODULE_1__Logger__["a" /* default */]("blockchainForks", LOG_TYPE.BLOCKCHAIN_FORKS); + this.menuLogger = new __WEBPACK_IMPORTED_MODULE_1__Logger__["a" /* default */]("cli_menu", LOG_TYPE.CLI_MENU); + + this.loggers = {}; + this.loggers[LOG_TYPE.DEFAULT] = this.defaultLogger; + this.loggers[LOG_TYPE.POOLS] = this.poolsLogger; + this.loggers[LOG_TYPE.BLOCKCHAIN] = this.blockchainLogger; + this.loggers[LOG_TYPE.BLOCKCHAIN_FORKS] = this.blockchainForksLogger; + this.loggers[LOG_TYPE.CLI_MENU] = this.menuLogger; + + } + + /* + * Logs an info message + */ + info(msg, config = LOG_TYPE.DEFAULT, msg2, msg3){ + + if (this.loggers[ config ] !== undefined) + this.loggers[ config ].info.apply(this.loggers[ config ], arguments); + + } + + /* + * Logs an info message + */ + log(msg, config = LOG_TYPE.DEFAULT, msg2, msg3){ + + + if (this.loggers[ config ] !== undefined) + this.loggers[ config ].log.apply(this.loggers[ config ], arguments); + + } + + + /* + * Logs an debug message + */ + debug(msg, config = LOG_TYPE.DEFAULT, msg2, msg3){ + + if (this.loggers[ config ] !== undefined) + this.loggers[ config ].debug.apply(this.loggers[ config ], arguments); + + } + + /* + * Logs an error message + */ + error(msg, config = LOG_TYPE.DEFAULT, msg2, msg3){ + + if (this.loggers[ arguments[1] ] !== undefined) + this.loggers[ arguments[1] ].error.apply(this.loggers[ arguments[1] ], arguments); + + + } + + /* + * Logs an error message + */ + warn(msg, config = LOG_TYPE.DEFAULT, msg2, msg3){ + + if (this.loggers[ arguments[1] ] !== undefined) + this.loggers[ arguments[1] ].warn.apply(this.loggers[ arguments[1] ], arguments); + + } + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new Log()); + + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {(function (module, exports) { + 'use strict'; + + // Utils + function assert (val, msg) { + if (!val) throw new Error(msg || 'Assertion failed'); + } + + // Could use `inherits` module, but don't want to move from single file + // architecture yet. + function inherits (ctor, superCtor) { + ctor.super_ = superCtor; + var TempCtor = function () {}; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + + // BN + + function BN (number, base, endian) { + if (BN.isBN(number)) { + return number; + } + + this.negative = 0; + this.words = null; + this.length = 0; + + // Reduction context + this.red = null; + + if (number !== null) { + if (base === 'le' || base === 'be') { + endian = base; + base = 10; + } + + this._init(number || 0, base || 10, endian || 'be'); + } + } + if (typeof module === 'object') { + module.exports = BN; + } else { + exports.BN = BN; + } + + BN.BN = BN; + BN.wordSize = 26; + + var Buffer; + try { + Buffer = __webpack_require__(614).Buffer; + } catch (e) { + } + + BN.isBN = function isBN (num) { + if (num instanceof BN) { + return true; + } + + return num !== null && typeof num === 'object' && + num.constructor.wordSize === BN.wordSize && Array.isArray(num.words); + }; + + BN.max = function max (left, right) { + if (left.cmp(right) > 0) return left; + return right; + }; + + BN.min = function min (left, right) { + if (left.cmp(right) < 0) return left; + return right; + }; + + BN.prototype._init = function init (number, base, endian) { + if (typeof number === 'number') { + return this._initNumber(number, base, endian); + } + + if (typeof number === 'object') { + return this._initArray(number, base, endian); + } + + if (base === 'hex') { + base = 16; + } + assert(base === (base | 0) && base >= 2 && base <= 36); + + number = number.toString().replace(/\s+/g, ''); + var start = 0; + if (number[0] === '-') { + start++; + } + + if (base === 16) { + this._parseHex(number, start); + } else { + this._parseBase(number, base, start); + } + + if (number[0] === '-') { + this.negative = 1; + } + + this.strip(); + + if (endian !== 'le') return; + + this._initArray(this.toArray(), base, endian); + }; + + BN.prototype._initNumber = function _initNumber (number, base, endian) { + if (number < 0) { + this.negative = 1; + number = -number; + } + if (number < 0x4000000) { + this.words = [ number & 0x3ffffff ]; + this.length = 1; + } else if (number < 0x10000000000000) { + this.words = [ + number & 0x3ffffff, + (number / 0x4000000) & 0x3ffffff + ]; + this.length = 2; + } else { + assert(number < 0x20000000000000); // 2 ^ 53 (unsafe) + this.words = [ + number & 0x3ffffff, + (number / 0x4000000) & 0x3ffffff, + 1 + ]; + this.length = 3; + } + + if (endian !== 'le') return; + + // Reverse the bytes + this._initArray(this.toArray(), base, endian); + }; + + BN.prototype._initArray = function _initArray (number, base, endian) { + // Perhaps a Uint8Array + assert(typeof number.length === 'number'); + if (number.length <= 0) { + this.words = [ 0 ]; + this.length = 1; + return this; + } + + this.length = Math.ceil(number.length / 3); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + + var j, w; + var off = 0; + if (endian === 'be') { + for (i = number.length - 1, j = 0; i >= 0; i -= 3) { + w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16); + this.words[j] |= (w << off) & 0x3ffffff; + this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } else if (endian === 'le') { + for (i = 0, j = 0; i < number.length; i += 3) { + w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16); + this.words[j] |= (w << off) & 0x3ffffff; + this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + } + return this.strip(); + }; + + function parseHex (str, start, end) { + var r = 0; + var len = Math.min(str.length, end); + for (var i = start; i < len; i++) { + var c = str.charCodeAt(i) - 48; + + r <<= 4; + + // 'a' - 'f' + if (c >= 49 && c <= 54) { + r |= c - 49 + 0xa; + + // 'A' - 'F' + } else if (c >= 17 && c <= 22) { + r |= c - 17 + 0xa; + + // '0' - '9' + } else { + r |= c & 0xf; + } + } + return r; + } + + BN.prototype._parseHex = function _parseHex (number, start) { + // Create possibly bigger array to ensure that it fits the number + this.length = Math.ceil((number.length - start) / 6); + this.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + this.words[i] = 0; + } + + var j, w; + // Scan 24-bit chunks and add them to the number + var off = 0; + for (i = number.length - 6, j = 0; i >= start; i -= 6) { + w = parseHex(number, i, i + 6); + this.words[j] |= (w << off) & 0x3ffffff; + // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb + this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; + off += 24; + if (off >= 26) { + off -= 26; + j++; + } + } + if (i + 6 !== start) { + w = parseHex(number, start, i + 6); + this.words[j] |= (w << off) & 0x3ffffff; + this.words[j + 1] |= w >>> (26 - off) & 0x3fffff; + } + this.strip(); + }; + + function parseBase (str, start, end, mul) { + var r = 0; + var len = Math.min(str.length, end); + for (var i = start; i < len; i++) { + var c = str.charCodeAt(i) - 48; + + r *= mul; + + // 'a' + if (c >= 49) { + r += c - 49 + 0xa; + + // 'A' + } else if (c >= 17) { + r += c - 17 + 0xa; + + // '0' - '9' + } else { + r += c; + } + } + return r; + } + + BN.prototype._parseBase = function _parseBase (number, base, start) { + // Initialize as zero + this.words = [ 0 ]; + this.length = 1; + + // Find length of limb in base + for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) { + limbLen++; + } + limbLen--; + limbPow = (limbPow / base) | 0; + + var total = number.length - start; + var mod = total % limbLen; + var end = Math.min(total, total - mod) + start; + + var word = 0; + for (var i = start; i < end; i += limbLen) { + word = parseBase(number, i, i + limbLen, base); + + this.imuln(limbPow); + if (this.words[0] + word < 0x4000000) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + + if (mod !== 0) { + var pow = 1; + word = parseBase(number, i, number.length, base); + + for (i = 0; i < mod; i++) { + pow *= base; + } + + this.imuln(pow); + if (this.words[0] + word < 0x4000000) { + this.words[0] += word; + } else { + this._iaddn(word); + } + } + }; + + BN.prototype.copy = function copy (dest) { + dest.words = new Array(this.length); + for (var i = 0; i < this.length; i++) { + dest.words[i] = this.words[i]; + } + dest.length = this.length; + dest.negative = this.negative; + dest.red = this.red; + }; + + BN.prototype.clone = function clone () { + var r = new BN(null); + this.copy(r); + return r; + }; + + BN.prototype._expand = function _expand (size) { + while (this.length < size) { + this.words[this.length++] = 0; + } + return this; + }; + + // Remove leading `0` from `this` + BN.prototype.strip = function strip () { + while (this.length > 1 && this.words[this.length - 1] === 0) { + this.length--; + } + return this._normSign(); + }; + + BN.prototype._normSign = function _normSign () { + // -0 = 0 + if (this.length === 1 && this.words[0] === 0) { + this.negative = 0; + } + return this; + }; + + BN.prototype.inspect = function inspect () { + return (this.red ? ''; + }; + + /* + + var zeros = []; + var groupSizes = []; + var groupBases = []; + + var s = ''; + var i = -1; + while (++i < BN.wordSize) { + zeros[i] = s; + s += '0'; + } + groupSizes[0] = 0; + groupSizes[1] = 0; + groupBases[0] = 0; + groupBases[1] = 0; + var base = 2 - 1; + while (++base < 36 + 1) { + var groupSize = 0; + var groupBase = 1; + while (groupBase < (1 << BN.wordSize) / base) { + groupBase *= base; + groupSize += 1; + } + groupSizes[base] = groupSize; + groupBases[base] = groupBase; + } + + */ + + var zeros = [ + '', + '0', + '00', + '000', + '0000', + '00000', + '000000', + '0000000', + '00000000', + '000000000', + '0000000000', + '00000000000', + '000000000000', + '0000000000000', + '00000000000000', + '000000000000000', + '0000000000000000', + '00000000000000000', + '000000000000000000', + '0000000000000000000', + '00000000000000000000', + '000000000000000000000', + '0000000000000000000000', + '00000000000000000000000', + '000000000000000000000000', + '0000000000000000000000000' + ]; + + var groupSizes = [ + 0, 0, + 25, 16, 12, 11, 10, 9, 8, + 8, 7, 7, 7, 7, 6, 6, + 6, 6, 6, 6, 6, 5, 5, + 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5 + ]; + + var groupBases = [ + 0, 0, + 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216, + 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625, + 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632, + 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149, + 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176 + ]; + + BN.prototype.toString = function toString (base, padding) { + base = base || 10; + padding = padding | 0 || 1; + + var out; + if (base === 16 || base === 'hex') { + out = ''; + var off = 0; + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = this.words[i]; + var word = (((w << off) | carry) & 0xffffff).toString(16); + carry = (w >>> (24 - off)) & 0xffffff; + if (carry !== 0 || i !== this.length - 1) { + out = zeros[6 - word.length] + word + out; + } else { + out = word + out; + } + off += 2; + if (off >= 26) { + off -= 26; + i--; + } + } + if (carry !== 0) { + out = carry.toString(16) + out; + } + while (out.length % padding !== 0) { + out = '0' + out; + } + if (this.negative !== 0) { + out = '-' + out; + } + return out; + } + + if (base === (base | 0) && base >= 2 && base <= 36) { + // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base)); + var groupSize = groupSizes[base]; + // var groupBase = Math.pow(base, groupSize); + var groupBase = groupBases[base]; + out = ''; + var c = this.clone(); + c.negative = 0; + while (!c.isZero()) { + var r = c.modn(groupBase).toString(base); + c = c.idivn(groupBase); + + if (!c.isZero()) { + out = zeros[groupSize - r.length] + r + out; + } else { + out = r + out; + } + } + if (this.isZero()) { + out = '0' + out; + } + while (out.length % padding !== 0) { + out = '0' + out; + } + if (this.negative !== 0) { + out = '-' + out; + } + return out; + } + + assert(false, 'Base should be between 2 and 36'); + }; + + BN.prototype.toNumber = function toNumber () { + var ret = this.words[0]; + if (this.length === 2) { + ret += this.words[1] * 0x4000000; + } else if (this.length === 3 && this.words[2] === 0x01) { + // NOTE: at this stage it is known that the top bit is set + ret += 0x10000000000000 + (this.words[1] * 0x4000000); + } else if (this.length > 2) { + assert(false, 'Number can only safely store up to 53 bits'); + } + return (this.negative !== 0) ? -ret : ret; + }; + + BN.prototype.toJSON = function toJSON () { + return this.toString(16); + }; + + BN.prototype.toBuffer = function toBuffer (endian, length) { + assert(typeof Buffer !== 'undefined'); + return this.toArrayLike(Buffer, endian, length); + }; + + BN.prototype.toArray = function toArray (endian, length) { + return this.toArrayLike(Array, endian, length); + }; + + BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) { + var byteLength = this.byteLength(); + var reqLength = length || Math.max(1, byteLength); + assert(byteLength <= reqLength, 'byte array longer than desired length'); + assert(reqLength > 0, 'Requested array length <= 0'); + + this.strip(); + var littleEndian = endian === 'le'; + var res = new ArrayType(reqLength); + + var b, i; + var q = this.clone(); + if (!littleEndian) { + // Assume big-endian + for (i = 0; i < reqLength - byteLength; i++) { + res[i] = 0; + } + + for (i = 0; !q.isZero(); i++) { + b = q.andln(0xff); + q.iushrn(8); + + res[reqLength - i - 1] = b; + } + } else { + for (i = 0; !q.isZero(); i++) { + b = q.andln(0xff); + q.iushrn(8); + + res[i] = b; + } + + for (; i < reqLength; i++) { + res[i] = 0; + } + } + + return res; + }; + + if (Math.clz32) { + BN.prototype._countBits = function _countBits (w) { + return 32 - Math.clz32(w); + }; + } else { + BN.prototype._countBits = function _countBits (w) { + var t = w; + var r = 0; + if (t >= 0x1000) { + r += 13; + t >>>= 13; + } + if (t >= 0x40) { + r += 7; + t >>>= 7; + } + if (t >= 0x8) { + r += 4; + t >>>= 4; + } + if (t >= 0x02) { + r += 2; + t >>>= 2; + } + return r + t; + }; + } + + BN.prototype._zeroBits = function _zeroBits (w) { + // Short-cut + if (w === 0) return 26; + + var t = w; + var r = 0; + if ((t & 0x1fff) === 0) { + r += 13; + t >>>= 13; + } + if ((t & 0x7f) === 0) { + r += 7; + t >>>= 7; + } + if ((t & 0xf) === 0) { + r += 4; + t >>>= 4; + } + if ((t & 0x3) === 0) { + r += 2; + t >>>= 2; + } + if ((t & 0x1) === 0) { + r++; + } + return r; + }; + + // Return number of used bits in a BN + BN.prototype.bitLength = function bitLength () { + var w = this.words[this.length - 1]; + var hi = this._countBits(w); + return (this.length - 1) * 26 + hi; + }; + + function toBitArray (num) { + var w = new Array(num.bitLength()); + + for (var bit = 0; bit < w.length; bit++) { + var off = (bit / 26) | 0; + var wbit = bit % 26; + + w[bit] = (num.words[off] & (1 << wbit)) >>> wbit; + } + + return w; + } + + // Number of trailing zero bits + BN.prototype.zeroBits = function zeroBits () { + if (this.isZero()) return 0; + + var r = 0; + for (var i = 0; i < this.length; i++) { + var b = this._zeroBits(this.words[i]); + r += b; + if (b !== 26) break; + } + return r; + }; + + BN.prototype.byteLength = function byteLength () { + return Math.ceil(this.bitLength() / 8); + }; + + BN.prototype.toTwos = function toTwos (width) { + if (this.negative !== 0) { + return this.abs().inotn(width).iaddn(1); + } + return this.clone(); + }; + + BN.prototype.fromTwos = function fromTwos (width) { + if (this.testn(width - 1)) { + return this.notn(width).iaddn(1).ineg(); + } + return this.clone(); + }; + + BN.prototype.isNeg = function isNeg () { + return this.negative !== 0; + }; + + // Return negative clone of `this` + BN.prototype.neg = function neg () { + return this.clone().ineg(); + }; + + BN.prototype.ineg = function ineg () { + if (!this.isZero()) { + this.negative ^= 1; + } + + return this; + }; + + // Or `num` with `this` in-place + BN.prototype.iuor = function iuor (num) { + while (this.length < num.length) { + this.words[this.length++] = 0; + } + + for (var i = 0; i < num.length; i++) { + this.words[i] = this.words[i] | num.words[i]; + } + + return this.strip(); + }; + + BN.prototype.ior = function ior (num) { + assert((this.negative | num.negative) === 0); + return this.iuor(num); + }; + + // Or `num` with `this` + BN.prototype.or = function or (num) { + if (this.length > num.length) return this.clone().ior(num); + return num.clone().ior(this); + }; + + BN.prototype.uor = function uor (num) { + if (this.length > num.length) return this.clone().iuor(num); + return num.clone().iuor(this); + }; + + // And `num` with `this` in-place + BN.prototype.iuand = function iuand (num) { + // b = min-length(num, this) + var b; + if (this.length > num.length) { + b = num; + } else { + b = this; + } + + for (var i = 0; i < b.length; i++) { + this.words[i] = this.words[i] & num.words[i]; + } + + this.length = b.length; + + return this.strip(); + }; + + BN.prototype.iand = function iand (num) { + assert((this.negative | num.negative) === 0); + return this.iuand(num); + }; + + // And `num` with `this` + BN.prototype.and = function and (num) { + if (this.length > num.length) return this.clone().iand(num); + return num.clone().iand(this); + }; + + BN.prototype.uand = function uand (num) { + if (this.length > num.length) return this.clone().iuand(num); + return num.clone().iuand(this); + }; + + // Xor `num` with `this` in-place + BN.prototype.iuxor = function iuxor (num) { + // a.length > b.length + var a; + var b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + for (var i = 0; i < b.length; i++) { + this.words[i] = a.words[i] ^ b.words[i]; + } + + if (this !== a) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + this.length = a.length; + + return this.strip(); + }; + + BN.prototype.ixor = function ixor (num) { + assert((this.negative | num.negative) === 0); + return this.iuxor(num); + }; + + // Xor `num` with `this` + BN.prototype.xor = function xor (num) { + if (this.length > num.length) return this.clone().ixor(num); + return num.clone().ixor(this); + }; + + BN.prototype.uxor = function uxor (num) { + if (this.length > num.length) return this.clone().iuxor(num); + return num.clone().iuxor(this); + }; + + // Not ``this`` with ``width`` bitwidth + BN.prototype.inotn = function inotn (width) { + assert(typeof width === 'number' && width >= 0); + + var bytesNeeded = Math.ceil(width / 26) | 0; + var bitsLeft = width % 26; + + // Extend the buffer with leading zeroes + this._expand(bytesNeeded); + + if (bitsLeft > 0) { + bytesNeeded--; + } + + // Handle complete words + for (var i = 0; i < bytesNeeded; i++) { + this.words[i] = ~this.words[i] & 0x3ffffff; + } + + // Handle the residue + if (bitsLeft > 0) { + this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft)); + } + + // And remove leading zeroes + return this.strip(); + }; + + BN.prototype.notn = function notn (width) { + return this.clone().inotn(width); + }; + + // Set `bit` of `this` + BN.prototype.setn = function setn (bit, val) { + assert(typeof bit === 'number' && bit >= 0); + + var off = (bit / 26) | 0; + var wbit = bit % 26; + + this._expand(off + 1); + + if (val) { + this.words[off] = this.words[off] | (1 << wbit); + } else { + this.words[off] = this.words[off] & ~(1 << wbit); + } + + return this.strip(); + }; + + // Add `num` to `this` in-place + BN.prototype.iadd = function iadd (num) { + var r; + + // negative + positive + if (this.negative !== 0 && num.negative === 0) { + this.negative = 0; + r = this.isub(num); + this.negative ^= 1; + return this._normSign(); + + // positive + negative + } else if (this.negative === 0 && num.negative !== 0) { + num.negative = 0; + r = this.isub(num); + num.negative = 1; + return r._normSign(); + } + + // a.length > b.length + var a, b; + if (this.length > num.length) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) + (b.words[i] | 0) + carry; + this.words[i] = r & 0x3ffffff; + carry = r >>> 26; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + this.words[i] = r & 0x3ffffff; + carry = r >>> 26; + } + + this.length = a.length; + if (carry !== 0) { + this.words[this.length] = carry; + this.length++; + // Copy the rest of the words + } else if (a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + return this; + }; + + // Add `num` to `this` + BN.prototype.add = function add (num) { + var res; + if (num.negative !== 0 && this.negative === 0) { + num.negative = 0; + res = this.sub(num); + num.negative ^= 1; + return res; + } else if (num.negative === 0 && this.negative !== 0) { + this.negative = 0; + res = num.sub(this); + this.negative = 1; + return res; + } + + if (this.length > num.length) return this.clone().iadd(num); + + return num.clone().iadd(this); + }; + + // Subtract `num` from `this` in-place + BN.prototype.isub = function isub (num) { + // this - (-num) = this + num + if (num.negative !== 0) { + num.negative = 0; + var r = this.iadd(num); + num.negative = 1; + return r._normSign(); + + // -this - num = -(this + num) + } else if (this.negative !== 0) { + this.negative = 0; + this.iadd(num); + this.negative = 1; + return this._normSign(); + } + + // At this point both numbers are positive + var cmp = this.cmp(num); + + // Optimization - zeroify + if (cmp === 0) { + this.negative = 0; + this.length = 1; + this.words[0] = 0; + return this; + } + + // a > b + var a, b; + if (cmp > 0) { + a = this; + b = num; + } else { + a = num; + b = this; + } + + var carry = 0; + for (var i = 0; i < b.length; i++) { + r = (a.words[i] | 0) - (b.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 0x3ffffff; + } + for (; carry !== 0 && i < a.length; i++) { + r = (a.words[i] | 0) + carry; + carry = r >> 26; + this.words[i] = r & 0x3ffffff; + } + + // Copy rest of the words + if (carry === 0 && i < a.length && a !== this) { + for (; i < a.length; i++) { + this.words[i] = a.words[i]; + } + } + + this.length = Math.max(this.length, i); + + if (a !== this) { + this.negative = 1; + } + + return this.strip(); + }; + + // Subtract `num` from `this` + BN.prototype.sub = function sub (num) { + return this.clone().isub(num); + }; + + function smallMulTo (self, num, out) { + out.negative = num.negative ^ self.negative; + var len = (self.length + num.length) | 0; + out.length = len; + len = (len - 1) | 0; + + // Peel one iteration (compiler can't do it, because of code complexity) + var a = self.words[0] | 0; + var b = num.words[0] | 0; + var r = a * b; + + var lo = r & 0x3ffffff; + var carry = (r / 0x4000000) | 0; + out.words[0] = lo; + + for (var k = 1; k < len; k++) { + // Sum all words with the same `i + j = k` and accumulate `ncarry`, + // note that ncarry could be >= 0x3ffffff + var ncarry = carry >>> 26; + var rword = carry & 0x3ffffff; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { + var i = (k - j) | 0; + a = self.words[i] | 0; + b = num.words[j] | 0; + r = a * b + rword; + ncarry += (r / 0x4000000) | 0; + rword = r & 0x3ffffff; + } + out.words[k] = rword | 0; + carry = ncarry | 0; + } + if (carry !== 0) { + out.words[k] = carry | 0; + } else { + out.length--; + } + + return out.strip(); + } + + // TODO(indutny): it may be reasonable to omit it for users who don't need + // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit + // multiplication (like elliptic secp256k1). + var comb10MulTo = function comb10MulTo (self, num, out) { + var a = self.words; + var b = num.words; + var o = out.words; + var c = 0; + var lo; + var mid; + var hi; + var a0 = a[0] | 0; + var al0 = a0 & 0x1fff; + var ah0 = a0 >>> 13; + var a1 = a[1] | 0; + var al1 = a1 & 0x1fff; + var ah1 = a1 >>> 13; + var a2 = a[2] | 0; + var al2 = a2 & 0x1fff; + var ah2 = a2 >>> 13; + var a3 = a[3] | 0; + var al3 = a3 & 0x1fff; + var ah3 = a3 >>> 13; + var a4 = a[4] | 0; + var al4 = a4 & 0x1fff; + var ah4 = a4 >>> 13; + var a5 = a[5] | 0; + var al5 = a5 & 0x1fff; + var ah5 = a5 >>> 13; + var a6 = a[6] | 0; + var al6 = a6 & 0x1fff; + var ah6 = a6 >>> 13; + var a7 = a[7] | 0; + var al7 = a7 & 0x1fff; + var ah7 = a7 >>> 13; + var a8 = a[8] | 0; + var al8 = a8 & 0x1fff; + var ah8 = a8 >>> 13; + var a9 = a[9] | 0; + var al9 = a9 & 0x1fff; + var ah9 = a9 >>> 13; + var b0 = b[0] | 0; + var bl0 = b0 & 0x1fff; + var bh0 = b0 >>> 13; + var b1 = b[1] | 0; + var bl1 = b1 & 0x1fff; + var bh1 = b1 >>> 13; + var b2 = b[2] | 0; + var bl2 = b2 & 0x1fff; + var bh2 = b2 >>> 13; + var b3 = b[3] | 0; + var bl3 = b3 & 0x1fff; + var bh3 = b3 >>> 13; + var b4 = b[4] | 0; + var bl4 = b4 & 0x1fff; + var bh4 = b4 >>> 13; + var b5 = b[5] | 0; + var bl5 = b5 & 0x1fff; + var bh5 = b5 >>> 13; + var b6 = b[6] | 0; + var bl6 = b6 & 0x1fff; + var bh6 = b6 >>> 13; + var b7 = b[7] | 0; + var bl7 = b7 & 0x1fff; + var bh7 = b7 >>> 13; + var b8 = b[8] | 0; + var bl8 = b8 & 0x1fff; + var bh8 = b8 >>> 13; + var b9 = b[9] | 0; + var bl9 = b9 & 0x1fff; + var bh9 = b9 >>> 13; + + out.negative = self.negative ^ num.negative; + out.length = 19; + /* k = 0 */ + lo = Math.imul(al0, bl0); + mid = Math.imul(al0, bh0); + mid = (mid + Math.imul(ah0, bl0)) | 0; + hi = Math.imul(ah0, bh0); + var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0; + w0 &= 0x3ffffff; + /* k = 1 */ + lo = Math.imul(al1, bl0); + mid = Math.imul(al1, bh0); + mid = (mid + Math.imul(ah1, bl0)) | 0; + hi = Math.imul(ah1, bh0); + lo = (lo + Math.imul(al0, bl1)) | 0; + mid = (mid + Math.imul(al0, bh1)) | 0; + mid = (mid + Math.imul(ah0, bl1)) | 0; + hi = (hi + Math.imul(ah0, bh1)) | 0; + var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0; + w1 &= 0x3ffffff; + /* k = 2 */ + lo = Math.imul(al2, bl0); + mid = Math.imul(al2, bh0); + mid = (mid + Math.imul(ah2, bl0)) | 0; + hi = Math.imul(ah2, bh0); + lo = (lo + Math.imul(al1, bl1)) | 0; + mid = (mid + Math.imul(al1, bh1)) | 0; + mid = (mid + Math.imul(ah1, bl1)) | 0; + hi = (hi + Math.imul(ah1, bh1)) | 0; + lo = (lo + Math.imul(al0, bl2)) | 0; + mid = (mid + Math.imul(al0, bh2)) | 0; + mid = (mid + Math.imul(ah0, bl2)) | 0; + hi = (hi + Math.imul(ah0, bh2)) | 0; + var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0; + w2 &= 0x3ffffff; + /* k = 3 */ + lo = Math.imul(al3, bl0); + mid = Math.imul(al3, bh0); + mid = (mid + Math.imul(ah3, bl0)) | 0; + hi = Math.imul(ah3, bh0); + lo = (lo + Math.imul(al2, bl1)) | 0; + mid = (mid + Math.imul(al2, bh1)) | 0; + mid = (mid + Math.imul(ah2, bl1)) | 0; + hi = (hi + Math.imul(ah2, bh1)) | 0; + lo = (lo + Math.imul(al1, bl2)) | 0; + mid = (mid + Math.imul(al1, bh2)) | 0; + mid = (mid + Math.imul(ah1, bl2)) | 0; + hi = (hi + Math.imul(ah1, bh2)) | 0; + lo = (lo + Math.imul(al0, bl3)) | 0; + mid = (mid + Math.imul(al0, bh3)) | 0; + mid = (mid + Math.imul(ah0, bl3)) | 0; + hi = (hi + Math.imul(ah0, bh3)) | 0; + var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0; + w3 &= 0x3ffffff; + /* k = 4 */ + lo = Math.imul(al4, bl0); + mid = Math.imul(al4, bh0); + mid = (mid + Math.imul(ah4, bl0)) | 0; + hi = Math.imul(ah4, bh0); + lo = (lo + Math.imul(al3, bl1)) | 0; + mid = (mid + Math.imul(al3, bh1)) | 0; + mid = (mid + Math.imul(ah3, bl1)) | 0; + hi = (hi + Math.imul(ah3, bh1)) | 0; + lo = (lo + Math.imul(al2, bl2)) | 0; + mid = (mid + Math.imul(al2, bh2)) | 0; + mid = (mid + Math.imul(ah2, bl2)) | 0; + hi = (hi + Math.imul(ah2, bh2)) | 0; + lo = (lo + Math.imul(al1, bl3)) | 0; + mid = (mid + Math.imul(al1, bh3)) | 0; + mid = (mid + Math.imul(ah1, bl3)) | 0; + hi = (hi + Math.imul(ah1, bh3)) | 0; + lo = (lo + Math.imul(al0, bl4)) | 0; + mid = (mid + Math.imul(al0, bh4)) | 0; + mid = (mid + Math.imul(ah0, bl4)) | 0; + hi = (hi + Math.imul(ah0, bh4)) | 0; + var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0; + w4 &= 0x3ffffff; + /* k = 5 */ + lo = Math.imul(al5, bl0); + mid = Math.imul(al5, bh0); + mid = (mid + Math.imul(ah5, bl0)) | 0; + hi = Math.imul(ah5, bh0); + lo = (lo + Math.imul(al4, bl1)) | 0; + mid = (mid + Math.imul(al4, bh1)) | 0; + mid = (mid + Math.imul(ah4, bl1)) | 0; + hi = (hi + Math.imul(ah4, bh1)) | 0; + lo = (lo + Math.imul(al3, bl2)) | 0; + mid = (mid + Math.imul(al3, bh2)) | 0; + mid = (mid + Math.imul(ah3, bl2)) | 0; + hi = (hi + Math.imul(ah3, bh2)) | 0; + lo = (lo + Math.imul(al2, bl3)) | 0; + mid = (mid + Math.imul(al2, bh3)) | 0; + mid = (mid + Math.imul(ah2, bl3)) | 0; + hi = (hi + Math.imul(ah2, bh3)) | 0; + lo = (lo + Math.imul(al1, bl4)) | 0; + mid = (mid + Math.imul(al1, bh4)) | 0; + mid = (mid + Math.imul(ah1, bl4)) | 0; + hi = (hi + Math.imul(ah1, bh4)) | 0; + lo = (lo + Math.imul(al0, bl5)) | 0; + mid = (mid + Math.imul(al0, bh5)) | 0; + mid = (mid + Math.imul(ah0, bl5)) | 0; + hi = (hi + Math.imul(ah0, bh5)) | 0; + var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0; + w5 &= 0x3ffffff; + /* k = 6 */ + lo = Math.imul(al6, bl0); + mid = Math.imul(al6, bh0); + mid = (mid + Math.imul(ah6, bl0)) | 0; + hi = Math.imul(ah6, bh0); + lo = (lo + Math.imul(al5, bl1)) | 0; + mid = (mid + Math.imul(al5, bh1)) | 0; + mid = (mid + Math.imul(ah5, bl1)) | 0; + hi = (hi + Math.imul(ah5, bh1)) | 0; + lo = (lo + Math.imul(al4, bl2)) | 0; + mid = (mid + Math.imul(al4, bh2)) | 0; + mid = (mid + Math.imul(ah4, bl2)) | 0; + hi = (hi + Math.imul(ah4, bh2)) | 0; + lo = (lo + Math.imul(al3, bl3)) | 0; + mid = (mid + Math.imul(al3, bh3)) | 0; + mid = (mid + Math.imul(ah3, bl3)) | 0; + hi = (hi + Math.imul(ah3, bh3)) | 0; + lo = (lo + Math.imul(al2, bl4)) | 0; + mid = (mid + Math.imul(al2, bh4)) | 0; + mid = (mid + Math.imul(ah2, bl4)) | 0; + hi = (hi + Math.imul(ah2, bh4)) | 0; + lo = (lo + Math.imul(al1, bl5)) | 0; + mid = (mid + Math.imul(al1, bh5)) | 0; + mid = (mid + Math.imul(ah1, bl5)) | 0; + hi = (hi + Math.imul(ah1, bh5)) | 0; + lo = (lo + Math.imul(al0, bl6)) | 0; + mid = (mid + Math.imul(al0, bh6)) | 0; + mid = (mid + Math.imul(ah0, bl6)) | 0; + hi = (hi + Math.imul(ah0, bh6)) | 0; + var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0; + w6 &= 0x3ffffff; + /* k = 7 */ + lo = Math.imul(al7, bl0); + mid = Math.imul(al7, bh0); + mid = (mid + Math.imul(ah7, bl0)) | 0; + hi = Math.imul(ah7, bh0); + lo = (lo + Math.imul(al6, bl1)) | 0; + mid = (mid + Math.imul(al6, bh1)) | 0; + mid = (mid + Math.imul(ah6, bl1)) | 0; + hi = (hi + Math.imul(ah6, bh1)) | 0; + lo = (lo + Math.imul(al5, bl2)) | 0; + mid = (mid + Math.imul(al5, bh2)) | 0; + mid = (mid + Math.imul(ah5, bl2)) | 0; + hi = (hi + Math.imul(ah5, bh2)) | 0; + lo = (lo + Math.imul(al4, bl3)) | 0; + mid = (mid + Math.imul(al4, bh3)) | 0; + mid = (mid + Math.imul(ah4, bl3)) | 0; + hi = (hi + Math.imul(ah4, bh3)) | 0; + lo = (lo + Math.imul(al3, bl4)) | 0; + mid = (mid + Math.imul(al3, bh4)) | 0; + mid = (mid + Math.imul(ah3, bl4)) | 0; + hi = (hi + Math.imul(ah3, bh4)) | 0; + lo = (lo + Math.imul(al2, bl5)) | 0; + mid = (mid + Math.imul(al2, bh5)) | 0; + mid = (mid + Math.imul(ah2, bl5)) | 0; + hi = (hi + Math.imul(ah2, bh5)) | 0; + lo = (lo + Math.imul(al1, bl6)) | 0; + mid = (mid + Math.imul(al1, bh6)) | 0; + mid = (mid + Math.imul(ah1, bl6)) | 0; + hi = (hi + Math.imul(ah1, bh6)) | 0; + lo = (lo + Math.imul(al0, bl7)) | 0; + mid = (mid + Math.imul(al0, bh7)) | 0; + mid = (mid + Math.imul(ah0, bl7)) | 0; + hi = (hi + Math.imul(ah0, bh7)) | 0; + var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0; + w7 &= 0x3ffffff; + /* k = 8 */ + lo = Math.imul(al8, bl0); + mid = Math.imul(al8, bh0); + mid = (mid + Math.imul(ah8, bl0)) | 0; + hi = Math.imul(ah8, bh0); + lo = (lo + Math.imul(al7, bl1)) | 0; + mid = (mid + Math.imul(al7, bh1)) | 0; + mid = (mid + Math.imul(ah7, bl1)) | 0; + hi = (hi + Math.imul(ah7, bh1)) | 0; + lo = (lo + Math.imul(al6, bl2)) | 0; + mid = (mid + Math.imul(al6, bh2)) | 0; + mid = (mid + Math.imul(ah6, bl2)) | 0; + hi = (hi + Math.imul(ah6, bh2)) | 0; + lo = (lo + Math.imul(al5, bl3)) | 0; + mid = (mid + Math.imul(al5, bh3)) | 0; + mid = (mid + Math.imul(ah5, bl3)) | 0; + hi = (hi + Math.imul(ah5, bh3)) | 0; + lo = (lo + Math.imul(al4, bl4)) | 0; + mid = (mid + Math.imul(al4, bh4)) | 0; + mid = (mid + Math.imul(ah4, bl4)) | 0; + hi = (hi + Math.imul(ah4, bh4)) | 0; + lo = (lo + Math.imul(al3, bl5)) | 0; + mid = (mid + Math.imul(al3, bh5)) | 0; + mid = (mid + Math.imul(ah3, bl5)) | 0; + hi = (hi + Math.imul(ah3, bh5)) | 0; + lo = (lo + Math.imul(al2, bl6)) | 0; + mid = (mid + Math.imul(al2, bh6)) | 0; + mid = (mid + Math.imul(ah2, bl6)) | 0; + hi = (hi + Math.imul(ah2, bh6)) | 0; + lo = (lo + Math.imul(al1, bl7)) | 0; + mid = (mid + Math.imul(al1, bh7)) | 0; + mid = (mid + Math.imul(ah1, bl7)) | 0; + hi = (hi + Math.imul(ah1, bh7)) | 0; + lo = (lo + Math.imul(al0, bl8)) | 0; + mid = (mid + Math.imul(al0, bh8)) | 0; + mid = (mid + Math.imul(ah0, bl8)) | 0; + hi = (hi + Math.imul(ah0, bh8)) | 0; + var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0; + w8 &= 0x3ffffff; + /* k = 9 */ + lo = Math.imul(al9, bl0); + mid = Math.imul(al9, bh0); + mid = (mid + Math.imul(ah9, bl0)) | 0; + hi = Math.imul(ah9, bh0); + lo = (lo + Math.imul(al8, bl1)) | 0; + mid = (mid + Math.imul(al8, bh1)) | 0; + mid = (mid + Math.imul(ah8, bl1)) | 0; + hi = (hi + Math.imul(ah8, bh1)) | 0; + lo = (lo + Math.imul(al7, bl2)) | 0; + mid = (mid + Math.imul(al7, bh2)) | 0; + mid = (mid + Math.imul(ah7, bl2)) | 0; + hi = (hi + Math.imul(ah7, bh2)) | 0; + lo = (lo + Math.imul(al6, bl3)) | 0; + mid = (mid + Math.imul(al6, bh3)) | 0; + mid = (mid + Math.imul(ah6, bl3)) | 0; + hi = (hi + Math.imul(ah6, bh3)) | 0; + lo = (lo + Math.imul(al5, bl4)) | 0; + mid = (mid + Math.imul(al5, bh4)) | 0; + mid = (mid + Math.imul(ah5, bl4)) | 0; + hi = (hi + Math.imul(ah5, bh4)) | 0; + lo = (lo + Math.imul(al4, bl5)) | 0; + mid = (mid + Math.imul(al4, bh5)) | 0; + mid = (mid + Math.imul(ah4, bl5)) | 0; + hi = (hi + Math.imul(ah4, bh5)) | 0; + lo = (lo + Math.imul(al3, bl6)) | 0; + mid = (mid + Math.imul(al3, bh6)) | 0; + mid = (mid + Math.imul(ah3, bl6)) | 0; + hi = (hi + Math.imul(ah3, bh6)) | 0; + lo = (lo + Math.imul(al2, bl7)) | 0; + mid = (mid + Math.imul(al2, bh7)) | 0; + mid = (mid + Math.imul(ah2, bl7)) | 0; + hi = (hi + Math.imul(ah2, bh7)) | 0; + lo = (lo + Math.imul(al1, bl8)) | 0; + mid = (mid + Math.imul(al1, bh8)) | 0; + mid = (mid + Math.imul(ah1, bl8)) | 0; + hi = (hi + Math.imul(ah1, bh8)) | 0; + lo = (lo + Math.imul(al0, bl9)) | 0; + mid = (mid + Math.imul(al0, bh9)) | 0; + mid = (mid + Math.imul(ah0, bl9)) | 0; + hi = (hi + Math.imul(ah0, bh9)) | 0; + var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0; + w9 &= 0x3ffffff; + /* k = 10 */ + lo = Math.imul(al9, bl1); + mid = Math.imul(al9, bh1); + mid = (mid + Math.imul(ah9, bl1)) | 0; + hi = Math.imul(ah9, bh1); + lo = (lo + Math.imul(al8, bl2)) | 0; + mid = (mid + Math.imul(al8, bh2)) | 0; + mid = (mid + Math.imul(ah8, bl2)) | 0; + hi = (hi + Math.imul(ah8, bh2)) | 0; + lo = (lo + Math.imul(al7, bl3)) | 0; + mid = (mid + Math.imul(al7, bh3)) | 0; + mid = (mid + Math.imul(ah7, bl3)) | 0; + hi = (hi + Math.imul(ah7, bh3)) | 0; + lo = (lo + Math.imul(al6, bl4)) | 0; + mid = (mid + Math.imul(al6, bh4)) | 0; + mid = (mid + Math.imul(ah6, bl4)) | 0; + hi = (hi + Math.imul(ah6, bh4)) | 0; + lo = (lo + Math.imul(al5, bl5)) | 0; + mid = (mid + Math.imul(al5, bh5)) | 0; + mid = (mid + Math.imul(ah5, bl5)) | 0; + hi = (hi + Math.imul(ah5, bh5)) | 0; + lo = (lo + Math.imul(al4, bl6)) | 0; + mid = (mid + Math.imul(al4, bh6)) | 0; + mid = (mid + Math.imul(ah4, bl6)) | 0; + hi = (hi + Math.imul(ah4, bh6)) | 0; + lo = (lo + Math.imul(al3, bl7)) | 0; + mid = (mid + Math.imul(al3, bh7)) | 0; + mid = (mid + Math.imul(ah3, bl7)) | 0; + hi = (hi + Math.imul(ah3, bh7)) | 0; + lo = (lo + Math.imul(al2, bl8)) | 0; + mid = (mid + Math.imul(al2, bh8)) | 0; + mid = (mid + Math.imul(ah2, bl8)) | 0; + hi = (hi + Math.imul(ah2, bh8)) | 0; + lo = (lo + Math.imul(al1, bl9)) | 0; + mid = (mid + Math.imul(al1, bh9)) | 0; + mid = (mid + Math.imul(ah1, bl9)) | 0; + hi = (hi + Math.imul(ah1, bh9)) | 0; + var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0; + w10 &= 0x3ffffff; + /* k = 11 */ + lo = Math.imul(al9, bl2); + mid = Math.imul(al9, bh2); + mid = (mid + Math.imul(ah9, bl2)) | 0; + hi = Math.imul(ah9, bh2); + lo = (lo + Math.imul(al8, bl3)) | 0; + mid = (mid + Math.imul(al8, bh3)) | 0; + mid = (mid + Math.imul(ah8, bl3)) | 0; + hi = (hi + Math.imul(ah8, bh3)) | 0; + lo = (lo + Math.imul(al7, bl4)) | 0; + mid = (mid + Math.imul(al7, bh4)) | 0; + mid = (mid + Math.imul(ah7, bl4)) | 0; + hi = (hi + Math.imul(ah7, bh4)) | 0; + lo = (lo + Math.imul(al6, bl5)) | 0; + mid = (mid + Math.imul(al6, bh5)) | 0; + mid = (mid + Math.imul(ah6, bl5)) | 0; + hi = (hi + Math.imul(ah6, bh5)) | 0; + lo = (lo + Math.imul(al5, bl6)) | 0; + mid = (mid + Math.imul(al5, bh6)) | 0; + mid = (mid + Math.imul(ah5, bl6)) | 0; + hi = (hi + Math.imul(ah5, bh6)) | 0; + lo = (lo + Math.imul(al4, bl7)) | 0; + mid = (mid + Math.imul(al4, bh7)) | 0; + mid = (mid + Math.imul(ah4, bl7)) | 0; + hi = (hi + Math.imul(ah4, bh7)) | 0; + lo = (lo + Math.imul(al3, bl8)) | 0; + mid = (mid + Math.imul(al3, bh8)) | 0; + mid = (mid + Math.imul(ah3, bl8)) | 0; + hi = (hi + Math.imul(ah3, bh8)) | 0; + lo = (lo + Math.imul(al2, bl9)) | 0; + mid = (mid + Math.imul(al2, bh9)) | 0; + mid = (mid + Math.imul(ah2, bl9)) | 0; + hi = (hi + Math.imul(ah2, bh9)) | 0; + var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0; + w11 &= 0x3ffffff; + /* k = 12 */ + lo = Math.imul(al9, bl3); + mid = Math.imul(al9, bh3); + mid = (mid + Math.imul(ah9, bl3)) | 0; + hi = Math.imul(ah9, bh3); + lo = (lo + Math.imul(al8, bl4)) | 0; + mid = (mid + Math.imul(al8, bh4)) | 0; + mid = (mid + Math.imul(ah8, bl4)) | 0; + hi = (hi + Math.imul(ah8, bh4)) | 0; + lo = (lo + Math.imul(al7, bl5)) | 0; + mid = (mid + Math.imul(al7, bh5)) | 0; + mid = (mid + Math.imul(ah7, bl5)) | 0; + hi = (hi + Math.imul(ah7, bh5)) | 0; + lo = (lo + Math.imul(al6, bl6)) | 0; + mid = (mid + Math.imul(al6, bh6)) | 0; + mid = (mid + Math.imul(ah6, bl6)) | 0; + hi = (hi + Math.imul(ah6, bh6)) | 0; + lo = (lo + Math.imul(al5, bl7)) | 0; + mid = (mid + Math.imul(al5, bh7)) | 0; + mid = (mid + Math.imul(ah5, bl7)) | 0; + hi = (hi + Math.imul(ah5, bh7)) | 0; + lo = (lo + Math.imul(al4, bl8)) | 0; + mid = (mid + Math.imul(al4, bh8)) | 0; + mid = (mid + Math.imul(ah4, bl8)) | 0; + hi = (hi + Math.imul(ah4, bh8)) | 0; + lo = (lo + Math.imul(al3, bl9)) | 0; + mid = (mid + Math.imul(al3, bh9)) | 0; + mid = (mid + Math.imul(ah3, bl9)) | 0; + hi = (hi + Math.imul(ah3, bh9)) | 0; + var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0; + w12 &= 0x3ffffff; + /* k = 13 */ + lo = Math.imul(al9, bl4); + mid = Math.imul(al9, bh4); + mid = (mid + Math.imul(ah9, bl4)) | 0; + hi = Math.imul(ah9, bh4); + lo = (lo + Math.imul(al8, bl5)) | 0; + mid = (mid + Math.imul(al8, bh5)) | 0; + mid = (mid + Math.imul(ah8, bl5)) | 0; + hi = (hi + Math.imul(ah8, bh5)) | 0; + lo = (lo + Math.imul(al7, bl6)) | 0; + mid = (mid + Math.imul(al7, bh6)) | 0; + mid = (mid + Math.imul(ah7, bl6)) | 0; + hi = (hi + Math.imul(ah7, bh6)) | 0; + lo = (lo + Math.imul(al6, bl7)) | 0; + mid = (mid + Math.imul(al6, bh7)) | 0; + mid = (mid + Math.imul(ah6, bl7)) | 0; + hi = (hi + Math.imul(ah6, bh7)) | 0; + lo = (lo + Math.imul(al5, bl8)) | 0; + mid = (mid + Math.imul(al5, bh8)) | 0; + mid = (mid + Math.imul(ah5, bl8)) | 0; + hi = (hi + Math.imul(ah5, bh8)) | 0; + lo = (lo + Math.imul(al4, bl9)) | 0; + mid = (mid + Math.imul(al4, bh9)) | 0; + mid = (mid + Math.imul(ah4, bl9)) | 0; + hi = (hi + Math.imul(ah4, bh9)) | 0; + var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0; + w13 &= 0x3ffffff; + /* k = 14 */ + lo = Math.imul(al9, bl5); + mid = Math.imul(al9, bh5); + mid = (mid + Math.imul(ah9, bl5)) | 0; + hi = Math.imul(ah9, bh5); + lo = (lo + Math.imul(al8, bl6)) | 0; + mid = (mid + Math.imul(al8, bh6)) | 0; + mid = (mid + Math.imul(ah8, bl6)) | 0; + hi = (hi + Math.imul(ah8, bh6)) | 0; + lo = (lo + Math.imul(al7, bl7)) | 0; + mid = (mid + Math.imul(al7, bh7)) | 0; + mid = (mid + Math.imul(ah7, bl7)) | 0; + hi = (hi + Math.imul(ah7, bh7)) | 0; + lo = (lo + Math.imul(al6, bl8)) | 0; + mid = (mid + Math.imul(al6, bh8)) | 0; + mid = (mid + Math.imul(ah6, bl8)) | 0; + hi = (hi + Math.imul(ah6, bh8)) | 0; + lo = (lo + Math.imul(al5, bl9)) | 0; + mid = (mid + Math.imul(al5, bh9)) | 0; + mid = (mid + Math.imul(ah5, bl9)) | 0; + hi = (hi + Math.imul(ah5, bh9)) | 0; + var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0; + w14 &= 0x3ffffff; + /* k = 15 */ + lo = Math.imul(al9, bl6); + mid = Math.imul(al9, bh6); + mid = (mid + Math.imul(ah9, bl6)) | 0; + hi = Math.imul(ah9, bh6); + lo = (lo + Math.imul(al8, bl7)) | 0; + mid = (mid + Math.imul(al8, bh7)) | 0; + mid = (mid + Math.imul(ah8, bl7)) | 0; + hi = (hi + Math.imul(ah8, bh7)) | 0; + lo = (lo + Math.imul(al7, bl8)) | 0; + mid = (mid + Math.imul(al7, bh8)) | 0; + mid = (mid + Math.imul(ah7, bl8)) | 0; + hi = (hi + Math.imul(ah7, bh8)) | 0; + lo = (lo + Math.imul(al6, bl9)) | 0; + mid = (mid + Math.imul(al6, bh9)) | 0; + mid = (mid + Math.imul(ah6, bl9)) | 0; + hi = (hi + Math.imul(ah6, bh9)) | 0; + var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0; + w15 &= 0x3ffffff; + /* k = 16 */ + lo = Math.imul(al9, bl7); + mid = Math.imul(al9, bh7); + mid = (mid + Math.imul(ah9, bl7)) | 0; + hi = Math.imul(ah9, bh7); + lo = (lo + Math.imul(al8, bl8)) | 0; + mid = (mid + Math.imul(al8, bh8)) | 0; + mid = (mid + Math.imul(ah8, bl8)) | 0; + hi = (hi + Math.imul(ah8, bh8)) | 0; + lo = (lo + Math.imul(al7, bl9)) | 0; + mid = (mid + Math.imul(al7, bh9)) | 0; + mid = (mid + Math.imul(ah7, bl9)) | 0; + hi = (hi + Math.imul(ah7, bh9)) | 0; + var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0; + w16 &= 0x3ffffff; + /* k = 17 */ + lo = Math.imul(al9, bl8); + mid = Math.imul(al9, bh8); + mid = (mid + Math.imul(ah9, bl8)) | 0; + hi = Math.imul(ah9, bh8); + lo = (lo + Math.imul(al8, bl9)) | 0; + mid = (mid + Math.imul(al8, bh9)) | 0; + mid = (mid + Math.imul(ah8, bl9)) | 0; + hi = (hi + Math.imul(ah8, bh9)) | 0; + var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0; + w17 &= 0x3ffffff; + /* k = 18 */ + lo = Math.imul(al9, bl9); + mid = Math.imul(al9, bh9); + mid = (mid + Math.imul(ah9, bl9)) | 0; + hi = Math.imul(ah9, bh9); + var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0; + c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0; + w18 &= 0x3ffffff; + o[0] = w0; + o[1] = w1; + o[2] = w2; + o[3] = w3; + o[4] = w4; + o[5] = w5; + o[6] = w6; + o[7] = w7; + o[8] = w8; + o[9] = w9; + o[10] = w10; + o[11] = w11; + o[12] = w12; + o[13] = w13; + o[14] = w14; + o[15] = w15; + o[16] = w16; + o[17] = w17; + o[18] = w18; + if (c !== 0) { + o[19] = c; + out.length++; + } + return out; + }; + + // Polyfill comb + if (!Math.imul) { + comb10MulTo = smallMulTo; + } + + function bigMulTo (self, num, out) { + out.negative = num.negative ^ self.negative; + out.length = self.length + num.length; + + var carry = 0; + var hncarry = 0; + for (var k = 0; k < out.length - 1; k++) { + // Sum all words with the same `i + j = k` and accumulate `ncarry`, + // note that ncarry could be >= 0x3ffffff + var ncarry = hncarry; + hncarry = 0; + var rword = carry & 0x3ffffff; + var maxJ = Math.min(k, num.length - 1); + for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) { + var i = k - j; + var a = self.words[i] | 0; + var b = num.words[j] | 0; + var r = a * b; + + var lo = r & 0x3ffffff; + ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0; + lo = (lo + rword) | 0; + rword = lo & 0x3ffffff; + ncarry = (ncarry + (lo >>> 26)) | 0; + + hncarry += ncarry >>> 26; + ncarry &= 0x3ffffff; + } + out.words[k] = rword; + carry = ncarry; + ncarry = hncarry; + } + if (carry !== 0) { + out.words[k] = carry; + } else { + out.length--; + } + + return out.strip(); + } + + function jumboMulTo (self, num, out) { + var fftm = new FFTM(); + return fftm.mulp(self, num, out); + } + + BN.prototype.mulTo = function mulTo (num, out) { + var res; + var len = this.length + num.length; + if (this.length === 10 && num.length === 10) { + res = comb10MulTo(this, num, out); + } else if (len < 63) { + res = smallMulTo(this, num, out); + } else if (len < 1024) { + res = bigMulTo(this, num, out); + } else { + res = jumboMulTo(this, num, out); + } + + return res; + }; + + // Cooley-Tukey algorithm for FFT + // slightly revisited to rely on looping instead of recursion + + function FFTM (x, y) { + this.x = x; + this.y = y; + } + + FFTM.prototype.makeRBT = function makeRBT (N) { + var t = new Array(N); + var l = BN.prototype._countBits(N) - 1; + for (var i = 0; i < N; i++) { + t[i] = this.revBin(i, l, N); + } + + return t; + }; + + // Returns binary-reversed representation of `x` + FFTM.prototype.revBin = function revBin (x, l, N) { + if (x === 0 || x === N - 1) return x; + + var rb = 0; + for (var i = 0; i < l; i++) { + rb |= (x & 1) << (l - i - 1); + x >>= 1; + } + + return rb; + }; + + // Performs "tweedling" phase, therefore 'emulating' + // behaviour of the recursive algorithm + FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) { + for (var i = 0; i < N; i++) { + rtws[i] = rws[rbt[i]]; + itws[i] = iws[rbt[i]]; + } + }; + + FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) { + this.permute(rbt, rws, iws, rtws, itws, N); + + for (var s = 1; s < N; s <<= 1) { + var l = s << 1; + + var rtwdf = Math.cos(2 * Math.PI / l); + var itwdf = Math.sin(2 * Math.PI / l); + + for (var p = 0; p < N; p += l) { + var rtwdf_ = rtwdf; + var itwdf_ = itwdf; + + for (var j = 0; j < s; j++) { + var re = rtws[p + j]; + var ie = itws[p + j]; + + var ro = rtws[p + j + s]; + var io = itws[p + j + s]; + + var rx = rtwdf_ * ro - itwdf_ * io; + + io = rtwdf_ * io + itwdf_ * ro; + ro = rx; + + rtws[p + j] = re + ro; + itws[p + j] = ie + io; + + rtws[p + j + s] = re - ro; + itws[p + j + s] = ie - io; + + /* jshint maxdepth : false */ + if (j !== l) { + rx = rtwdf * rtwdf_ - itwdf * itwdf_; + + itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_; + rtwdf_ = rx; + } + } + } + } + }; + + FFTM.prototype.guessLen13b = function guessLen13b (n, m) { + var N = Math.max(m, n) | 1; + var odd = N & 1; + var i = 0; + for (N = N / 2 | 0; N; N = N >>> 1) { + i++; + } + + return 1 << i + 1 + odd; + }; + + FFTM.prototype.conjugate = function conjugate (rws, iws, N) { + if (N <= 1) return; + + for (var i = 0; i < N / 2; i++) { + var t = rws[i]; + + rws[i] = rws[N - i - 1]; + rws[N - i - 1] = t; + + t = iws[i]; + + iws[i] = -iws[N - i - 1]; + iws[N - i - 1] = -t; + } + }; + + FFTM.prototype.normalize13b = function normalize13b (ws, N) { + var carry = 0; + for (var i = 0; i < N / 2; i++) { + var w = Math.round(ws[2 * i + 1] / N) * 0x2000 + + Math.round(ws[2 * i] / N) + + carry; + + ws[i] = w & 0x3ffffff; + + if (w < 0x4000000) { + carry = 0; + } else { + carry = w / 0x4000000 | 0; + } + } + + return ws; + }; + + FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) { + var carry = 0; + for (var i = 0; i < len; i++) { + carry = carry + (ws[i] | 0); + + rws[2 * i] = carry & 0x1fff; carry = carry >>> 13; + rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13; + } + + // Pad with zeroes + for (i = 2 * len; i < N; ++i) { + rws[i] = 0; + } + + assert(carry === 0); + assert((carry & ~0x1fff) === 0); + }; + + FFTM.prototype.stub = function stub (N) { + var ph = new Array(N); + for (var i = 0; i < N; i++) { + ph[i] = 0; + } + + return ph; + }; + + FFTM.prototype.mulp = function mulp (x, y, out) { + var N = 2 * this.guessLen13b(x.length, y.length); + + var rbt = this.makeRBT(N); + + var _ = this.stub(N); + + var rws = new Array(N); + var rwst = new Array(N); + var iwst = new Array(N); + + var nrws = new Array(N); + var nrwst = new Array(N); + var niwst = new Array(N); + + var rmws = out.words; + rmws.length = N; + + this.convert13b(x.words, x.length, rws, N); + this.convert13b(y.words, y.length, nrws, N); + + this.transform(rws, _, rwst, iwst, N, rbt); + this.transform(nrws, _, nrwst, niwst, N, rbt); + + for (var i = 0; i < N; i++) { + var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i]; + iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i]; + rwst[i] = rx; + } + + this.conjugate(rwst, iwst, N); + this.transform(rwst, iwst, rmws, _, N, rbt); + this.conjugate(rmws, _, N); + this.normalize13b(rmws, N); + + out.negative = x.negative ^ y.negative; + out.length = x.length + y.length; + return out.strip(); + }; + + // Multiply `this` by `num` + BN.prototype.mul = function mul (num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return this.mulTo(num, out); + }; + + // Multiply employing FFT + BN.prototype.mulf = function mulf (num) { + var out = new BN(null); + out.words = new Array(this.length + num.length); + return jumboMulTo(this, num, out); + }; + + // In-place Multiplication + BN.prototype.imul = function imul (num) { + return this.clone().mulTo(num, this); + }; + + BN.prototype.imuln = function imuln (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + + // Carry + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = (this.words[i] | 0) * num; + var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); + carry >>= 26; + carry += (w / 0x4000000) | 0; + // NOTE: lo is 27bit maximum + carry += lo >>> 26; + this.words[i] = lo & 0x3ffffff; + } + + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + + return this; + }; + + BN.prototype.muln = function muln (num) { + return this.clone().imuln(num); + }; + + // `this` * `this` + BN.prototype.sqr = function sqr () { + return this.mul(this); + }; + + // `this` * `this` in-place + BN.prototype.isqr = function isqr () { + return this.imul(this.clone()); + }; + + // Math.pow(`this`, `num`) + BN.prototype.pow = function pow (num) { + var w = toBitArray(num); + if (w.length === 0) return new BN(1); + + // Skip leading zeroes + var res = this; + for (var i = 0; i < w.length; i++, res = res.sqr()) { + if (w[i] !== 0) break; + } + + if (++i < w.length) { + for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) { + if (w[i] === 0) continue; + + res = res.mul(q); + } + } + + return res; + }; + + // Shift-left in-place + BN.prototype.iushln = function iushln (bits) { + assert(typeof bits === 'number' && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r); + var i; + + if (r !== 0) { + var carry = 0; + + for (i = 0; i < this.length; i++) { + var newCarry = this.words[i] & carryMask; + var c = ((this.words[i] | 0) - newCarry) << r; + this.words[i] = c | carry; + carry = newCarry >>> (26 - r); + } + + if (carry) { + this.words[i] = carry; + this.length++; + } + } + + if (s !== 0) { + for (i = this.length - 1; i >= 0; i--) { + this.words[i + s] = this.words[i]; + } + + for (i = 0; i < s; i++) { + this.words[i] = 0; + } + + this.length += s; + } + + return this.strip(); + }; + + BN.prototype.ishln = function ishln (bits) { + // TODO(indutny): implement me + assert(this.negative === 0); + return this.iushln(bits); + }; + + // Shift-right in-place + // NOTE: `hint` is a lowest bit before trailing zeroes + // NOTE: if `extended` is present - it will be filled with destroyed bits + BN.prototype.iushrn = function iushrn (bits, hint, extended) { + assert(typeof bits === 'number' && bits >= 0); + var h; + if (hint) { + h = (hint - (hint % 26)) / 26; + } else { + h = 0; + } + + var r = bits % 26; + var s = Math.min((bits - r) / 26, this.length); + var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); + var maskedWords = extended; + + h -= s; + h = Math.max(0, h); + + // Extended mode, copy masked part + if (maskedWords) { + for (var i = 0; i < s; i++) { + maskedWords.words[i] = this.words[i]; + } + maskedWords.length = s; + } + + if (s === 0) { + // No-op, we should not move anything at all + } else if (this.length > s) { + this.length -= s; + for (i = 0; i < this.length; i++) { + this.words[i] = this.words[i + s]; + } + } else { + this.words[0] = 0; + this.length = 1; + } + + var carry = 0; + for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) { + var word = this.words[i] | 0; + this.words[i] = (carry << (26 - r)) | (word >>> r); + carry = word & mask; + } + + // Push carried bits as a mask + if (maskedWords && carry !== 0) { + maskedWords.words[maskedWords.length++] = carry; + } + + if (this.length === 0) { + this.words[0] = 0; + this.length = 1; + } + + return this.strip(); + }; + + BN.prototype.ishrn = function ishrn (bits, hint, extended) { + // TODO(indutny): implement me + assert(this.negative === 0); + return this.iushrn(bits, hint, extended); + }; + + // Shift-left + BN.prototype.shln = function shln (bits) { + return this.clone().ishln(bits); + }; + + BN.prototype.ushln = function ushln (bits) { + return this.clone().iushln(bits); + }; + + // Shift-right + BN.prototype.shrn = function shrn (bits) { + return this.clone().ishrn(bits); + }; + + BN.prototype.ushrn = function ushrn (bits) { + return this.clone().iushrn(bits); + }; + + // Test if n bit is set + BN.prototype.testn = function testn (bit) { + assert(typeof bit === 'number' && bit >= 0); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + + // Fast case: bit is much higher than all existing words + if (this.length <= s) return false; + + // Check bit and return + var w = this.words[s]; + + return !!(w & q); + }; + + // Return only lowers bits of number (in-place) + BN.prototype.imaskn = function imaskn (bits) { + assert(typeof bits === 'number' && bits >= 0); + var r = bits % 26; + var s = (bits - r) / 26; + + assert(this.negative === 0, 'imaskn works only with positive numbers'); + + if (this.length <= s) { + return this; + } + + if (r !== 0) { + s++; + } + this.length = Math.min(s, this.length); + + if (r !== 0) { + var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r); + this.words[this.length - 1] &= mask; + } + + return this.strip(); + }; + + // Return only lowers bits of number + BN.prototype.maskn = function maskn (bits) { + return this.clone().imaskn(bits); + }; + + // Add plain number `num` to `this` + BN.prototype.iaddn = function iaddn (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + if (num < 0) return this.isubn(-num); + + // Possible sign change + if (this.negative !== 0) { + if (this.length === 1 && (this.words[0] | 0) < num) { + this.words[0] = num - (this.words[0] | 0); + this.negative = 0; + return this; + } + + this.negative = 0; + this.isubn(num); + this.negative = 1; + return this; + } + + // Add without checks + return this._iaddn(num); + }; + + BN.prototype._iaddn = function _iaddn (num) { + this.words[0] += num; + + // Carry + for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) { + this.words[i] -= 0x4000000; + if (i === this.length - 1) { + this.words[i + 1] = 1; + } else { + this.words[i + 1]++; + } + } + this.length = Math.max(this.length, i + 1); + + return this; + }; + + // Subtract plain number `num` from `this` + BN.prototype.isubn = function isubn (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); + if (num < 0) return this.iaddn(-num); + + if (this.negative !== 0) { + this.negative = 0; + this.iaddn(num); + this.negative = 1; + return this; + } + + this.words[0] -= num; + + if (this.length === 1 && this.words[0] < 0) { + this.words[0] = -this.words[0]; + this.negative = 1; + } else { + // Carry + for (var i = 0; i < this.length && this.words[i] < 0; i++) { + this.words[i] += 0x4000000; + this.words[i + 1] -= 1; + } + } + + return this.strip(); + }; + + BN.prototype.addn = function addn (num) { + return this.clone().iaddn(num); + }; + + BN.prototype.subn = function subn (num) { + return this.clone().isubn(num); + }; + + BN.prototype.iabs = function iabs () { + this.negative = 0; + + return this; + }; + + BN.prototype.abs = function abs () { + return this.clone().iabs(); + }; + + BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) { + var len = num.length + shift; + var i; + + this._expand(len); + + var w; + var carry = 0; + for (i = 0; i < num.length; i++) { + w = (this.words[i + shift] | 0) + carry; + var right = (num.words[i] | 0) * mul; + w -= right & 0x3ffffff; + carry = (w >> 26) - ((right / 0x4000000) | 0); + this.words[i + shift] = w & 0x3ffffff; + } + for (; i < this.length - shift; i++) { + w = (this.words[i + shift] | 0) + carry; + carry = w >> 26; + this.words[i + shift] = w & 0x3ffffff; + } + + if (carry === 0) return this.strip(); + + // Subtraction overflow + assert(carry === -1); + carry = 0; + for (i = 0; i < this.length; i++) { + w = -(this.words[i] | 0) + carry; + carry = w >> 26; + this.words[i] = w & 0x3ffffff; + } + this.negative = 1; + + return this.strip(); + }; + + BN.prototype._wordDiv = function _wordDiv (num, mode) { + var shift = this.length - num.length; + + var a = this.clone(); + var b = num; + + // Normalize + var bhi = b.words[b.length - 1] | 0; + var bhiBits = this._countBits(bhi); + shift = 26 - bhiBits; + if (shift !== 0) { + b = b.ushln(shift); + a.iushln(shift); + bhi = b.words[b.length - 1] | 0; + } + + // Initialize quotient + var m = a.length - b.length; + var q; + + if (mode !== 'mod') { + q = new BN(null); + q.length = m + 1; + q.words = new Array(q.length); + for (var i = 0; i < q.length; i++) { + q.words[i] = 0; + } + } + + var diff = a.clone()._ishlnsubmul(b, 1, m); + if (diff.negative === 0) { + a = diff; + if (q) { + q.words[m] = 1; + } + } + + for (var j = m - 1; j >= 0; j--) { + var qj = (a.words[b.length + j] | 0) * 0x4000000 + + (a.words[b.length + j - 1] | 0); + + // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max + // (0x7ffffff) + qj = Math.min((qj / bhi) | 0, 0x3ffffff); + + a._ishlnsubmul(b, qj, j); + while (a.negative !== 0) { + qj--; + a.negative = 0; + a._ishlnsubmul(b, 1, j); + if (!a.isZero()) { + a.negative ^= 1; + } + } + if (q) { + q.words[j] = qj; + } + } + if (q) { + q.strip(); + } + a.strip(); + + // Denormalize + if (mode !== 'div' && shift !== 0) { + a.iushrn(shift); + } + + return { + div: q || null, + mod: a + }; + }; + + // NOTE: 1) `mode` can be set to `mod` to request mod only, + // to `div` to request div only, or be absent to + // request both div & mod + // 2) `positive` is true if unsigned mod is requested + BN.prototype.divmod = function divmod (num, mode, positive) { + assert(!num.isZero()); + + if (this.isZero()) { + return { + div: new BN(0), + mod: new BN(0) + }; + } + + var div, mod, res; + if (this.negative !== 0 && num.negative === 0) { + res = this.neg().divmod(num, mode); + + if (mode !== 'mod') { + div = res.div.neg(); + } + + if (mode !== 'div') { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.iadd(num); + } + } + + return { + div: div, + mod: mod + }; + } + + if (this.negative === 0 && num.negative !== 0) { + res = this.divmod(num.neg(), mode); + + if (mode !== 'mod') { + div = res.div.neg(); + } + + return { + div: div, + mod: res.mod + }; + } + + if ((this.negative & num.negative) !== 0) { + res = this.neg().divmod(num.neg(), mode); + + if (mode !== 'div') { + mod = res.mod.neg(); + if (positive && mod.negative !== 0) { + mod.isub(num); + } + } + + return { + div: res.div, + mod: mod + }; + } + + // Both numbers are positive at this point + + // Strip both numbers to approximate shift value + if (num.length > this.length || this.cmp(num) < 0) { + return { + div: new BN(0), + mod: this + }; + } + + // Very short reduction + if (num.length === 1) { + if (mode === 'div') { + return { + div: this.divn(num.words[0]), + mod: null + }; + } + + if (mode === 'mod') { + return { + div: null, + mod: new BN(this.modn(num.words[0])) + }; + } + + return { + div: this.divn(num.words[0]), + mod: new BN(this.modn(num.words[0])) + }; + } + + return this._wordDiv(num, mode); + }; + + // Find `this` / `num` + BN.prototype.div = function div (num) { + return this.divmod(num, 'div', false).div; + }; + + // Find `this` % `num` + BN.prototype.mod = function mod (num) { + return this.divmod(num, 'mod', false).mod; + }; + + BN.prototype.umod = function umod (num) { + return this.divmod(num, 'mod', true).mod; + }; + + // Find Round(`this` / `num`) + BN.prototype.divRound = function divRound (num) { + var dm = this.divmod(num); + + // Fast case - exact division + if (dm.mod.isZero()) return dm.div; + + var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod; + + var half = num.ushrn(1); + var r2 = num.andln(1); + var cmp = mod.cmp(half); + + // Round down + if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div; + + // Round up + return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1); + }; + + BN.prototype.modn = function modn (num) { + assert(num <= 0x3ffffff); + var p = (1 << 26) % num; + + var acc = 0; + for (var i = this.length - 1; i >= 0; i--) { + acc = (p * acc + (this.words[i] | 0)) % num; + } + + return acc; + }; + + // In-place division by number + BN.prototype.idivn = function idivn (num) { + assert(num <= 0x3ffffff); + + var carry = 0; + for (var i = this.length - 1; i >= 0; i--) { + var w = (this.words[i] | 0) + carry * 0x4000000; + this.words[i] = (w / num) | 0; + carry = w % num; + } + + return this.strip(); + }; + + BN.prototype.divn = function divn (num) { + return this.clone().idivn(num); + }; + + BN.prototype.egcd = function egcd (p) { + assert(p.negative === 0); + assert(!p.isZero()); + + var x = this; + var y = p.clone(); + + if (x.negative !== 0) { + x = x.umod(p); + } else { + x = x.clone(); + } + + // A * x + B * y = x + var A = new BN(1); + var B = new BN(0); + + // C * x + D * y = y + var C = new BN(0); + var D = new BN(1); + + var g = 0; + + while (x.isEven() && y.isEven()) { + x.iushrn(1); + y.iushrn(1); + ++g; + } + + var yp = y.clone(); + var xp = x.clone(); + + while (!x.isZero()) { + for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1); + if (i > 0) { + x.iushrn(i); + while (i-- > 0) { + if (A.isOdd() || B.isOdd()) { + A.iadd(yp); + B.isub(xp); + } + + A.iushrn(1); + B.iushrn(1); + } + } + + for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); + if (j > 0) { + y.iushrn(j); + while (j-- > 0) { + if (C.isOdd() || D.isOdd()) { + C.iadd(yp); + D.isub(xp); + } + + C.iushrn(1); + D.iushrn(1); + } + } + + if (x.cmp(y) >= 0) { + x.isub(y); + A.isub(C); + B.isub(D); + } else { + y.isub(x); + C.isub(A); + D.isub(B); + } + } + + return { + a: C, + b: D, + gcd: y.iushln(g) + }; + }; + + // This is reduced incarnation of the binary EEA + // above, designated to invert members of the + // _prime_ fields F(p) at a maximal speed + BN.prototype._invmp = function _invmp (p) { + assert(p.negative === 0); + assert(!p.isZero()); + + var a = this; + var b = p.clone(); + + if (a.negative !== 0) { + a = a.umod(p); + } else { + a = a.clone(); + } + + var x1 = new BN(1); + var x2 = new BN(0); + + var delta = b.clone(); + + while (a.cmpn(1) > 0 && b.cmpn(1) > 0) { + for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1); + if (i > 0) { + a.iushrn(i); + while (i-- > 0) { + if (x1.isOdd()) { + x1.iadd(delta); + } + + x1.iushrn(1); + } + } + + for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1); + if (j > 0) { + b.iushrn(j); + while (j-- > 0) { + if (x2.isOdd()) { + x2.iadd(delta); + } + + x2.iushrn(1); + } + } + + if (a.cmp(b) >= 0) { + a.isub(b); + x1.isub(x2); + } else { + b.isub(a); + x2.isub(x1); + } + } + + var res; + if (a.cmpn(1) === 0) { + res = x1; + } else { + res = x2; + } + + if (res.cmpn(0) < 0) { + res.iadd(p); + } + + return res; + }; + + BN.prototype.gcd = function gcd (num) { + if (this.isZero()) return num.abs(); + if (num.isZero()) return this.abs(); + + var a = this.clone(); + var b = num.clone(); + a.negative = 0; + b.negative = 0; + + // Remove common factor of two + for (var shift = 0; a.isEven() && b.isEven(); shift++) { + a.iushrn(1); + b.iushrn(1); + } + + do { + while (a.isEven()) { + a.iushrn(1); + } + while (b.isEven()) { + b.iushrn(1); + } + + var r = a.cmp(b); + if (r < 0) { + // Swap `a` and `b` to make `a` always bigger than `b` + var t = a; + a = b; + b = t; + } else if (r === 0 || b.cmpn(1) === 0) { + break; + } + + a.isub(b); + } while (true); + + return b.iushln(shift); + }; + + // Invert number in the field F(num) + BN.prototype.invm = function invm (num) { + return this.egcd(num).a.umod(num); + }; + + BN.prototype.isEven = function isEven () { + return (this.words[0] & 1) === 0; + }; + + BN.prototype.isOdd = function isOdd () { + return (this.words[0] & 1) === 1; + }; + + // And first word and num + BN.prototype.andln = function andln (num) { + return this.words[0] & num; + }; + + // Increment at the bit position in-line + BN.prototype.bincn = function bincn (bit) { + assert(typeof bit === 'number'); + var r = bit % 26; + var s = (bit - r) / 26; + var q = 1 << r; + + // Fast case: bit is much higher than all existing words + if (this.length <= s) { + this._expand(s + 1); + this.words[s] |= q; + return this; + } + + // Add bit and propagate, if needed + var carry = q; + for (var i = s; carry !== 0 && i < this.length; i++) { + var w = this.words[i] | 0; + w += carry; + carry = w >>> 26; + w &= 0x3ffffff; + this.words[i] = w; + } + if (carry !== 0) { + this.words[i] = carry; + this.length++; + } + return this; + }; + + BN.prototype.isZero = function isZero () { + return this.length === 1 && this.words[0] === 0; + }; + + BN.prototype.cmpn = function cmpn (num) { + var negative = num < 0; + + if (this.negative !== 0 && !negative) return -1; + if (this.negative === 0 && negative) return 1; + + this.strip(); + + var res; + if (this.length > 1) { + res = 1; + } else { + if (negative) { + num = -num; + } + + assert(num <= 0x3ffffff, 'Number is too big'); + + var w = this.words[0] | 0; + res = w === num ? 0 : w < num ? -1 : 1; + } + if (this.negative !== 0) return -res | 0; + return res; + }; + + // Compare two numbers and return: + // 1 - if `this` > `num` + // 0 - if `this` == `num` + // -1 - if `this` < `num` + BN.prototype.cmp = function cmp (num) { + if (this.negative !== 0 && num.negative === 0) return -1; + if (this.negative === 0 && num.negative !== 0) return 1; + + var res = this.ucmp(num); + if (this.negative !== 0) return -res | 0; + return res; + }; + + // Unsigned comparison + BN.prototype.ucmp = function ucmp (num) { + // At this point both numbers have the same sign + if (this.length > num.length) return 1; + if (this.length < num.length) return -1; + + var res = 0; + for (var i = this.length - 1; i >= 0; i--) { + var a = this.words[i] | 0; + var b = num.words[i] | 0; + + if (a === b) continue; + if (a < b) { + res = -1; + } else if (a > b) { + res = 1; + } + break; + } + return res; + }; + + BN.prototype.gtn = function gtn (num) { + return this.cmpn(num) === 1; + }; + + BN.prototype.gt = function gt (num) { + return this.cmp(num) === 1; + }; + + BN.prototype.gten = function gten (num) { + return this.cmpn(num) >= 0; + }; + + BN.prototype.gte = function gte (num) { + return this.cmp(num) >= 0; + }; + + BN.prototype.ltn = function ltn (num) { + return this.cmpn(num) === -1; + }; + + BN.prototype.lt = function lt (num) { + return this.cmp(num) === -1; + }; + + BN.prototype.lten = function lten (num) { + return this.cmpn(num) <= 0; + }; + + BN.prototype.lte = function lte (num) { + return this.cmp(num) <= 0; + }; + + BN.prototype.eqn = function eqn (num) { + return this.cmpn(num) === 0; + }; + + BN.prototype.eq = function eq (num) { + return this.cmp(num) === 0; + }; + + // + // A reduce context, could be using montgomery or something better, depending + // on the `m` itself. + // + BN.red = function red (num) { + return new Red(num); + }; + + BN.prototype.toRed = function toRed (ctx) { + assert(!this.red, 'Already a number in reduction context'); + assert(this.negative === 0, 'red works only with positives'); + return ctx.convertTo(this)._forceRed(ctx); + }; + + BN.prototype.fromRed = function fromRed () { + assert(this.red, 'fromRed works only with numbers in reduction context'); + return this.red.convertFrom(this); + }; + + BN.prototype._forceRed = function _forceRed (ctx) { + this.red = ctx; + return this; + }; + + BN.prototype.forceRed = function forceRed (ctx) { + assert(!this.red, 'Already a number in reduction context'); + return this._forceRed(ctx); + }; + + BN.prototype.redAdd = function redAdd (num) { + assert(this.red, 'redAdd works only with red numbers'); + return this.red.add(this, num); + }; + + BN.prototype.redIAdd = function redIAdd (num) { + assert(this.red, 'redIAdd works only with red numbers'); + return this.red.iadd(this, num); + }; + + BN.prototype.redSub = function redSub (num) { + assert(this.red, 'redSub works only with red numbers'); + return this.red.sub(this, num); + }; + + BN.prototype.redISub = function redISub (num) { + assert(this.red, 'redISub works only with red numbers'); + return this.red.isub(this, num); + }; + + BN.prototype.redShl = function redShl (num) { + assert(this.red, 'redShl works only with red numbers'); + return this.red.shl(this, num); + }; + + BN.prototype.redMul = function redMul (num) { + assert(this.red, 'redMul works only with red numbers'); + this.red._verify2(this, num); + return this.red.mul(this, num); + }; + + BN.prototype.redIMul = function redIMul (num) { + assert(this.red, 'redMul works only with red numbers'); + this.red._verify2(this, num); + return this.red.imul(this, num); + }; + + BN.prototype.redSqr = function redSqr () { + assert(this.red, 'redSqr works only with red numbers'); + this.red._verify1(this); + return this.red.sqr(this); + }; + + BN.prototype.redISqr = function redISqr () { + assert(this.red, 'redISqr works only with red numbers'); + this.red._verify1(this); + return this.red.isqr(this); + }; + + // Square root over p + BN.prototype.redSqrt = function redSqrt () { + assert(this.red, 'redSqrt works only with red numbers'); + this.red._verify1(this); + return this.red.sqrt(this); + }; + + BN.prototype.redInvm = function redInvm () { + assert(this.red, 'redInvm works only with red numbers'); + this.red._verify1(this); + return this.red.invm(this); + }; + + // Return negative clone of `this` % `red modulo` + BN.prototype.redNeg = function redNeg () { + assert(this.red, 'redNeg works only with red numbers'); + this.red._verify1(this); + return this.red.neg(this); + }; + + BN.prototype.redPow = function redPow (num) { + assert(this.red && !num.red, 'redPow(normalNum)'); + this.red._verify1(this); + return this.red.pow(this, num); + }; + + // Prime numbers with efficient reduction + var primes = { + k256: null, + p224: null, + p192: null, + p25519: null + }; + + // Pseudo-Mersenne prime + function MPrime (name, p) { + // P = 2 ^ N - K + this.name = name; + this.p = new BN(p, 16); + this.n = this.p.bitLength(); + this.k = new BN(1).iushln(this.n).isub(this.p); + + this.tmp = this._tmp(); + } + + MPrime.prototype._tmp = function _tmp () { + var tmp = new BN(null); + tmp.words = new Array(Math.ceil(this.n / 13)); + return tmp; + }; + + MPrime.prototype.ireduce = function ireduce (num) { + // Assumes that `num` is less than `P^2` + // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P) + var r = num; + var rlen; + + do { + this.split(r, this.tmp); + r = this.imulK(r); + r = r.iadd(this.tmp); + rlen = r.bitLength(); + } while (rlen > this.n); + + var cmp = rlen < this.n ? -1 : r.ucmp(this.p); + if (cmp === 0) { + r.words[0] = 0; + r.length = 1; + } else if (cmp > 0) { + r.isub(this.p); + } else { + r.strip(); + } + + return r; + }; + + MPrime.prototype.split = function split (input, out) { + input.iushrn(this.n, 0, out); + }; + + MPrime.prototype.imulK = function imulK (num) { + return num.imul(this.k); + }; + + function K256 () { + MPrime.call( + this, + 'k256', + 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f'); + } + inherits(K256, MPrime); + + K256.prototype.split = function split (input, output) { + // 256 = 9 * 26 + 22 + var mask = 0x3fffff; + + var outLen = Math.min(input.length, 9); + for (var i = 0; i < outLen; i++) { + output.words[i] = input.words[i]; + } + output.length = outLen; + + if (input.length <= 9) { + input.words[0] = 0; + input.length = 1; + return; + } + + // Shift by 9 limbs + var prev = input.words[9]; + output.words[output.length++] = prev & mask; + + for (i = 10; i < input.length; i++) { + var next = input.words[i] | 0; + input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22); + prev = next; + } + prev >>>= 22; + input.words[i - 10] = prev; + if (prev === 0 && input.length > 10) { + input.length -= 10; + } else { + input.length -= 9; + } + }; + + K256.prototype.imulK = function imulK (num) { + // K = 0x1000003d1 = [ 0x40, 0x3d1 ] + num.words[num.length] = 0; + num.words[num.length + 1] = 0; + num.length += 2; + + // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390 + var lo = 0; + for (var i = 0; i < num.length; i++) { + var w = num.words[i] | 0; + lo += w * 0x3d1; + num.words[i] = lo & 0x3ffffff; + lo = w * 0x40 + ((lo / 0x4000000) | 0); + } + + // Fast length reduction + if (num.words[num.length - 1] === 0) { + num.length--; + if (num.words[num.length - 1] === 0) { + num.length--; + } + } + return num; + }; + + function P224 () { + MPrime.call( + this, + 'p224', + 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001'); + } + inherits(P224, MPrime); + + function P192 () { + MPrime.call( + this, + 'p192', + 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff'); + } + inherits(P192, MPrime); + + function P25519 () { + // 2 ^ 255 - 19 + MPrime.call( + this, + '25519', + '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed'); + } + inherits(P25519, MPrime); + + P25519.prototype.imulK = function imulK (num) { + // K = 0x13 + var carry = 0; + for (var i = 0; i < num.length; i++) { + var hi = (num.words[i] | 0) * 0x13 + carry; + var lo = hi & 0x3ffffff; + hi >>>= 26; + + num.words[i] = lo; + carry = hi; + } + if (carry !== 0) { + num.words[num.length++] = carry; + } + return num; + }; + + // Exported mostly for testing purposes, use plain name instead + BN._prime = function prime (name) { + // Cached version of prime + if (primes[name]) return primes[name]; + + var prime; + if (name === 'k256') { + prime = new K256(); + } else if (name === 'p224') { + prime = new P224(); + } else if (name === 'p192') { + prime = new P192(); + } else if (name === 'p25519') { + prime = new P25519(); + } else { + throw new Error('Unknown prime ' + name); + } + primes[name] = prime; + + return prime; + }; + + // + // Base reduction engine + // + function Red (m) { + if (typeof m === 'string') { + var prime = BN._prime(m); + this.m = prime.p; + this.prime = prime; + } else { + assert(m.gtn(1), 'modulus must be greater than 1'); + this.m = m; + this.prime = null; + } + } + + Red.prototype._verify1 = function _verify1 (a) { + assert(a.negative === 0, 'red works only with positives'); + assert(a.red, 'red works only with red numbers'); + }; + + Red.prototype._verify2 = function _verify2 (a, b) { + assert((a.negative | b.negative) === 0, 'red works only with positives'); + assert(a.red && a.red === b.red, + 'red works only with red numbers'); + }; + + Red.prototype.imod = function imod (a) { + if (this.prime) return this.prime.ireduce(a)._forceRed(this); + return a.umod(this.m)._forceRed(this); + }; + + Red.prototype.neg = function neg (a) { + if (a.isZero()) { + return a.clone(); + } + + return this.m.sub(a)._forceRed(this); + }; + + Red.prototype.add = function add (a, b) { + this._verify2(a, b); + + var res = a.add(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res._forceRed(this); + }; + + Red.prototype.iadd = function iadd (a, b) { + this._verify2(a, b); + + var res = a.iadd(b); + if (res.cmp(this.m) >= 0) { + res.isub(this.m); + } + return res; + }; + + Red.prototype.sub = function sub (a, b) { + this._verify2(a, b); + + var res = a.sub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res._forceRed(this); + }; + + Red.prototype.isub = function isub (a, b) { + this._verify2(a, b); + + var res = a.isub(b); + if (res.cmpn(0) < 0) { + res.iadd(this.m); + } + return res; + }; + + Red.prototype.shl = function shl (a, num) { + this._verify1(a); + return this.imod(a.ushln(num)); + }; + + Red.prototype.imul = function imul (a, b) { + this._verify2(a, b); + return this.imod(a.imul(b)); + }; + + Red.prototype.mul = function mul (a, b) { + this._verify2(a, b); + return this.imod(a.mul(b)); + }; + + Red.prototype.isqr = function isqr (a) { + return this.imul(a, a.clone()); + }; + + Red.prototype.sqr = function sqr (a) { + return this.mul(a, a); + }; + + Red.prototype.sqrt = function sqrt (a) { + if (a.isZero()) return a.clone(); + + var mod3 = this.m.andln(3); + assert(mod3 % 2 === 1); + + // Fast case + if (mod3 === 3) { + var pow = this.m.add(new BN(1)).iushrn(2); + return this.pow(a, pow); + } + + // Tonelli-Shanks algorithm (Totally unoptimized and slow) + // + // Find Q and S, that Q * 2 ^ S = (P - 1) + var q = this.m.subn(1); + var s = 0; + while (!q.isZero() && q.andln(1) === 0) { + s++; + q.iushrn(1); + } + assert(!q.isZero()); + + var one = new BN(1).toRed(this); + var nOne = one.redNeg(); + + // Find quadratic non-residue + // NOTE: Max is such because of generalized Riemann hypothesis. + var lpow = this.m.subn(1).iushrn(1); + var z = this.m.bitLength(); + z = new BN(2 * z * z).toRed(this); + + while (this.pow(z, lpow).cmp(nOne) !== 0) { + z.redIAdd(nOne); + } + + var c = this.pow(z, q); + var r = this.pow(a, q.addn(1).iushrn(1)); + var t = this.pow(a, q); + var m = s; + while (t.cmp(one) !== 0) { + var tmp = t; + for (var i = 0; tmp.cmp(one) !== 0; i++) { + tmp = tmp.redSqr(); + } + assert(i < m); + var b = this.pow(c, new BN(1).iushln(m - i - 1)); + + r = r.redMul(b); + c = b.redSqr(); + t = t.redMul(c); + m = i; + } + + return r; + }; + + Red.prototype.invm = function invm (a) { + var inv = a._invmp(this.m); + if (inv.negative !== 0) { + inv.negative = 0; + return this.imod(inv).redNeg(); + } else { + return this.imod(inv); + } + }; + + Red.prototype.pow = function pow (a, num) { + if (num.isZero()) return new BN(1).toRed(this); + if (num.cmpn(1) === 0) return a.clone(); + + var windowSize = 4; + var wnd = new Array(1 << windowSize); + wnd[0] = new BN(1).toRed(this); + wnd[1] = a; + for (var i = 2; i < wnd.length; i++) { + wnd[i] = this.mul(wnd[i - 1], a); + } + + var res = wnd[0]; + var current = 0; + var currentLen = 0; + var start = num.bitLength() % 26; + if (start === 0) { + start = 26; + } + + for (i = num.length - 1; i >= 0; i--) { + var word = num.words[i]; + for (var j = start - 1; j >= 0; j--) { + var bit = (word >> j) & 1; + if (res !== wnd[0]) { + res = this.sqr(res); + } + + if (bit === 0 && current === 0) { + currentLen = 0; + continue; + } + + current <<= 1; + current |= bit; + currentLen++; + if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue; + + res = this.mul(res, wnd[current]); + currentLen = 0; + current = 0; + } + start = 26; + } + + return res; + }; + + Red.prototype.convertTo = function convertTo (num) { + var r = num.umod(this.m); + + return r === num ? r.clone() : r; + }; + + Red.prototype.convertFrom = function convertFrom (num) { + var res = num.clone(); + res.red = null; + return res; + }; + + // + // Montgomery method engine + // + + BN.mont = function mont (num) { + return new Mont(num); + }; + + function Mont (m) { + Red.call(this, m); + + this.shift = this.m.bitLength(); + if (this.shift % 26 !== 0) { + this.shift += 26 - (this.shift % 26); + } + + this.r = new BN(1).iushln(this.shift); + this.r2 = this.imod(this.r.sqr()); + this.rinv = this.r._invmp(this.m); + + this.minv = this.rinv.mul(this.r).isubn(1).div(this.m); + this.minv = this.minv.umod(this.r); + this.minv = this.r.sub(this.minv); + } + inherits(Mont, Red); + + Mont.prototype.convertTo = function convertTo (num) { + return this.imod(num.ushln(this.shift)); + }; + + Mont.prototype.convertFrom = function convertFrom (num) { + var r = this.imod(num.mul(this.rinv)); + r.red = null; + return r; + }; + + Mont.prototype.imul = function imul (a, b) { + if (a.isZero() || b.isZero()) { + a.words[0] = 0; + a.length = 1; + return a; + } + + var t = a.imul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + + return res._forceRed(this); + }; + + Mont.prototype.mul = function mul (a, b) { + if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this); + + var t = a.mul(b); + var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m); + var u = t.isub(c).iushrn(this.shift); + var res = u; + if (u.cmp(this.m) >= 0) { + res = u.isub(this.m); + } else if (u.cmpn(0) < 0) { + res = u.iadd(this.m); + } + + return res._forceRed(this); + }; + + Mont.prototype.invm = function invm (a) { + // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R + var res = this.imod(a._invmp(this.m).mul(this.r2)); + return res._forceRed(this); + }; +})(typeof module === 'undefined' || module, this); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(92)(module))) + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__(4).Buffer +var bip66 = __webpack_require__(301) +var pushdata = __webpack_require__(302) +var typeforce = __webpack_require__(16) +var types = __webpack_require__(27) +var scriptNumber = __webpack_require__(304) + +var OPS = __webpack_require__(33) +var REVERSE_OPS = __webpack_require__(687) +var OP_INT_BASE = OPS.OP_RESERVED // OP_1 - 1 + +function isOPInt (value) { + return types.Number(value) && + ((value === OPS.OP_0) || + (value >= OPS.OP_1 && value <= OPS.OP_16) || + (value === OPS.OP_1NEGATE)) +} + +function isPushOnlyChunk (value) { + return types.Buffer(value) || isOPInt(value) +} + +function isPushOnly (value) { + return types.Array(value) && value.every(isPushOnlyChunk) +} + +function asMinimalOP (buffer) { + if (buffer.length === 0) return OPS.OP_0 + if (buffer.length !== 1) return + if (buffer[0] >= 1 && buffer[0] <= 16) return OP_INT_BASE + buffer[0] + if (buffer[0] === 0x81) return OPS.OP_1NEGATE +} + +function compile (chunks) { + // TODO: remove me + if (Buffer.isBuffer(chunks)) return chunks + + typeforce(types.Array, chunks) + + var bufferSize = chunks.reduce(function (accum, chunk) { + // data chunk + if (Buffer.isBuffer(chunk)) { + // adhere to BIP62.3, minimal push policy + if (chunk.length === 1 && asMinimalOP(chunk) !== undefined) { + return accum + 1 + } + + return accum + pushdata.encodingLength(chunk.length) + chunk.length + } + + // opcode + return accum + 1 + }, 0.0) + + var buffer = Buffer.allocUnsafe(bufferSize) + var offset = 0 + + chunks.forEach(function (chunk) { + // data chunk + if (Buffer.isBuffer(chunk)) { + // adhere to BIP62.3, minimal push policy + var opcode = asMinimalOP(chunk) + if (opcode !== undefined) { + buffer.writeUInt8(opcode, offset) + offset += 1 + return + } + + offset += pushdata.encode(buffer, chunk.length, offset) + chunk.copy(buffer, offset) + offset += chunk.length + + // opcode + } else { + buffer.writeUInt8(chunk, offset) + offset += 1 + } + }) + + if (offset !== buffer.length) throw new Error('Could not decode chunks') + return buffer +} + +function decompile (buffer) { + // TODO: remove me + if (types.Array(buffer)) return buffer + + typeforce(types.Buffer, buffer) + + var chunks = [] + var i = 0 + + while (i < buffer.length) { + var opcode = buffer[i] + + // data chunk + if ((opcode > OPS.OP_0) && (opcode <= OPS.OP_PUSHDATA4)) { + var d = pushdata.decode(buffer, i) + + // did reading a pushDataInt fail? empty script + if (d === null) return [] + i += d.size + + // attempt to read too much data? empty script + if (i + d.number > buffer.length) return [] + + var data = buffer.slice(i, i + d.number) + i += d.number + + // decompile minimally + var op = asMinimalOP(data) + if (op !== undefined) { + chunks.push(op) + } else { + chunks.push(data) + } + + // opcode + } else { + chunks.push(opcode) + + i += 1 + } + } + + return chunks +} + +function toASM (chunks) { + if (Buffer.isBuffer(chunks)) { + chunks = decompile(chunks) + } + + return chunks.map(function (chunk) { + // data? + if (Buffer.isBuffer(chunk)) { + var op = asMinimalOP(chunk) + if (op === undefined) return chunk.toString('hex') + chunk = op + } + + // opcode! + return REVERSE_OPS[chunk] + }).join(' ') +} + +function fromASM (asm) { + typeforce(types.String, asm) + + return compile(asm.split(' ').map(function (chunkStr) { + // opcode? + if (OPS[chunkStr] !== undefined) return OPS[chunkStr] + typeforce(types.Hex, chunkStr) + + // data! + return Buffer.from(chunkStr, 'hex') + })) +} + +function toStack (chunks) { + chunks = decompile(chunks) + typeforce(isPushOnly, chunks) + + return chunks.map(function (op) { + if (Buffer.isBuffer(op)) return op + if (op === OPS.OP_0) return Buffer.allocUnsafe(0) + + return scriptNumber.encode(op - OP_INT_BASE) + }) +} + +function isCanonicalPubKey (buffer) { + if (!Buffer.isBuffer(buffer)) return false + if (buffer.length < 33) return false + + switch (buffer[0]) { + case 0x02: + case 0x03: + return buffer.length === 33 + case 0x04: + return buffer.length === 65 + } + + return false +} + +function isDefinedHashType (hashType) { + var hashTypeMod = hashType & ~0x80 + +// return hashTypeMod > SIGHASH_ALL && hashTypeMod < SIGHASH_SINGLE + return hashTypeMod > 0x00 && hashTypeMod < 0x04 +} + +function isCanonicalSignature (buffer) { + if (!Buffer.isBuffer(buffer)) return false + if (!isDefinedHashType(buffer[buffer.length - 1])) return false + + return bip66.check(buffer.slice(0, -1)) +} + +module.exports = { + compile: compile, + decompile: decompile, + fromASM: fromASM, + toASM: toASM, + toStack: toStack, + + number: __webpack_require__(304), + + isCanonicalPubKey: isCanonicalPubKey, + isCanonicalSignature: isCanonicalSignature, + isPushOnly: isPushOnly, + isDefinedHashType: isDefinedHashType +} + + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.13 ToObject(argument) +var defined = __webpack_require__(55); +module.exports = function (it) { + return Object(defined(it)); +}; + + +/***/ }), +/* 25 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_crypto_Argon2_Argon2__ = __webpack_require__(575); + +let crypto = ( true) ? __webpack_require__(174) : require('crypto'); + + +class WebDollarCrypto { + + /** + * + * @param bytes + * return string + */ + static encodeBase64(buffer) { + + if (!Buffer.isBuffer(buffer)) + buffer = new Buffer(buffer); + + let result = buffer.toString('base64'); + + let newStr = ''; + for (let i = 0; i < result.length; i++) { + + if (result[i] === 'O') newStr += '#'; else + if (result[i] === 'l') newStr += '@'; else + if (result[i] === '/') newStr += '$'; + else newStr += result[i]; + + } + + return newStr; + } + + /** + * + * @param str + * @returns {Buffer} + */ + static decodeBase64(str) { + + if (typeof str !== "string") throw {message: "input is not string for base decoding", str:str}; + + let newStr = ''; + for (let i = 0; i < str.length; i++) { + + if (str[i] === '#') newStr += 'O'; else + if (str[i] === '@') newStr += 'l'; else + if (str[i] === '$') newStr += '/'; + else newStr += str[i]; + } + + let result = new Buffer(newStr, 'base64'); + + return result; + } + + static getBufferRandomValues(count){ + + if (count === undefined) + count = 32; + + let randArr = new Buffer(count); //create a typed array of 32 bytes (256 bits) + + // if ( typeof window !== 'undefined' && window.crypto !==undefined) + // window.crypto.getRandomValues(randArr) //populate array with cryptographically secure random numbers + // else { + const getRandomValues = __webpack_require__(667); + getRandomValues(randArr); + // } + + return randArr; + } + + + static bytesToHex(bytes){ + + let result = ''; + + for (let i = 0; i < bytes.length; i++) { + let hex = bytes[i].toString(16); + result += (hex.length === 1 ? '0' : '') + hex ; + } + + return result; + } + + static isHex(h) { + let a = parseInt(h, 16); + + return (a.toString(16) === h.toLowerCase()); + } + + static SHA256(bytes){ + + let sha256 = crypto.createHash('sha256'); //sha256 + sha256.update(bytes); + + return sha256.digest(); + } + + static encryptAES(buffer, password){ + + if (!Buffer.isBuffer(buffer)) + throw {message: "buffer argument is not a buffer"}; + + try { + let cipher = crypto.createCipher('aes-256-cbc', password); + let crypted = Buffer.concat([cipher.update(buffer), cipher.final()]); + + return Buffer.from(crypted); + } + catch (exception) { + return null; + } + } + + static decryptAES(buffer, password) { + + if (!Buffer.isBuffer(buffer)) + throw {message: "buffer argument is not a buffer"}; + + try { + let decipher = crypto.createDecipher('aes-256-cbc', password); + let decrypt = Buffer.concat([decipher.update(buffer), decipher.final()]); + + return Buffer.from(decrypt); + } + catch(exception){ + return null; + } + } + + static RIPEMD160(bytes){ + + let ripemd160 = crypto.createHash('ripemd160'); // RIPEMD160 + ripemd160.update(bytes); + + return ripemd160.digest(); + } + + static MD5(bytes){ + + let md5 = crypto.createHash('md5'); // RIPEMD160 + md5.update(bytes); + + return md5.digest(); + } + + static MD512(bytes){ + + let md512 = crypto.createHash('md512'); // RIPEMD160 + md512.update(bytes); + + return md512.digest(); + } + + /** + * Hashing using Argon2 + * @param data + * @param buffer + * @returns {Promise.} + */ + static hashPOW(data){ + + return __WEBPACK_IMPORTED_MODULE_0_common_crypto_Argon2_Argon2__["a" /* default */].hash(data); + } + + /** + * Hashing using Argon2 + * @param data + * @returns {Promise.} + */ + static hashPOW_String(data){ + + return __WEBPACK_IMPORTED_MODULE_0_common_crypto_Argon2_Argon2__["a" /* default */].hashString(data); + } + + /** + * Verify the Hash using Argon2 + * @param hash + * @param data + */ + static verifyHashPOW(hash, data){ + + return __WEBPACK_IMPORTED_MODULE_0_common_crypto_Argon2_Argon2__["a" /* default */].verify(hash, data); + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (WebDollarCrypto); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 26 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +const NODE_TYPE = { + + NODE_WEB_PEER: 0, + NODE_TERMINAL: 1, + +}; + +/* harmony default export */ __webpack_exports__["a"] = (NODE_TYPE); + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __webpack_require__) { + +var typeforce = __webpack_require__(16) + +var UINT31_MAX = Math.pow(2, 31) - 1 +function UInt31 (value) { + return typeforce.UInt32(value) && value <= UINT31_MAX +} + +function BIP32Path (value) { + return typeforce.String(value) && value.match(/^(m\/)?(\d+'?\/)*\d+'?$/) +} +BIP32Path.toJSON = function () { return 'BIP32 derivation path' } + +var SATOSHI_MAX = 21 * 1e14 +function Satoshi (value) { + return typeforce.UInt53(value) && value <= SATOSHI_MAX +} + +// external dependent types +var BigInt = typeforce.quacksLike('BigInteger') +var ECPoint = typeforce.quacksLike('Point') + +// exposed, external API +var ECSignature = typeforce.compile({ r: BigInt, s: BigInt }) +var Network = typeforce.compile({ + messagePrefix: typeforce.oneOf(typeforce.Buffer, typeforce.String), + bip32: { + public: typeforce.UInt32, + private: typeforce.UInt32 + }, + pubKeyHash: typeforce.UInt8, + scriptHash: typeforce.UInt8, + wif: typeforce.UInt8 +}) + +// extend typeforce types with ours +var types = { + BigInt: BigInt, + BIP32Path: BIP32Path, + Buffer256bit: typeforce.BufferN(32), + ECPoint: ECPoint, + ECSignature: ECSignature, + Hash160bit: typeforce.BufferN(20), + Hash256bit: typeforce.BufferN(32), + Network: Network, + Satoshi: Satoshi, + UInt31: UInt31 +} + +for (var typeName in typeforce) { + types[typeName] = typeforce[typeName] +} + +module.exports = types + + +/***/ }), +/* 28 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Nodes_Waitlist_Object__ = __webpack_require__(323); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_sockets_protocol_extend_socket_Socket_Address__ = __webpack_require__(64); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_node_lists_waitlist_Nodes_Waitlist__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_common_utils_helpers_Download_Manager__ = __webpack_require__(740); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__types_Node_Consensus_Type__ = __webpack_require__(34); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_node_lists_geolocation_lists_GeoLocation_Lists__ = __webpack_require__(200); + + + + + + + + + + + + + +const EventEmitter = __webpack_require__(46); + +class NodesWaitlist { + + constructor(){ + + console.log("NodesWaitlist constructor"); + + this.NodesWaitlistObject = __WEBPACK_IMPORTED_MODULE_1__Nodes_Waitlist_Object__["a" /* default */]; + + this.emitter = new EventEmitter(); + this.emitter.setMaxListeners(100); + + this.waitListFullNodes = []; + this.waitListLightNodes = []; + + this.MAX_FULLNODE_WAITLIST_CONNECTIONS = 500; + this.MAX_LIGHTNODE_WAITLIST_CONNECTIONS = 500; + + this.MAX_ERROR_TRIALS_FALLBACK = 1000; + this.MAX_ERROR_TRIALS_SIMPLE = 50; + + setTimeout( this._deleteObsoleteFullNodesWaitlist.bind(this), ( 4 + Math.floor( Math.random()*5 )) *60*1000 ); // 10 in 10 minutes + + } + + initializeWaitlist(){ + + __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/connected", async (nodesListObject) => { + await this._initializeNode(nodesListObject.socket); + }); + + __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/disconnected", async (nodesListObject) => { + await this._desinitializeNode(nodesListObject.socket); + }); + + //interval to delete useless waitlist and resort scores + + setTimeout( this._deleteUselessWaitlists.bind(this), 20*1000 + Math.random()*3000 ); + + } + + + async addNewNodeToWaitlist (addresses, port, nodeType, nodeConsensusType, connected, level, backedBy, socket, forceInsertingWaitlist=false){ + + if ( (typeof addresses === "string" && addresses === '') || (typeof addresses === "object" && (addresses === null || addresses===[])) ) return {result:false, waitlist: null}; + + //converting to array + if ( typeof addresses === "string" || !Array.isArray(addresses) ) addresses = [addresses]; + + + //avoid connecting to other nodes + if ( __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].MinerPoolManagement !== undefined && __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].MinerPoolManagement.minerPoolStarted && nodeConsensusType !== __WEBPACK_IMPORTED_MODULE_8__types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER && nodeType !== __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER) + return {result:false, waitlist: null}; + + + + let sckAddresses = []; + let waitListFound = null; + + //let's determine the sckAddresses + for (let i=0; i= __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].versionCompatibility)) { + + //search again because i have waited for a promise + let answer = this._searchNodesWaitlist(sckAddress, port, nodeType); + + if (answer.waitlist === null) + sckAddresses.push(sckAddress); + else + waitListFound = answer.waitlist; + } + + + } + } + + if (answer.waitlist !== null) { + + //already found, let's add a new pushBackedBy + answer.waitlist.pushBackedBy(backedBy, connected); + + if (socket !== undefined) + answer.waitlist.socketConnected(socket); + + waitListFound = answer.waitlist; + + } + else{ + + + + } + + } catch (exception){ + + } + + } + + // incase this new waitlist is new + if (sckAddresses.length > 0){ + + let waitListObject = new __WEBPACK_IMPORTED_MODULE_1__Nodes_Waitlist_Object__["a" /* default */]( sckAddresses, nodeType, nodeConsensusType, level, backedBy , connected, socket ); + __WEBPACK_IMPORTED_MODULE_9_node_lists_geolocation_lists_GeoLocation_Lists__["a" /* default */]._includeAddress(sckAddresses[0]); + + let list; + + if (waitListObject.nodeType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL) list = this.waitListFullNodes; + else if (waitListObject.nodeType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER) list = this.waitListLightNodes; + + if ( socket !== undefined){ + waitListObject.socket = socket; + waitListObject.connected = true; + } + + // v + list.push(waitListObject); + + this.emitter.emit( "waitlist/new-node", waitListObject ); + return {result: true, waitlist: waitListObject}; + + } else + return {result:false, waitlist: waitListFound}; + } + + _findNodesWaitlist(address, port, listType){ + + let list = []; + + let sckAddress = __WEBPACK_IMPORTED_MODULE_2_common_sockets_protocol_extend_socket_Socket_Address__["a" /* default */].createSocketAddress( address, port ); + + if (listType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL ) list = this.waitListFullNodes; + else if( listType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER ) list = this.waitListLightNodes; + + for (let i=0; i=0; i--) + if (this.waitListFullNodes[i].nodeConsensusType === nodeConsensusType) + this.waitListFullNodes.splice(i,1); + + } + async _deleteObsoleteFullNodesWaitlist(){ + + for (let i=this.waitListFullNodes.length-1; i>=0; i--) + if (!this.waitListFullNodes[i].isFallback) { + + try { + + if ( (__WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].MinerPoolManagement.minerPoolStarted || __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].MinerPoolManagement.poolStarted ) && [ __WEBPACK_IMPORTED_MODULE_8__types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER, __WEBPACK_IMPORTED_MODULE_8__types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_POOL].indexOf( this.waitListFullNodes[i].nodeConsensusType ) >= 0) continue; + + let response = await __WEBPACK_IMPORTED_MODULE_5_common_utils_helpers_Download_Manager__["a" /* default */].downloadFile(this.waitListFullNodes[i].sckAddresses[0].getAddress(true, true), 10000); + + if (response !== null && response.protocol === __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].SETTINGS.NODE.PROTOCOL && response.version >= __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].versionCompatibility) { + this.waitListFullNodes[i].failsChecking = 0; + continue; + } + else { + this.waitListFullNodes[i].failsChecking++; + + if (this.waitListFullNodes[i].failsChecking >= 5) + this.waitListFullNodes.splice(i, 1); + + } + + } catch (exception){ + + } + + await __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].blockchain.sleep( 500 + Math.floor( Math.random()*2000) ); + } + + setTimeout( this._deleteObsoleteFullNodesWaitlist.bind(this), ( 4 + Math.floor( Math.random()*5 )) *60*1000 ); // 10 in 10 minutes + + } + + /** + * It will delete useless waitlist WEB_PEER + * It will delete addresses that tried way too much + * @returns {boolean} + */ + async _deleteUselessWaitlist(listType){ + + let list, max; + + + if (listType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL ) { + list = this.waitListFullNodes; + max = this.MAX_FULLNODE_WAITLIST_CONNECTIONS; + } + + if (listType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER ) { + list = this.waitListFullNodes; + max = this.MAX_LIGHTNODE_WAITLIST_CONNECTIONS; + } + + //sorting by formula connectedBy + + for (let i=list.length-1; i>=0; i--) + if ( ( list[i].isFallback && list[i].errorTrials > this.MAX_ERROR_TRIALS_FALLBACK ) || + ( !list[i].isFallback && list[i].errorTrials > this.MAX_ERROR_TRIALS_SIMPLE)) { + + this.emitter.emit("waitlist/delete-node", list[i]); + list.splice(i, 1); + + } + + await __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].blockchain.sleep(20); + + this._sortList(list); + + await __WEBPACK_IMPORTED_MODULE_7_main_blockchain_Blockchain__["a" /* default */].blockchain.sleep(50); + + //make sure the list has a maximum length + if (list.length > max){ + list.splice(max); + } + + return false; + + } + + _sortList(list){ + + for (let i=0; i=0; i--) + + if (list[i].socket === socket) { + list[i].connected = false; + list[i].socket = undefined; + } + + + } + + isAddressFallback(address){ + + let answer = this._searchNodesWaitlist(address, undefined, __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL); + if ( answer.waitlist !== null) return answer.waitlist.isFallback; + + return false; + } + + getJSONList(listType, fallback){ + + let list = []; + + if (listType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL ) list = this.waitListFullNodes; + else if ( listType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER ) list = this.waitListLightNodes; + + let answer = []; + + for (let i=0; i this.MAX_SAFE_COINS) return false; + if ( number < this.MIN_SAFE_COINS) return false; + + return true; + } + + convertToUnits(number){ + return number * this.WEBD; + } + + convertToWEBD(number){ + return number / this.WEBD; + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new WebDollarCoins()); + +/***/ }), +/* 30 */ +/***/ (function(module, exports) { + +module.exports = function (it) { + if (typeof it != 'function') throw TypeError(it + ' is not a function!'); + return it; +}; + + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;var bigInt = (function (undefined) { + "use strict"; + + var BASE = 1e7, + LOG_BASE = 7, + MAX_INT = 9007199254740992, + MAX_INT_ARR = smallToArray(MAX_INT), + LOG_MAX_INT = Math.log(MAX_INT); + + function Integer(v, radix) { + if (typeof v === "undefined") return Integer[0]; + if (typeof radix !== "undefined") return +radix === 10 ? parseValue(v) : parseBase(v, radix); + return parseValue(v); + } + + function BigInteger(value, sign) { + this.value = value; + this.sign = sign; + this.isSmall = false; + } + BigInteger.prototype = Object.create(Integer.prototype); + + function SmallInteger(value) { + this.value = value; + this.sign = value < 0; + this.isSmall = true; + } + SmallInteger.prototype = Object.create(Integer.prototype); + + function isPrecise(n) { + return -MAX_INT < n && n < MAX_INT; + } + + function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes + if (n < 1e7) + return [n]; + if (n < 1e14) + return [n % 1e7, Math.floor(n / 1e7)]; + return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)]; + } + + function arrayToSmall(arr) { // If BASE changes this function may need to change + trim(arr); + var length = arr.length; + if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) { + switch (length) { + case 0: return 0; + case 1: return arr[0]; + case 2: return arr[0] + arr[1] * BASE; + default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE; + } + } + return arr; + } + + function trim(v) { + var i = v.length; + while (v[--i] === 0); + v.length = i + 1; + } + + function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger + var x = new Array(length); + var i = -1; + while (++i < length) { + x[i] = 0; + } + return x; + } + + function truncate(n) { + if (n > 0) return Math.floor(n); + return Math.ceil(n); + } + + function add(a, b) { // assumes a and b are arrays with a.length >= b.length + var l_a = a.length, + l_b = b.length, + r = new Array(l_a), + carry = 0, + base = BASE, + sum, i; + for (i = 0; i < l_b; i++) { + sum = a[i] + b[i] + carry; + carry = sum >= base ? 1 : 0; + r[i] = sum - carry * base; + } + while (i < l_a) { + sum = a[i] + carry; + carry = sum === base ? 1 : 0; + r[i++] = sum - carry * base; + } + if (carry > 0) r.push(carry); + return r; + } + + function addAny(a, b) { + if (a.length >= b.length) return add(a, b); + return add(b, a); + } + + function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT + var l = a.length, + r = new Array(l), + base = BASE, + sum, i; + for (i = 0; i < l; i++) { + sum = a[i] - base + carry; + carry = Math.floor(sum / base); + r[i] = sum - carry * base; + carry += 1; + } + while (carry > 0) { + r[i++] = carry % base; + carry = Math.floor(carry / base); + } + return r; + } + + BigInteger.prototype.add = function (v) { + var n = parseValue(v); + if (this.sign !== n.sign) { + return this.subtract(n.negate()); + } + var a = this.value, b = n.value; + if (n.isSmall) { + return new BigInteger(addSmall(a, Math.abs(b)), this.sign); + } + return new BigInteger(addAny(a, b), this.sign); + }; + BigInteger.prototype.plus = BigInteger.prototype.add; + + SmallInteger.prototype.add = function (v) { + var n = parseValue(v); + var a = this.value; + if (a < 0 !== n.sign) { + return this.subtract(n.negate()); + } + var b = n.value; + if (n.isSmall) { + if (isPrecise(a + b)) return new SmallInteger(a + b); + b = smallToArray(Math.abs(b)); + } + return new BigInteger(addSmall(b, Math.abs(a)), a < 0); + }; + SmallInteger.prototype.plus = SmallInteger.prototype.add; + + function subtract(a, b) { // assumes a and b are arrays with a >= b + var a_l = a.length, + b_l = b.length, + r = new Array(a_l), + borrow = 0, + base = BASE, + i, difference; + for (i = 0; i < b_l; i++) { + difference = a[i] - borrow - b[i]; + if (difference < 0) { + difference += base; + borrow = 1; + } else borrow = 0; + r[i] = difference; + } + for (i = b_l; i < a_l; i++) { + difference = a[i] - borrow; + if (difference < 0) difference += base; + else { + r[i++] = difference; + break; + } + r[i] = difference; + } + for (; i < a_l; i++) { + r[i] = a[i]; + } + trim(r); + return r; + } + + function subtractAny(a, b, sign) { + var value; + if (compareAbs(a, b) >= 0) { + value = subtract(a, b); + } else { + value = subtract(b, a); + sign = !sign; + } + value = arrayToSmall(value); + if (typeof value === "number") { + if (sign) value = -value; + return new SmallInteger(value); + } + return new BigInteger(value, sign); + } + + function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT + var l = a.length, + r = new Array(l), + carry = -b, + base = BASE, + i, difference; + for (i = 0; i < l; i++) { + difference = a[i] + carry; + carry = Math.floor(difference / base); + difference %= base; + r[i] = difference < 0 ? difference + base : difference; + } + r = arrayToSmall(r); + if (typeof r === "number") { + if (sign) r = -r; + return new SmallInteger(r); + } return new BigInteger(r, sign); + } + + BigInteger.prototype.subtract = function (v) { + var n = parseValue(v); + if (this.sign !== n.sign) { + return this.add(n.negate()); + } + var a = this.value, b = n.value; + if (n.isSmall) + return subtractSmall(a, Math.abs(b), this.sign); + return subtractAny(a, b, this.sign); + }; + BigInteger.prototype.minus = BigInteger.prototype.subtract; + + SmallInteger.prototype.subtract = function (v) { + var n = parseValue(v); + var a = this.value; + if (a < 0 !== n.sign) { + return this.add(n.negate()); + } + var b = n.value; + if (n.isSmall) { + return new SmallInteger(a - b); + } + return subtractSmall(b, Math.abs(a), a >= 0); + }; + SmallInteger.prototype.minus = SmallInteger.prototype.subtract; + + BigInteger.prototype.negate = function () { + return new BigInteger(this.value, !this.sign); + }; + SmallInteger.prototype.negate = function () { + var sign = this.sign; + var small = new SmallInteger(-this.value); + small.sign = !sign; + return small; + }; + + BigInteger.prototype.abs = function () { + return new BigInteger(this.value, false); + }; + SmallInteger.prototype.abs = function () { + return new SmallInteger(Math.abs(this.value)); + }; + + function multiplyLong(a, b) { + var a_l = a.length, + b_l = b.length, + l = a_l + b_l, + r = createArray(l), + base = BASE, + product, carry, i, a_i, b_j; + for (i = 0; i < a_l; ++i) { + a_i = a[i]; + for (var j = 0; j < b_l; ++j) { + b_j = b[j]; + product = a_i * b_j + r[i + j]; + carry = Math.floor(product / base); + r[i + j] = product - carry * base; + r[i + j + 1] += carry; + } + } + trim(r); + return r; + } + + function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE + var l = a.length, + r = new Array(l), + base = BASE, + carry = 0, + product, i; + for (i = 0; i < l; i++) { + product = a[i] * b + carry; + carry = Math.floor(product / base); + r[i] = product - carry * base; + } + while (carry > 0) { + r[i++] = carry % base; + carry = Math.floor(carry / base); + } + return r; + } + + function shiftLeft(x, n) { + var r = []; + while (n-- > 0) r.push(0); + return r.concat(x); + } + + function multiplyKaratsuba(x, y) { + var n = Math.max(x.length, y.length); + + if (n <= 30) return multiplyLong(x, y); + n = Math.ceil(n / 2); + + var b = x.slice(n), + a = x.slice(0, n), + d = y.slice(n), + c = y.slice(0, n); + + var ac = multiplyKaratsuba(a, c), + bd = multiplyKaratsuba(b, d), + abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d)); + + var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n)); + trim(product); + return product; + } + + // The following function is derived from a surface fit of a graph plotting the performance difference + // between long multiplication and karatsuba multiplication versus the lengths of the two arrays. + function useKaratsuba(l1, l2) { + return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0; + } + + BigInteger.prototype.multiply = function (v) { + var n = parseValue(v), + a = this.value, b = n.value, + sign = this.sign !== n.sign, + abs; + if (n.isSmall) { + if (b === 0) return Integer[0]; + if (b === 1) return this; + if (b === -1) return this.negate(); + abs = Math.abs(b); + if (abs < BASE) { + return new BigInteger(multiplySmall(a, abs), sign); + } + b = smallToArray(abs); + } + if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes + return new BigInteger(multiplyKaratsuba(a, b), sign); + return new BigInteger(multiplyLong(a, b), sign); + }; + + BigInteger.prototype.times = BigInteger.prototype.multiply; + + function multiplySmallAndArray(a, b, sign) { // a >= 0 + if (a < BASE) { + return new BigInteger(multiplySmall(b, a), sign); + } + return new BigInteger(multiplyLong(b, smallToArray(a)), sign); + } + SmallInteger.prototype._multiplyBySmall = function (a) { + if (isPrecise(a.value * this.value)) { + return new SmallInteger(a.value * this.value); + } + return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign); + }; + BigInteger.prototype._multiplyBySmall = function (a) { + if (a.value === 0) return Integer[0]; + if (a.value === 1) return this; + if (a.value === -1) return this.negate(); + return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign); + }; + SmallInteger.prototype.multiply = function (v) { + return parseValue(v)._multiplyBySmall(this); + }; + SmallInteger.prototype.times = SmallInteger.prototype.multiply; + + function square(a) { + //console.assert(2 * BASE * BASE < MAX_INT); + var l = a.length, + r = createArray(l + l), + base = BASE, + product, carry, i, a_i, a_j; + for (i = 0; i < l; i++) { + a_i = a[i]; + carry = 0 - a_i * a_i; + for (var j = i; j < l; j++) { + a_j = a[j]; + product = 2 * (a_i * a_j) + r[i + j] + carry; + carry = Math.floor(product / base); + r[i + j] = product - carry * base; + } + r[i + l] = carry; + } + trim(r); + return r; + } + + BigInteger.prototype.square = function () { + return new BigInteger(square(this.value), false); + }; + + SmallInteger.prototype.square = function () { + var value = this.value * this.value; + if (isPrecise(value)) return new SmallInteger(value); + return new BigInteger(square(smallToArray(Math.abs(this.value))), false); + }; + + function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes. + var a_l = a.length, + b_l = b.length, + base = BASE, + result = createArray(b.length), + divisorMostSignificantDigit = b[b_l - 1], + // normalization + lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)), + remainder = multiplySmall(a, lambda), + divisor = multiplySmall(b, lambda), + quotientDigit, shift, carry, borrow, i, l, q; + if (remainder.length <= a_l) remainder.push(0); + divisor.push(0); + divisorMostSignificantDigit = divisor[b_l - 1]; + for (shift = a_l - b_l; shift >= 0; shift--) { + quotientDigit = base - 1; + if (remainder[shift + b_l] !== divisorMostSignificantDigit) { + quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit); + } + // quotientDigit <= base - 1 + carry = 0; + borrow = 0; + l = divisor.length; + for (i = 0; i < l; i++) { + carry += quotientDigit * divisor[i]; + q = Math.floor(carry / base); + borrow += remainder[shift + i] - (carry - q * base); + carry = q; + if (borrow < 0) { + remainder[shift + i] = borrow + base; + borrow = -1; + } else { + remainder[shift + i] = borrow; + borrow = 0; + } + } + while (borrow !== 0) { + quotientDigit -= 1; + carry = 0; + for (i = 0; i < l; i++) { + carry += remainder[shift + i] - base + divisor[i]; + if (carry < 0) { + remainder[shift + i] = carry + base; + carry = 0; + } else { + remainder[shift + i] = carry; + carry = 1; + } + } + borrow += carry; + } + result[shift] = quotientDigit; + } + // denormalization + remainder = divModSmall(remainder, lambda)[0]; + return [arrayToSmall(result), arrayToSmall(remainder)]; + } + + function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/ + // Performs faster than divMod1 on larger input sizes. + var a_l = a.length, + b_l = b.length, + result = [], + part = [], + base = BASE, + guess, xlen, highx, highy, check; + while (a_l) { + part.unshift(a[--a_l]); + trim(part); + if (compareAbs(part, b) < 0) { + result.push(0); + continue; + } + xlen = part.length; + highx = part[xlen - 1] * base + part[xlen - 2]; + highy = b[b_l - 1] * base + b[b_l - 2]; + if (xlen > b_l) { + highx = (highx + 1) * base; + } + guess = Math.ceil(highx / highy); + do { + check = multiplySmall(b, guess); + if (compareAbs(check, part) <= 0) break; + guess--; + } while (guess); + result.push(guess); + part = subtract(part, check); + } + result.reverse(); + return [arrayToSmall(result), arrayToSmall(part)]; + } + + function divModSmall(value, lambda) { + var length = value.length, + quotient = createArray(length), + base = BASE, + i, q, remainder, divisor; + remainder = 0; + for (i = length - 1; i >= 0; --i) { + divisor = remainder * base + value[i]; + q = truncate(divisor / lambda); + remainder = divisor - q * lambda; + quotient[i] = q | 0; + } + return [quotient, remainder | 0]; + } + + function divModAny(self, v) { + var value, n = parseValue(v); + var a = self.value, b = n.value; + var quotient; + if (b === 0) throw new Error("Cannot divide by zero"); + if (self.isSmall) { + if (n.isSmall) { + return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)]; + } + return [Integer[0], self]; + } + if (n.isSmall) { + if (b === 1) return [self, Integer[0]]; + if (b == -1) return [self.negate(), Integer[0]]; + var abs = Math.abs(b); + if (abs < BASE) { + value = divModSmall(a, abs); + quotient = arrayToSmall(value[0]); + var remainder = value[1]; + if (self.sign) remainder = -remainder; + if (typeof quotient === "number") { + if (self.sign !== n.sign) quotient = -quotient; + return [new SmallInteger(quotient), new SmallInteger(remainder)]; + } + return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)]; + } + b = smallToArray(abs); + } + var comparison = compareAbs(a, b); + if (comparison === -1) return [Integer[0], self]; + if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]]; + + // divMod1 is faster on smaller input sizes + if (a.length + b.length <= 200) + value = divMod1(a, b); + else value = divMod2(a, b); + + quotient = value[0]; + var qSign = self.sign !== n.sign, + mod = value[1], + mSign = self.sign; + if (typeof quotient === "number") { + if (qSign) quotient = -quotient; + quotient = new SmallInteger(quotient); + } else quotient = new BigInteger(quotient, qSign); + if (typeof mod === "number") { + if (mSign) mod = -mod; + mod = new SmallInteger(mod); + } else mod = new BigInteger(mod, mSign); + return [quotient, mod]; + } + + BigInteger.prototype.divmod = function (v) { + var result = divModAny(this, v); + return { + quotient: result[0], + remainder: result[1] + }; + }; + SmallInteger.prototype.divmod = BigInteger.prototype.divmod; + + BigInteger.prototype.divide = function (v) { + return divModAny(this, v)[0]; + }; + SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide; + + BigInteger.prototype.mod = function (v) { + return divModAny(this, v)[1]; + }; + SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod; + + BigInteger.prototype.pow = function (v) { + var n = parseValue(v), + a = this.value, + b = n.value, + value, x, y; + if (b === 0) return Integer[1]; + if (a === 0) return Integer[0]; + if (a === 1) return Integer[1]; + if (a === -1) return n.isEven() ? Integer[1] : Integer[-1]; + if (n.sign) { + return Integer[0]; + } + if (!n.isSmall) throw new Error("The exponent " + n.toString() + " is too large."); + if (this.isSmall) { + if (isPrecise(value = Math.pow(a, b))) + return new SmallInteger(truncate(value)); + } + x = this; + y = Integer[1]; + while (true) { + if (b & 1 === 1) { + y = y.times(x); + --b; + } + if (b === 0) break; + b /= 2; + x = x.square(); + } + return y; + }; + SmallInteger.prototype.pow = BigInteger.prototype.pow; + + BigInteger.prototype.modPow = function (exp, mod) { + exp = parseValue(exp); + mod = parseValue(mod); + if (mod.isZero()) throw new Error("Cannot take modPow with modulus 0"); + var r = Integer[1], + base = this.mod(mod); + while (exp.isPositive()) { + if (base.isZero()) return Integer[0]; + if (exp.isOdd()) r = r.multiply(base).mod(mod); + exp = exp.divide(2); + base = base.square().mod(mod); + } + return r; + }; + SmallInteger.prototype.modPow = BigInteger.prototype.modPow; + + function compareAbs(a, b) { + if (a.length !== b.length) { + return a.length > b.length ? 1 : -1; + } + for (var i = a.length - 1; i >= 0; i--) { + if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1; + } + return 0; + } + + BigInteger.prototype.compareAbs = function (v) { + var n = parseValue(v), + a = this.value, + b = n.value; + if (n.isSmall) return 1; + return compareAbs(a, b); + }; + SmallInteger.prototype.compareAbs = function (v) { + var n = parseValue(v), + a = Math.abs(this.value), + b = n.value; + if (n.isSmall) { + b = Math.abs(b); + return a === b ? 0 : a > b ? 1 : -1; + } + return -1; + }; + + BigInteger.prototype.compare = function (v) { + // See discussion about comparison with Infinity: + // https://github.com/peterolson/BigInteger.js/issues/61 + if (v === Infinity) { + return -1; + } + if (v === -Infinity) { + return 1; + } + + var n = parseValue(v), + a = this.value, + b = n.value; + if (this.sign !== n.sign) { + return n.sign ? 1 : -1; + } + if (n.isSmall) { + return this.sign ? -1 : 1; + } + return compareAbs(a, b) * (this.sign ? -1 : 1); + }; + BigInteger.prototype.compareTo = BigInteger.prototype.compare; + + SmallInteger.prototype.compare = function (v) { + if (v === Infinity) { + return -1; + } + if (v === -Infinity) { + return 1; + } + + var n = parseValue(v), + a = this.value, + b = n.value; + if (n.isSmall) { + return a == b ? 0 : a > b ? 1 : -1; + } + if (a < 0 !== n.sign) { + return a < 0 ? -1 : 1; + } + return a < 0 ? 1 : -1; + }; + SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; + + BigInteger.prototype.equals = function (v) { + return this.compare(v) === 0; + }; + SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals; + + BigInteger.prototype.notEquals = function (v) { + return this.compare(v) !== 0; + }; + SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals; + + BigInteger.prototype.greater = function (v) { + return this.compare(v) > 0; + }; + SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater; + + BigInteger.prototype.lesser = function (v) { + return this.compare(v) < 0; + }; + SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser; + + BigInteger.prototype.greaterOrEquals = function (v) { + return this.compare(v) >= 0; + }; + SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals; + + BigInteger.prototype.lesserOrEquals = function (v) { + return this.compare(v) <= 0; + }; + SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals; + + BigInteger.prototype.isEven = function () { + return (this.value[0] & 1) === 0; + }; + SmallInteger.prototype.isEven = function () { + return (this.value & 1) === 0; + }; + + BigInteger.prototype.isOdd = function () { + return (this.value[0] & 1) === 1; + }; + SmallInteger.prototype.isOdd = function () { + return (this.value & 1) === 1; + }; + + BigInteger.prototype.isPositive = function () { + return !this.sign; + }; + SmallInteger.prototype.isPositive = function () { + return this.value > 0; + }; + + BigInteger.prototype.isNegative = function () { + return this.sign; + }; + SmallInteger.prototype.isNegative = function () { + return this.value < 0; + }; + + BigInteger.prototype.isUnit = function () { + return false; + }; + SmallInteger.prototype.isUnit = function () { + return Math.abs(this.value) === 1; + }; + + BigInteger.prototype.isZero = function () { + return false; + }; + SmallInteger.prototype.isZero = function () { + return this.value === 0; + }; + BigInteger.prototype.isDivisibleBy = function (v) { + var n = parseValue(v); + var value = n.value; + if (value === 0) return false; + if (value === 1) return true; + if (value === 2) return this.isEven(); + return this.mod(n).equals(Integer[0]); + }; + SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy; + + function isBasicPrime(v) { + var n = v.abs(); + if (n.isUnit()) return false; + if (n.equals(2) || n.equals(3) || n.equals(5)) return true; + if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false; + if (n.lesser(49)) return true; + // we don't know if it's prime: let the other functions figure it out + } + + BigInteger.prototype.isPrime = function () { + var isPrime = isBasicPrime(this); + if (isPrime !== undefined) return isPrime; + var n = this.abs(), + nPrev = n.prev(); + var a = [2, 325, 9375, 28178, 450775, 9780504, 1795265022], + b = nPrev, + d, t, i, x; + while (b.isEven()) b = b.divide(2); + for (i = 0; i < a.length; i++) { + if (n.lesser(a[i])) continue; + x = bigInt(a[i]).modPow(b, n); + if (x.equals(Integer[1]) || x.equals(nPrev)) continue; + for (t = true, d = b; t && d.lesser(nPrev); d = d.multiply(2)) { + x = x.square().mod(n); + if (x.equals(nPrev)) t = false; + } + if (t) return false; + } + return true; + }; + SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime; + + BigInteger.prototype.isProbablePrime = function (iterations) { + var isPrime = isBasicPrime(this); + if (isPrime !== undefined) return isPrime; + var n = this.abs(); + var t = iterations === undefined ? 5 : iterations; + // use the Fermat primality test + for (var i = 0; i < t; i++) { + var a = bigInt.randBetween(2, n.minus(2)); + if (!a.modPow(n.prev(), n).isUnit()) return false; // definitely composite + } + return true; // large chance of being prime + }; + SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime; + + BigInteger.prototype.modInv = function (n) { + var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR; + while (!newR.equals(bigInt.zero)) { + q = r.divide(newR); + lastT = t; + lastR = r; + t = newT; + r = newR; + newT = lastT.subtract(q.multiply(newT)); + newR = lastR.subtract(q.multiply(newR)); + } + if (!r.equals(1)) throw new Error(this.toString() + " and " + n.toString() + " are not co-prime"); + if (t.compare(0) === -1) { + t = t.add(n); + } + if (this.isNegative()) { + return t.negate(); + } + return t; + }; + + SmallInteger.prototype.modInv = BigInteger.prototype.modInv; + + BigInteger.prototype.next = function () { + var value = this.value; + if (this.sign) { + return subtractSmall(value, 1, this.sign); + } + return new BigInteger(addSmall(value, 1), this.sign); + }; + SmallInteger.prototype.next = function () { + var value = this.value; + if (value + 1 < MAX_INT) return new SmallInteger(value + 1); + return new BigInteger(MAX_INT_ARR, false); + }; + + BigInteger.prototype.prev = function () { + var value = this.value; + if (this.sign) { + return new BigInteger(addSmall(value, 1), true); + } + return subtractSmall(value, 1, this.sign); + }; + SmallInteger.prototype.prev = function () { + var value = this.value; + if (value - 1 > -MAX_INT) return new SmallInteger(value - 1); + return new BigInteger(MAX_INT_ARR, true); + }; + + var powersOfTwo = [1]; + while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); + var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1]; + + function shift_isSmall(n) { + return ((typeof n === "number" || typeof n === "string") && +Math.abs(n) <= BASE) || + (n instanceof BigInteger && n.value.length <= 1); + } + + BigInteger.prototype.shiftLeft = function (n) { + if (!shift_isSmall(n)) { + throw new Error(String(n) + " is too large for shifting."); + } + n = +n; + if (n < 0) return this.shiftRight(-n); + var result = this; + if (result.isZero()) return result; + while (n >= powers2Length) { + result = result.multiply(highestPower2); + n -= powers2Length - 1; + } + return result.multiply(powersOfTwo[n]); + }; + SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft; + + BigInteger.prototype.shiftRight = function (n) { + var remQuo; + if (!shift_isSmall(n)) { + throw new Error(String(n) + " is too large for shifting."); + } + n = +n; + if (n < 0) return this.shiftLeft(-n); + var result = this; + while (n >= powers2Length) { + if (result.isZero() || (result.isNegative() && result.isUnit())) return result; + remQuo = divModAny(result, highestPower2); + result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; + n -= powers2Length - 1; + } + remQuo = divModAny(result, powersOfTwo[n]); + return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; + }; + SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight; + + function bitwise(x, y, fn) { + y = parseValue(y); + var xSign = x.isNegative(), ySign = y.isNegative(); + var xRem = xSign ? x.not() : x, + yRem = ySign ? y.not() : y; + var xDigit = 0, yDigit = 0; + var xDivMod = null, yDivMod = null; + var result = []; + while (!xRem.isZero() || !yRem.isZero()) { + xDivMod = divModAny(xRem, highestPower2); + xDigit = xDivMod[1].toJSNumber(); + if (xSign) { + xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers + } + + yDivMod = divModAny(yRem, highestPower2); + yDigit = yDivMod[1].toJSNumber(); + if (ySign) { + yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers + } + + xRem = xDivMod[0]; + yRem = yDivMod[0]; + result.push(fn(xDigit, yDigit)); + } + var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0); + for (var i = result.length - 1; i >= 0; i -= 1) { + sum = sum.multiply(highestPower2).add(bigInt(result[i])); + } + return sum; + } + + BigInteger.prototype.not = function () { + return this.negate().prev(); + }; + SmallInteger.prototype.not = BigInteger.prototype.not; + + BigInteger.prototype.and = function (n) { + return bitwise(this, n, function (a, b) { return a & b; }); + }; + SmallInteger.prototype.and = BigInteger.prototype.and; + + BigInteger.prototype.or = function (n) { + return bitwise(this, n, function (a, b) { return a | b; }); + }; + SmallInteger.prototype.or = BigInteger.prototype.or; + + BigInteger.prototype.xor = function (n) { + return bitwise(this, n, function (a, b) { return a ^ b; }); + }; + SmallInteger.prototype.xor = BigInteger.prototype.xor; + + var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I; + function roughLOB(n) { // get lowestOneBit (rough) + // SmallInteger: return Min(lowestOneBit(n), 1 << 30) + // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7] + var v = n.value, x = typeof v === "number" ? v | LOBMASK_I : v[0] + v[1] * BASE | LOBMASK_BI; + return x & -x; + } + + function integerLogarithm(value, base) { + if (base.compareTo(value) <= 0) { + var tmp = integerLogarithm(value, base.square(base)); + var p = tmp.p; + var e = tmp.e; + var t = p.multiply(base); + return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 }; + } + return { p: bigInt(1), e: 0 }; + } + + BigInteger.prototype.bitLength = function () { + var n = this; + if (n.compareTo(bigInt(0)) < 0) { + n = n.negate().subtract(bigInt(1)); + } + if (n.compareTo(bigInt(0)) === 0) { + return bigInt(0); + } + return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1)); + } + SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength; + + function max(a, b) { + a = parseValue(a); + b = parseValue(b); + return a.greater(b) ? a : b; + } + function min(a, b) { + a = parseValue(a); + b = parseValue(b); + return a.lesser(b) ? a : b; + } + function gcd(a, b) { + a = parseValue(a).abs(); + b = parseValue(b).abs(); + if (a.equals(b)) return a; + if (a.isZero()) return b; + if (b.isZero()) return a; + var c = Integer[1], d, t; + while (a.isEven() && b.isEven()) { + d = Math.min(roughLOB(a), roughLOB(b)); + a = a.divide(d); + b = b.divide(d); + c = c.multiply(d); + } + while (a.isEven()) { + a = a.divide(roughLOB(a)); + } + do { + while (b.isEven()) { + b = b.divide(roughLOB(b)); + } + if (a.greater(b)) { + t = b; b = a; a = t; + } + b = b.subtract(a); + } while (!b.isZero()); + return c.isUnit() ? a : a.multiply(c); + } + function lcm(a, b) { + a = parseValue(a).abs(); + b = parseValue(b).abs(); + return a.divide(gcd(a, b)).multiply(b); + } + function randBetween(a, b) { + a = parseValue(a); + b = parseValue(b); + var low = min(a, b), high = max(a, b); + var range = high.subtract(low).add(1); + if (range.isSmall) return low.add(Math.floor(Math.random() * range)); + var length = range.value.length - 1; + var result = [], restricted = true; + for (var i = length; i >= 0; i--) { + var top = restricted ? range.value[i] : BASE; + var digit = truncate(Math.random() * top); + result.unshift(digit); + if (digit < top) restricted = false; + } + result = arrayToSmall(result); + return low.add(typeof result === "number" ? new SmallInteger(result) : new BigInteger(result, false)); + } + var parseBase = function (text, base) { + var length = text.length; + var i; + var absBase = Math.abs(base); + for (var i = 0; i < length; i++) { + var c = text[i].toLowerCase(); + if (c === "-") continue; + if (/[a-z0-9]/.test(c)) { + if (/[0-9]/.test(c) && +c >= absBase) { + if (c === "1" && absBase === 1) continue; + throw new Error(c + " is not a valid digit in base " + base + "."); + } else if (c.charCodeAt(0) - 87 >= absBase) { + throw new Error(c + " is not a valid digit in base " + base + "."); + } + } + } + if (2 <= base && base <= 36) { + if (length <= LOG_MAX_INT / Math.log(base)) { + var result = parseInt(text, base); + if (isNaN(result)) { + throw new Error(c + " is not a valid digit in base " + base + "."); + } + return new SmallInteger(parseInt(text, base)); + } + } + base = parseValue(base); + var digits = []; + var isNegative = text[0] === "-"; + for (i = isNegative ? 1 : 0; i < text.length; i++) { + var c = text[i].toLowerCase(), + charCode = c.charCodeAt(0); + if (48 <= charCode && charCode <= 57) digits.push(parseValue(c)); + else if (97 <= charCode && charCode <= 122) digits.push(parseValue(c.charCodeAt(0) - 87)); + else if (c === "<") { + var start = i; + do { i++; } while (text[i] !== ">"); + digits.push(parseValue(text.slice(start + 1, i))); + } + else throw new Error(c + " is not a valid character"); + } + return parseBaseFromArray(digits, base, isNegative); + }; + + function parseBaseFromArray(digits, base, isNegative) { + var val = Integer[0], pow = Integer[1], i; + for (i = digits.length - 1; i >= 0; i--) { + val = val.add(digits[i].times(pow)); + pow = pow.times(base); + } + return isNegative ? val.negate() : val; + } + + function stringify(digit) { + if (digit <= 35) { + return "0123456789abcdefghijklmnopqrstuvwxyz".charAt(digit); + } + return "<" + digit + ">"; + } + + function toBase(n, base) { + base = bigInt(base); + if (base.isZero()) { + if (n.isZero()) return { value: [0], isNegative: false }; + throw new Error("Cannot convert nonzero numbers to base 0."); + } + if (base.equals(-1)) { + if (n.isZero()) return { value: [0], isNegative: false }; + if (n.isNegative()) + return { + value: [].concat.apply([], Array.apply(null, Array(-n)) + .map(Array.prototype.valueOf, [1, 0]) + ), + isNegative: false + }; + + var arr = Array.apply(null, Array(+n - 1)) + .map(Array.prototype.valueOf, [0, 1]); + arr.unshift([1]); + return { + value: [].concat.apply([], arr), + isNegative: false + }; + } + + var neg = false; + if (n.isNegative() && base.isPositive()) { + neg = true; + n = n.abs(); + } + if (base.equals(1)) { + if (n.isZero()) return { value: [0], isNegative: false }; + + return { + value: Array.apply(null, Array(+n)) + .map(Number.prototype.valueOf, 1), + isNegative: neg + }; + } + var out = []; + var left = n, divmod; + while (left.isNegative() || left.compareAbs(base) >= 0) { + divmod = left.divmod(base); + left = divmod.quotient; + var digit = divmod.remainder; + if (digit.isNegative()) { + digit = base.minus(digit).abs(); + left = left.next(); + } + out.push(digit.toJSNumber()); + } + out.push(left.toJSNumber()); + return { value: out.reverse(), isNegative: neg }; + } + + function toBaseString(n, base) { + var arr = toBase(n, base); + return (arr.isNegative ? "-" : "") + arr.value.map(stringify).join(''); + } + + BigInteger.prototype.toArray = function (radix) { + return toBase(this, radix); + }; + + SmallInteger.prototype.toArray = function (radix) { + return toBase(this, radix); + }; + + BigInteger.prototype.toString = function (radix) { + if (radix === undefined) radix = 10; + if (radix !== 10) return toBaseString(this, radix); + var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit; + while (--l >= 0) { + digit = String(v[l]); + str += zeros.slice(digit.length) + digit; + } + var sign = this.sign ? "-" : ""; + return sign + str; + }; + + SmallInteger.prototype.toString = function (radix) { + if (radix === undefined) radix = 10; + if (radix != 10) return toBaseString(this, radix); + return String(this.value); + }; + BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); } + + BigInteger.prototype.valueOf = function () { + return parseInt(this.toString(), 10); + }; + BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; + + SmallInteger.prototype.valueOf = function () { + return this.value; + }; + SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; + + function parseStringValue(v) { + if (isPrecise(+v)) { + var x = +v; + if (x === truncate(x)) + return new SmallInteger(x); + throw new Error("Invalid integer: " + v); + } + var sign = v[0] === "-"; + if (sign) v = v.slice(1); + var split = v.split(/e/i); + if (split.length > 2) throw new Error("Invalid integer: " + split.join("e")); + if (split.length === 2) { + var exp = split[1]; + if (exp[0] === "+") exp = exp.slice(1); + exp = +exp; + if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent."); + var text = split[0]; + var decimalPlace = text.indexOf("."); + if (decimalPlace >= 0) { + exp -= text.length - decimalPlace - 1; + text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1); + } + if (exp < 0) throw new Error("Cannot include negative exponent part for integers"); + text += (new Array(exp + 1)).join("0"); + v = text; + } + var isValid = /^([0-9][0-9]*)$/.test(v); + if (!isValid) throw new Error("Invalid integer: " + v); + var r = [], max = v.length, l = LOG_BASE, min = max - l; + while (max > 0) { + r.push(+v.slice(min, max)); + min -= l; + if (min < 0) min = 0; + max -= l; + } + trim(r); + return new BigInteger(r, sign); + } + + function parseNumberValue(v) { + if (isPrecise(v)) { + if (v !== truncate(v)) throw new Error(v + " is not an integer."); + return new SmallInteger(v); + } + return parseStringValue(v.toString()); + } + + function parseValue(v) { + if (typeof v === "number") { + return parseNumberValue(v); + } + if (typeof v === "string") { + return parseStringValue(v); + } + return v; + } + // Pre-define numbers in range [-999,999] + for (var i = 0; i < 1000; i++) { + Integer[i] = new SmallInteger(i); + if (i > 0) Integer[-i] = new SmallInteger(-i); + } + // Backwards compatibility + Integer.one = Integer[1]; + Integer.zero = Integer[0]; + Integer.minusOne = Integer[-1]; + Integer.max = max; + Integer.min = min; + Integer.gcd = gcd; + Integer.lcm = lcm; + Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger; }; + Integer.randBetween = randBetween; + + Integer.fromArray = function (digits, base, isNegative) { + return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative); + }; + + return Integer; +})(); + +// Node.js check +if (typeof module !== "undefined" && module.hasOwnProperty("exports")) { + module.exports = bigInt; +} + +//amd check +if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return bigInt; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(92)(module))) + +/***/ }), +/* 32 */ +/***/ (function(module, exports) { + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + + +/***/ }), +/* 33 */ +/***/ (function(module, exports) { + +module.exports = {"OP_FALSE":0,"OP_0":0,"OP_PUSHDATA1":76,"OP_PUSHDATA2":77,"OP_PUSHDATA4":78,"OP_1NEGATE":79,"OP_RESERVED":80,"OP_TRUE":81,"OP_1":81,"OP_2":82,"OP_3":83,"OP_4":84,"OP_5":85,"OP_6":86,"OP_7":87,"OP_8":88,"OP_9":89,"OP_10":90,"OP_11":91,"OP_12":92,"OP_13":93,"OP_14":94,"OP_15":95,"OP_16":96,"OP_NOP":97,"OP_VER":98,"OP_IF":99,"OP_NOTIF":100,"OP_VERIF":101,"OP_VERNOTIF":102,"OP_ELSE":103,"OP_ENDIF":104,"OP_VERIFY":105,"OP_RETURN":106,"OP_TOALTSTACK":107,"OP_FROMALTSTACK":108,"OP_2DROP":109,"OP_2DUP":110,"OP_3DUP":111,"OP_2OVER":112,"OP_2ROT":113,"OP_2SWAP":114,"OP_IFDUP":115,"OP_DEPTH":116,"OP_DROP":117,"OP_DUP":118,"OP_NIP":119,"OP_OVER":120,"OP_PICK":121,"OP_ROLL":122,"OP_ROT":123,"OP_SWAP":124,"OP_TUCK":125,"OP_CAT":126,"OP_SUBSTR":127,"OP_LEFT":128,"OP_RIGHT":129,"OP_SIZE":130,"OP_INVERT":131,"OP_AND":132,"OP_OR":133,"OP_XOR":134,"OP_EQUAL":135,"OP_EQUALVERIFY":136,"OP_RESERVED1":137,"OP_RESERVED2":138,"OP_1ADD":139,"OP_1SUB":140,"OP_2MUL":141,"OP_2DIV":142,"OP_NEGATE":143,"OP_ABS":144,"OP_NOT":145,"OP_0NOTEQUAL":146,"OP_ADD":147,"OP_SUB":148,"OP_MUL":149,"OP_DIV":150,"OP_MOD":151,"OP_LSHIFT":152,"OP_RSHIFT":153,"OP_BOOLAND":154,"OP_BOOLOR":155,"OP_NUMEQUAL":156,"OP_NUMEQUALVERIFY":157,"OP_NUMNOTEQUAL":158,"OP_LESSTHAN":159,"OP_GREATERTHAN":160,"OP_LESSTHANOREQUAL":161,"OP_GREATERTHANOREQUAL":162,"OP_MIN":163,"OP_MAX":164,"OP_WITHIN":165,"OP_RIPEMD160":166,"OP_SHA1":167,"OP_SHA256":168,"OP_HASH160":169,"OP_HASH256":170,"OP_CODESEPARATOR":171,"OP_CHECKSIG":172,"OP_CHECKSIGVERIFY":173,"OP_CHECKMULTISIG":174,"OP_CHECKMULTISIGVERIFY":175,"OP_NOP1":176,"OP_NOP2":177,"OP_CHECKLOCKTIMEVERIFY":177,"OP_NOP3":178,"OP_CHECKSEQUENCEVERIFY":178,"OP_NOP4":179,"OP_NOP5":180,"OP_NOP6":181,"OP_NOP7":182,"OP_NOP8":183,"OP_NOP9":184,"OP_NOP10":185,"OP_PUBKEYHASH":253,"OP_PUBKEY":254,"OP_INVALIDOPCODE":255} + +/***/ }), +/* 34 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +const NODES_CONSENSUS_TYPE = { + + NODE_CONSENSUS_PEER: 0, + + NODE_CONSENSUS_SERVER: 1, //simple server + NODE_CONSENSUS_SERVER_FOR_POOL: 2, //server for pool + NODE_CONSENSUS_SERVER_FOR_MINER: 3, //server for miner pool + + NODE_CONSENSUS_POOL: 4, //consensus for a POOL + NODE_CONSENSUS_MINER_POOL: 5, //consensus for a MINER + +}; + +/* harmony default export */ __webpack_exports__["a"] = (NODES_CONSENSUS_TYPE); + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var elliptic = exports; + +elliptic.version = __webpack_require__(620).version; +elliptic.utils = __webpack_require__(621); +elliptic.rand = __webpack_require__(283); +elliptic.curve = __webpack_require__(138); +elliptic.curves = __webpack_require__(626); + +// Protocols +elliptic.ec = __webpack_require__(634); +elliptic.eddsa = __webpack_require__(638); + + +/***/ }), +/* 36 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +let global = {}; + +global.TERMINATED = false; +global.MINIBLOCKCHAIN_LIGHT_CONFIGURATION_SAVED = true; +global.MINIBLOCKCHAIN_LIGHT_SAVED = true; +global.MINIBLOCKCHAIN_ADVANCED_SAVED = true; +global.MINIBLOCKCHAIN_SAVED = true; +global.POOL_SAVED = true; +global.INTERFACE_BLOCKCHAIN_SAVED = true; +global.INTERFACE_BLOCKCHAIN_LOADING = false; +global.SEMAPHORE_PROCESS_DONE = true; + +/* harmony default export */ __webpack_exports__["a"] = (global); + +/***/ }), +/* 37 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +const CONNECTION_TYPE = { + + CONNECTION_WEBRTC: 0, + CONNECTION_CLIENT_SOCKET: 1, + CONNECTION_SERVER_SOCKET: 2, + +}; + +/* harmony default export */ __webpack_exports__["a"] = (CONNECTION_TYPE); + +/***/ }), +/* 38 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(19); +var createDesc = __webpack_require__(73); +module.exports = __webpack_require__(18) ? function (object, key, value) { + return dP.f(object, key, createDesc(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + + +/***/ }), +/* 39 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(10); +var hide = __webpack_require__(38); +var has = __webpack_require__(42); +var SRC = __webpack_require__(74)('src'); +var TO_STRING = 'toString'; +var $toString = Function[TO_STRING]; +var TPL = ('' + $toString).split(TO_STRING); + +__webpack_require__(50).inspectSource = function (it) { + return $toString.call(it); +}; + +(module.exports = function (O, key, val, safe) { + var isFunction = typeof val == 'function'; + if (isFunction) has(val, 'name') || hide(val, 'name', key); + if (O[key] === val) return; + if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if (O === global) { + O[key] = val; + } else if (!safe) { + delete O[key]; + hide(O, key, val); + } else if (O[key]) { + O[key] = val; + } else { + hide(O, key, val); + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString() { + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); + + +/***/ }), +/* 40 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(0); +var fails = __webpack_require__(13); +var defined = __webpack_require__(55); +var quot = /"/g; +// B.2.3.2.1 CreateHTML(string, tag, attribute, value) +var createHTML = function (string, tag, attribute, value) { + var S = String(defined(string)); + var p1 = '<' + tag; + if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; + return p1 + '>' + S + ''; +}; +module.exports = function (NAME, exec) { + var O = {}; + O[NAME] = exec(createHTML); + $export($export.P + $export.F * fails(function () { + var test = ''[NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }), 'String', O); +}; + + +/***/ }), +/* 41 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_utils_BufferExtended__ = __webpack_require__(3); + + + +class BlockchainGenesis{ + + constructor(){ + + this.hashPrev = new Buffer("731D46C131EB6DD4667A96BDC27BAF9223BEC72C3468DFB6BA52C460E76423A4", "hex"); //main net + + this.timeStamp = 0; + this.timeStampOffset = 1524742312; //main net + //this.timeStampOffset = 1529344475; //test net + + this.difficultyTarget = new Buffer ( "00029112ca1bbdcafac231b39a23dc4da786eff8147c4e72b9807785afee48bb", "hex" ); //hard difficulty + + this.address = __WEBPACK_IMPORTED_MODULE_1_common_utils_BufferExtended__["a" /* default */].fromBase("WEBD$gBzsiV+$FARK8qSGqs09V6AEDBi#@fP6n7$"); // genesis address + } + + validateGenesis(block){ + + if ( block.timeStamp.length !== this.timeStamp.length ) + throw {message: "Timestamp doesn't match", timestamp: block.timeStamp}; + + if ( block.timeStamp > 0x000FFFFF) + throw {message: "Timestamp is too old ", timestamp: block.timeStamp}; + + if (block.timeStamp < 0) + throw {message: "Timestamp is invalid", timeStamp: block.timeStamp} + } + + getLevel(){ + + return 0; + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new BlockchainGenesis()); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 42 */ +/***/ (function(module, exports) { + +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function (it, key) { + return hasOwnProperty.call(it, key); +}; + + +/***/ }), +/* 43 */ +/***/ (function(module, exports, __webpack_require__) { + +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = __webpack_require__(99); +var defined = __webpack_require__(55); +module.exports = function (it) { + return IObject(defined(it)); +}; + + +/***/ }), +/* 44 */ +/***/ (function(module, exports, __webpack_require__) { + +var pIE = __webpack_require__(100); +var createDesc = __webpack_require__(73); +var toIObject = __webpack_require__(43); +var toPrimitive = __webpack_require__(54); +var has = __webpack_require__(42); +var IE8_DOM_DEFINE = __webpack_require__(223); +var gOPD = Object.getOwnPropertyDescriptor; + +exports.f = __webpack_require__(18) ? gOPD : function getOwnPropertyDescriptor(O, P) { + O = toIObject(O); + P = toPrimitive(P, true); + if (IE8_DOM_DEFINE) try { + return gOPD(O, P); + } catch (e) { /* empty */ } + if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]); +}; + + +/***/ }), +/* 45 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = __webpack_require__(42); +var toObject = __webpack_require__(24); +var IE_PROTO = __webpack_require__(150)('IE_PROTO'); +var ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function (O) { + O = toObject(O); + if (has(O, IE_PROTO)) return O[IE_PROTO]; + if (typeof O.constructor == 'function' && O instanceof O.constructor) { + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; + + +/***/ }), +/* 46 */ +/***/ (function(module, exports) { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.prototype.listenerCount = function(type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) + return 1; + else if (evlistener) + return evlistener.length; + } + return 0; +}; + +EventEmitter.listenerCount = function(emitter, type) { + return emitter.listenerCount(type); +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + + +/***/ }), +/* 47 */ +/***/ (function(module, exports) { + +module.exports = assert; + +function assert(val, msg) { + if (!val) + throw new Error(msg || 'Assertion failed'); +} + +assert.equal = function assertEqual(l, r, msg) { + if (l != r) + throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r)); +}; + + +/***/ }), +/* 48 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_utils_coins_WebDollar_Coins__ = __webpack_require__(29); + + +class BlockchainMiningReward{ + + /** + * Returns the entire distribution in WEBD sub-units including GENESIS(~9.9%) + */ + getSumReward(height){ + + if (typeof height !== "number") + throw {message: 'height is not defined'}; + + let marketSupply = 4156801128; + let minedDistributionAfterCycle = [0, + 18921600000, 28382400000, 33112800000, 35478000000, 36660600000, 37251900000, + 37547550000, 37695375000, 37769287500, 37806243750, 37824721875, 37833960938, + 37838580469, 37840890234, 37842045117, 37842622559, 37842911279, 37843055640, + 37843127820, 37843163910, 37843181955, 37843190977, 37843195489, 37843197744, + 37843198872 + ]; + + let blocksPerCycle = 3153600; + let cycle = Math.trunc( height / blocksPerCycle ); + + let sum = 0; + + + if (height <= 40) + for (let i = 0; i <= height; i++) + sum += this.getReward(i); + else { + sum = __WEBPACK_IMPORTED_MODULE_0_common_utils_coins_WebDollar_Coins__["a" /* default */].WEBD * (marketSupply + minedDistributionAfterCycle[cycle]) + + ( this.getReward(height) * (height % blocksPerCycle) ); + + if (height <= blocksPerCycle) + sum -= 40 * this.getReward(height); + } + + return sum; + } + + /** + * Returns the block[height]'s reward in WEBD sub-units + */ + getReward(height){ + + if (typeof height !== "number") + throw {message: 'height is not defined'}; + + let blocksPerCycle = 3153600; + + + if (height <= 40) { + + //return WebDollarCoins.WEBD * Math.trunc( 1949770302 / Math.pow(1.01645589, 41.5 * height - height * height / 2 - 41) ); + //return WebDollarCoins.WEBD * Math.trunc( 1867487789 / Math.pow(1.01554, 41.5 * height - height * height / 2 - 41) ); + + let v = [1, 1867487789, 1007804769, 552321669, 307400655, 173745886, 99728963, 58133318, + 34413271, 20688253, 12630447, 7830882, 4930598, 3152722, 2047239, 1350046, 904119, + 614893, 424689, 297878, 212180, 153485, 112752, 84116, 63728, 49032, 38311, 30400, + 24497, 20047, 16660, 14061, 12051, 10490, 9272, 8323, 7588, 7025, 6604, 6306, 6113]; + + return v[height] * __WEBPACK_IMPORTED_MODULE_0_common_utils_coins_WebDollar_Coins__["a" /* default */].WEBD; + } + else { + + let cycleNumber = Math.trunc( height / blocksPerCycle ); + let reward = __WEBPACK_IMPORTED_MODULE_0_common_utils_coins_WebDollar_Coins__["a" /* default */].WEBD * 6000 / (1 << cycleNumber); + + let smallestReward = 1; + + if (reward < smallestReward) + reward = smallestReward; + + return reward; + } + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new BlockchainMiningReward()); + +/***/ }), +/* 49 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(317); +var isBuffer = __webpack_require__(720); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object' && !isArray(obj)) { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (typeof result[key] === 'object' && typeof val === 'object') { + result[key] = merge(result[key], val); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim +}; + + +/***/ }), +/* 50 */ +/***/ (function(module, exports) { + +var core = module.exports = { version: '2.5.7' }; +if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef + + +/***/ }), +/* 51 */ +/***/ (function(module, exports, __webpack_require__) { + +// optional / simple context binding +var aFunction = __webpack_require__(30); +module.exports = function (fn, that, length) { + aFunction(fn); + if (that === undefined) return fn; + switch (length) { + case 1: return function (a) { + return fn.call(that, a); + }; + case 2: return function (a, b) { + return fn.call(that, a, b); + }; + case 3: return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + return function (/* ...args */) { + return fn.apply(that, arguments); + }; +}; + + +/***/ }), +/* 52 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = function (it) { + return toString.call(it).slice(8, -1); +}; + + +/***/ }), +/* 53 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var fails = __webpack_require__(13); + +module.exports = function (method, arg) { + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call + arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null); + }); +}; + + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = __webpack_require__(14); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function (it, S) { + if (!isObject(it)) return it; + var fn, val; + if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val; + if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + + +/***/ }), +/* 55 */ +/***/ (function(module, exports) { + +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function (it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; + + +/***/ }), +/* 56 */ +/***/ (function(module, exports) { + +// 7.1.4 ToInteger +var ceil = Math.ceil; +var floor = Math.floor; +module.exports = function (it) { + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; + + +/***/ }), +/* 57 */ +/***/ (function(module, exports, __webpack_require__) { + +// most Object methods by ES6 should accept primitives +var $export = __webpack_require__(0); +var core = __webpack_require__(50); +var fails = __webpack_require__(13); +module.exports = function (KEY, exec) { + var fn = (core.Object || {})[KEY] || Object[KEY]; + var exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp); +}; + + +/***/ }), +/* 58 */ +/***/ (function(module, exports, __webpack_require__) { + +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = __webpack_require__(51); +var IObject = __webpack_require__(99); +var toObject = __webpack_require__(24); +var toLength = __webpack_require__(20); +var asc = __webpack_require__(167); +module.exports = function (TYPE, $create) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + var create = $create || asc; + return function ($this, callbackfn, that) { + var O = toObject($this); + var self = IObject(O); + var f = ctx(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var val, res; + for (;length > index; index++) if (NO_HOLES || index in self) { + val = self[index]; + res = f(val, index, O); + if (TYPE) { + if (IS_MAP) result[index] = res; // map + else if (res) switch (TYPE) { + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if (IS_EVERY) return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; + + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var assert = __webpack_require__(47); +var inherits = __webpack_require__(7); + +exports.inherits = inherits; + +function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg === 'string') { + if (!enc) { + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + var hi = c >> 8; + var lo = c & 0xff; + if (hi) + res.push(hi, lo); + else + res.push(lo); + } + } else if (enc === 'hex') { + msg = msg.replace(/[^a-z0-9]+/ig, ''); + if (msg.length % 2 !== 0) + msg = '0' + msg; + for (i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } + } else { + for (i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + } + return res; +} +exports.toArray = toArray; + +function toHex(msg) { + var res = ''; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; +} +exports.toHex = toHex; + +function htonl(w) { + var res = (w >>> 24) | + ((w >>> 8) & 0xff00) | + ((w << 8) & 0xff0000) | + ((w & 0xff) << 24); + return res >>> 0; +} +exports.htonl = htonl; + +function toHex32(msg, endian) { + var res = ''; + for (var i = 0; i < msg.length; i++) { + var w = msg[i]; + if (endian === 'little') + w = htonl(w); + res += zero8(w.toString(16)); + } + return res; +} +exports.toHex32 = toHex32; + +function zero2(word) { + if (word.length === 1) + return '0' + word; + else + return word; +} +exports.zero2 = zero2; + +function zero8(word) { + if (word.length === 7) + return '0' + word; + else if (word.length === 6) + return '00' + word; + else if (word.length === 5) + return '000' + word; + else if (word.length === 4) + return '0000' + word; + else if (word.length === 3) + return '00000' + word; + else if (word.length === 2) + return '000000' + word; + else if (word.length === 1) + return '0000000' + word; + else + return word; +} +exports.zero8 = zero8; + +function join32(msg, start, end, endian) { + var len = end - start; + assert(len % 4 === 0); + var res = new Array(len / 4); + for (var i = 0, k = start; i < res.length; i++, k += 4) { + var w; + if (endian === 'big') + w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3]; + else + w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k]; + res[i] = w >>> 0; + } + return res; +} +exports.join32 = join32; + +function split32(msg, endian) { + var res = new Array(msg.length * 4); + for (var i = 0, k = 0; i < msg.length; i++, k += 4) { + var m = msg[i]; + if (endian === 'big') { + res[k] = m >>> 24; + res[k + 1] = (m >>> 16) & 0xff; + res[k + 2] = (m >>> 8) & 0xff; + res[k + 3] = m & 0xff; + } else { + res[k + 3] = m >>> 24; + res[k + 2] = (m >>> 16) & 0xff; + res[k + 1] = (m >>> 8) & 0xff; + res[k] = m & 0xff; + } + } + return res; +} +exports.split32 = split32; + +function rotr32(w, b) { + return (w >>> b) | (w << (32 - b)); +} +exports.rotr32 = rotr32; + +function rotl32(w, b) { + return (w << b) | (w >>> (32 - b)); +} +exports.rotl32 = rotl32; + +function sum32(a, b) { + return (a + b) >>> 0; +} +exports.sum32 = sum32; + +function sum32_3(a, b, c) { + return (a + b + c) >>> 0; +} +exports.sum32_3 = sum32_3; + +function sum32_4(a, b, c, d) { + return (a + b + c + d) >>> 0; +} +exports.sum32_4 = sum32_4; + +function sum32_5(a, b, c, d, e) { + return (a + b + c + d + e) >>> 0; +} +exports.sum32_5 = sum32_5; + +function sum64(buf, pos, ah, al) { + var bh = buf[pos]; + var bl = buf[pos + 1]; + + var lo = (al + bl) >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + buf[pos] = hi >>> 0; + buf[pos + 1] = lo; +} +exports.sum64 = sum64; + +function sum64_hi(ah, al, bh, bl) { + var lo = (al + bl) >>> 0; + var hi = (lo < al ? 1 : 0) + ah + bh; + return hi >>> 0; +} +exports.sum64_hi = sum64_hi; + +function sum64_lo(ah, al, bh, bl) { + var lo = al + bl; + return lo >>> 0; +} +exports.sum64_lo = sum64_lo; + +function sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) { + var carry = 0; + var lo = al; + lo = (lo + bl) >>> 0; + carry += lo < al ? 1 : 0; + lo = (lo + cl) >>> 0; + carry += lo < cl ? 1 : 0; + lo = (lo + dl) >>> 0; + carry += lo < dl ? 1 : 0; + + var hi = ah + bh + ch + dh + carry; + return hi >>> 0; +} +exports.sum64_4_hi = sum64_4_hi; + +function sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) { + var lo = al + bl + cl + dl; + return lo >>> 0; +} +exports.sum64_4_lo = sum64_4_lo; + +function sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var carry = 0; + var lo = al; + lo = (lo + bl) >>> 0; + carry += lo < al ? 1 : 0; + lo = (lo + cl) >>> 0; + carry += lo < cl ? 1 : 0; + lo = (lo + dl) >>> 0; + carry += lo < dl ? 1 : 0; + lo = (lo + el) >>> 0; + carry += lo < el ? 1 : 0; + + var hi = ah + bh + ch + dh + eh + carry; + return hi >>> 0; +} +exports.sum64_5_hi = sum64_5_hi; + +function sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) { + var lo = al + bl + cl + dl + el; + + return lo >>> 0; +} +exports.sum64_5_lo = sum64_5_lo; + +function rotr64_hi(ah, al, num) { + var r = (al << (32 - num)) | (ah >>> num); + return r >>> 0; +} +exports.rotr64_hi = rotr64_hi; + +function rotr64_lo(ah, al, num) { + var r = (ah << (32 - num)) | (al >>> num); + return r >>> 0; +} +exports.rotr64_lo = rotr64_lo; + +function shr64_hi(ah, al, num) { + return ah >>> num; +} +exports.shr64_hi = shr64_hi; + +function shr64_lo(ah, al, num) { + var r = (ah << (32 - num)) | (al >>> num); + return r >>> 0; +} +exports.shr64_lo = shr64_lo; + + +/***/ }), +/* 60 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_main_blockchain_Blockchain__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_events_Status_Events__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_common_utils_helpers_Utils__ = __webpack_require__(61); +/* Added by Silviu Bogdan Stroe - https://www.silviu-s.com */ +/* Edited by Cosmin-Dumitru Oprea */ + + + +const atob = __webpack_require__(672); +const btoa = __webpack_require__(673); + + + +let pounchdb = ( true) ? (__webpack_require__(297).default) : (require('pouchdb-node')); + +class InterfaceSatoshminDB { + + constructor(databaseName = __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DATABASE_NAMES.DEFAULT_DATABASE) { + + this.dbName = databaseName; + + try { + this.db = new pounchdb(this.dbName); + } catch (exception){ + console.error("InterfaceSatoshminDB exception", pounchdb); + } + + } + + async _createDocument(key, value) { + + await this._deleteDocumentAttachmentIfExist(key); + + try { + let response = await this.db.put({_id: key, value: value}); + + return true; + } catch (err) { + if (err.status === 409) + return await this._updateDocument(key, value); + else { + console.error("_createDocument raised exception", key, err); + throw err; + } + } + + } + + async _updateDocument(key, value) { + + try { + let doc = await this.db.get(key); + + let response = await this.db.put({ + _id: doc._id, + _rev: doc._rev, + value: value + }); + + return true; + } catch (exception) { + console.error("_updateDocument error" + key, exception); + throw exception; + } + + } + + async _getDocument(key) { + + try { + let response = await this.db.get(key, {attachments: true}); + + if (response._attachments === undefined) { + return response.value; + } else { + //get attachment + return new Buffer(atob(response._attachments.key.data).toString('hex'), 'hex'); + } + + } catch (Exception) { + + if (Exception.status === 404) //NOT FOUND + return null; + else { + console.error("error _getDocument ", Exception); + throw Exception; + } + } + + } + + async _deleteDocument(key) { + + try { + let doc = await this.db.get(key, {attachments: true}); + + let response = await this.db.remove(doc._id, doc._rev); + + return true; + + } catch (err) { + if (err.status === 404) //NOT FOUND + return null; + else { + console.error("_deleteDocument raised an error ", key); + return err; + } + } + + } + + async _saveDocumentAttachment(key, value) { + + let attachment = value; + // we need blob in browser + if (true && Buffer.isBuffer(value)){ + attachment = new Blob([value.toString('hex')]); + } else { //we are in node + attachment = new Buffer(value.toString('hex')); + } + + try { + + await this._createDocument(key, null); + + let result = await this.db.put({ + _id: key, + _attachments: { + key: { + content_type: 'application/octet-binary', + data: attachment + } + } + }); + + return true; + + } catch (err) { + + + if (err.status === 409) { + return await this._updateDocumentAttachment(key, attachment); + } else { + if (err.status === 404) { + + //if document not exist, create it and recall attachment + try { + let response = this._createDocument(key, null); + + return await this._saveDocumentAttachment(key, value); + } catch (exception) { + + console.error('_saveDocumentAttachment raised an error for key ' + key, exception); + } + + } else { + console.error('_saveDocumentAttachment 222 raised an error for key ' + key, err); + throw err; + } + } + + } + + } + + async _updateDocumentAttachment(key, value) { + + try { + let doc = await this.db.get(key, {attachments: true}); + + try { + let reuslt = await this.db.put({ + _id: doc._id, + _attachments: { + key: { + content_type: 'application/octet-binary', + data: value + } + }, + _rev: doc._rev + }); + return true; + } catch (err) { + console.error("error _updateDocumentAttachment1 " + key, err); + throw err; + } + + + } catch (err) { + console.error("error _updateDocumentAttachment2 " + key, err); + throw err; + } + } + + async _deleteDocumentAttachment(key) { + try { + let doc = await this.db.get(key); + + let result = await this.db.removeAttachment(doc._id, this.dbName, doc._rev); + + return true; + + } catch (exception) { + return false; + throw exception; + } + } + + async _deleteDocumentAttachmentIfExist(key) { + + try { + let value = await this._getDocument(key); + return await this._deleteDocumentAttachment(key); + } catch (err) { + console.error("_deleteDocumentAttachmentIfExist raised an error", err); + return false; + } + } + + + //main methods + _save(key, value) { + + return new Promise(async (resolve)=>{ + + try { + if (Buffer.isBuffer(value)) + resolve(await this._saveDocumentAttachment(key, value)); + else + resolve(await this._createDocument(key, value)); + + } catch (exception) { + console.error("db.save error " + key, exception); + + if (exception.status === 500) + __WEBPACK_IMPORTED_MODULE_2_common_events_Status_Events__["a" /* default */].emit("blockchain/logs", {message: "IndexedDB Error", reason: exception.reason.toString() }); + + resolve(null); + } + + }) + } + + async save(key, value, timeout, trials = 10){ + + for (let i = 0; i < trials; i++){ + + let answer = await this._save(key, value, timeout); + + if (answer !== null) + return answer; + else + await __WEBPACK_IMPORTED_MODULE_3_common_utils_helpers_Utils__["a" /* default */].sleep(100); + + } + + return null; + } + + get(key, timeout=6000, freeze=false) { + + return new Promise((resolve)=>{ + + //timeout, max 10 seconds to load the database + let timeoutInterval = setTimeout(()=>{ + + console.error("SatoshminDB Get failed !!", key); + + if (freeze === true ) return; + + resolve(null); + }, timeout); + + + + this._getDocument(key).then((answer)=>{ + + clearTimeout(timeoutInterval); + resolve(answer); + + }).catch((exception)=>{ + + clearTimeout(timeoutInterval); + console.error("db.get error " + key, exception); + + __WEBPACK_IMPORTED_MODULE_2_common_events_Status_Events__["a" /* default */].emit("blockchain/logs", {message: "IndexedDB Error", reason: exception.reason.toString() }); + + if (freeze === true ) return; + + resolve(null); + }); + + }) + + + } + + async remove(key) { + try { + let result = await this._deleteDocument(key); + return result; + } catch (exception) { + console.error("db.remove error " + key, exception); + + if (exception.status === 500) + __WEBPACK_IMPORTED_MODULE_2_common_events_Status_Events__["a" /* default */].emit("blockchain/logs", {message: "IndexedDB Error", reason: exception.reason.toString() }); + + return null; + } + } + + close(){ + + if (this.db !== undefined && this.db !== null) + this.db.close(); + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceSatoshminDB); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 61 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +const BigInteger = __webpack_require__(31); + +class Utils{ + + validateUrl(value) { + return /^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/i.test(value) || + /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})))(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(value); + } + + getLocation(href) { + + //answer based on https://stackoverflow.com/questions/736513/how-do-i-parse-a-url-into-hostname-and-path-in-javascript + let match = href.match(/^(https?\:)\/\/(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/); + return match && { + href: href, + protocol: match[1], + host: match[2], + hostname: match[3], + port: match[4], + pathname: match[5], + search: match[6], + hash: match[7] + } + } + + /** + * Divides 2 big integers + * @param divident is BigInteger + * @param divisor is BigInteger + * @returns {number} + */ + divideBigIntegers(divident, divisor) { + + let result = 1; + let X = new BigInteger(divisor); + + //TODO: binary search for result + while(X.compare(divident) <= 0) { + X = X.plus(divisor); + result++; + } + + return result - 1; + } + + + makeQuerablePromise(promise) { + // Don't modify any promise that has been already modified. + if (promise.isQuerable) return promise; + + // Set initial state + let isPending = true; + let isRejected = false; + let isFulfilled = false; + + // Observe the promise, saving the fulfillment in a closure scope. + let result = promise.then( + function(v) { + isFulfilled = true; + isPending = false; + return v; + }, + function(e) { + isRejected = true; + isPending = false; + throw e; + } + ); + + result.isFulfilled = function() { return isFulfilled; }; + result.isPending = function() { return isPending; }; + result.isRejected = function() { return isRejected; }; + + result.isQuerable = true; + + return result; + } + + sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new Utils()); + +/***/ }), +/* 62 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +if (__webpack_require__(18)) { + var LIBRARY = __webpack_require__(66); + var global = __webpack_require__(10); + var fails = __webpack_require__(13); + var $export = __webpack_require__(0); + var $typed = __webpack_require__(129); + var $buffer = __webpack_require__(173); + var ctx = __webpack_require__(51); + var anInstance = __webpack_require__(80); + var propertyDesc = __webpack_require__(73); + var hide = __webpack_require__(38); + var redefineAll = __webpack_require__(82); + var toInteger = __webpack_require__(56); + var toLength = __webpack_require__(20); + var toIndex = __webpack_require__(249); + var toAbsoluteIndex = __webpack_require__(76); + var toPrimitive = __webpack_require__(54); + var has = __webpack_require__(42); + var classof = __webpack_require__(101); + var isObject = __webpack_require__(14); + var toObject = __webpack_require__(24); + var isArrayIter = __webpack_require__(164); + var create = __webpack_require__(77); + var getPrototypeOf = __webpack_require__(45); + var gOPN = __webpack_require__(78).f; + var getIterFn = __webpack_require__(166); + var uid = __webpack_require__(74); + var wks = __webpack_require__(15); + var createArrayMethod = __webpack_require__(58); + var createArrayIncludes = __webpack_require__(119); + var speciesConstructor = __webpack_require__(126); + var ArrayIterators = __webpack_require__(169); + var Iterators = __webpack_require__(90); + var $iterDetect = __webpack_require__(123); + var setSpecies = __webpack_require__(79); + var arrayFill = __webpack_require__(168); + var arrayCopyWithin = __webpack_require__(239); + var $DP = __webpack_require__(19); + var $GOPD = __webpack_require__(44); + var dP = $DP.f; + var gOPD = $GOPD.f; + var RangeError = global.RangeError; + var TypeError = global.TypeError; + var Uint8Array = global.Uint8Array; + var ARRAY_BUFFER = 'ArrayBuffer'; + var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER; + var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'; + var PROTOTYPE = 'prototype'; + var ArrayProto = Array[PROTOTYPE]; + var $ArrayBuffer = $buffer.ArrayBuffer; + var $DataView = $buffer.DataView; + var arrayForEach = createArrayMethod(0); + var arrayFilter = createArrayMethod(2); + var arraySome = createArrayMethod(3); + var arrayEvery = createArrayMethod(4); + var arrayFind = createArrayMethod(5); + var arrayFindIndex = createArrayMethod(6); + var arrayIncludes = createArrayIncludes(true); + var arrayIndexOf = createArrayIncludes(false); + var arrayValues = ArrayIterators.values; + var arrayKeys = ArrayIterators.keys; + var arrayEntries = ArrayIterators.entries; + var arrayLastIndexOf = ArrayProto.lastIndexOf; + var arrayReduce = ArrayProto.reduce; + var arrayReduceRight = ArrayProto.reduceRight; + var arrayJoin = ArrayProto.join; + var arraySort = ArrayProto.sort; + var arraySlice = ArrayProto.slice; + var arrayToString = ArrayProto.toString; + var arrayToLocaleString = ArrayProto.toLocaleString; + var ITERATOR = wks('iterator'); + var TAG = wks('toStringTag'); + var TYPED_CONSTRUCTOR = uid('typed_constructor'); + var DEF_CONSTRUCTOR = uid('def_constructor'); + var ALL_CONSTRUCTORS = $typed.CONSTR; + var TYPED_ARRAY = $typed.TYPED; + var VIEW = $typed.VIEW; + var WRONG_LENGTH = 'Wrong length!'; + + var $map = createArrayMethod(1, function (O, length) { + return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length); + }); + + var LITTLE_ENDIAN = fails(function () { + // eslint-disable-next-line no-undef + return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1; + }); + + var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () { + new Uint8Array(1).set({}); + }); + + var toOffset = function (it, BYTES) { + var offset = toInteger(it); + if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!'); + return offset; + }; + + var validate = function (it) { + if (isObject(it) && TYPED_ARRAY in it) return it; + throw TypeError(it + ' is not a typed array!'); + }; + + var allocate = function (C, length) { + if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) { + throw TypeError('It is not a typed array constructor!'); + } return new C(length); + }; + + var speciesFromList = function (O, list) { + return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list); + }; + + var fromList = function (C, list) { + var index = 0; + var length = list.length; + var result = allocate(C, length); + while (length > index) result[index] = list[index++]; + return result; + }; + + var addGetter = function (it, key, internal) { + dP(it, key, { get: function () { return this._d[internal]; } }); + }; + + var $from = function from(source /* , mapfn, thisArg */) { + var O = toObject(source); + var aLen = arguments.length; + var mapfn = aLen > 1 ? arguments[1] : undefined; + var mapping = mapfn !== undefined; + var iterFn = getIterFn(O); + var i, length, values, result, step, iterator; + if (iterFn != undefined && !isArrayIter(iterFn)) { + for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) { + values.push(step.value); + } O = values; + } + if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2); + for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) { + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; + }; + + var $of = function of(/* ...items */) { + var index = 0; + var length = arguments.length; + var result = allocate(this, length); + while (length > index) result[index] = arguments[index++]; + return result; + }; + + // iOS Safari 6.x fails here + var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); }); + + var $toLocaleString = function toLocaleString() { + return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments); + }; + + var proto = { + copyWithin: function copyWithin(target, start /* , end */) { + return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined); + }, + every: function every(callbackfn /* , thisArg */) { + return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars + return arrayFill.apply(validate(this), arguments); + }, + filter: function filter(callbackfn /* , thisArg */) { + return speciesFromList(this, arrayFilter(validate(this), callbackfn, + arguments.length > 1 ? arguments[1] : undefined)); + }, + find: function find(predicate /* , thisArg */) { + return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + findIndex: function findIndex(predicate /* , thisArg */) { + return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + forEach: function forEach(callbackfn /* , thisArg */) { + arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + indexOf: function indexOf(searchElement /* , fromIndex */) { + return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + includes: function includes(searchElement /* , fromIndex */) { + return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + join: function join(separator) { // eslint-disable-line no-unused-vars + return arrayJoin.apply(validate(this), arguments); + }, + lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars + return arrayLastIndexOf.apply(validate(this), arguments); + }, + map: function map(mapfn /* , thisArg */) { + return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined); + }, + reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduce.apply(validate(this), arguments); + }, + reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars + return arrayReduceRight.apply(validate(this), arguments); + }, + reverse: function reverse() { + var that = this; + var length = validate(that).length; + var middle = Math.floor(length / 2); + var index = 0; + var value; + while (index < middle) { + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; + }, + some: function some(callbackfn /* , thisArg */) { + return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + sort: function sort(comparefn) { + return arraySort.call(validate(this), comparefn); + }, + subarray: function subarray(begin, end) { + var O = validate(this); + var length = O.length; + var $begin = toAbsoluteIndex(begin, length); + return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))( + O.buffer, + O.byteOffset + $begin * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin) + ); + } + }; + + var $slice = function slice(start, end) { + return speciesFromList(this, arraySlice.call(validate(this), start, end)); + }; + + var $set = function set(arrayLike /* , offset */) { + validate(this); + var offset = toOffset(arguments[1], 1); + var length = this.length; + var src = toObject(arrayLike); + var len = toLength(src.length); + var index = 0; + if (len + offset > length) throw RangeError(WRONG_LENGTH); + while (index < len) this[offset + index] = src[index++]; + }; + + var $iterators = { + entries: function entries() { + return arrayEntries.call(validate(this)); + }, + keys: function keys() { + return arrayKeys.call(validate(this)); + }, + values: function values() { + return arrayValues.call(validate(this)); + } + }; + + var isTAIndex = function (target, key) { + return isObject(target) + && target[TYPED_ARRAY] + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); + }; + var $getDesc = function getOwnPropertyDescriptor(target, key) { + return isTAIndex(target, key = toPrimitive(key, true)) + ? propertyDesc(2, target[key]) + : gOPD(target, key); + }; + var $setDesc = function defineProperty(target, key, desc) { + if (isTAIndex(target, key = toPrimitive(key, true)) + && isObject(desc) + && has(desc, 'value') + && !has(desc, 'get') + && !has(desc, 'set') + // TODO: add validation descriptor w/o calling accessors + && !desc.configurable + && (!has(desc, 'writable') || desc.writable) + && (!has(desc, 'enumerable') || desc.enumerable) + ) { + target[key] = desc.value; + return target; + } return dP(target, key, desc); + }; + + if (!ALL_CONSTRUCTORS) { + $GOPD.f = $getDesc; + $DP.f = $setDesc; + } + + $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', { + getOwnPropertyDescriptor: $getDesc, + defineProperty: $setDesc + }); + + if (fails(function () { arrayToString.call({}); })) { + arrayToString = arrayToLocaleString = function toString() { + return arrayJoin.call(this); + }; + } + + var $TypedArrayPrototype$ = redefineAll({}, proto); + redefineAll($TypedArrayPrototype$, $iterators); + hide($TypedArrayPrototype$, ITERATOR, $iterators.values); + redefineAll($TypedArrayPrototype$, { + slice: $slice, + set: $set, + constructor: function () { /* noop */ }, + toString: arrayToString, + toLocaleString: $toLocaleString + }); + addGetter($TypedArrayPrototype$, 'buffer', 'b'); + addGetter($TypedArrayPrototype$, 'byteOffset', 'o'); + addGetter($TypedArrayPrototype$, 'byteLength', 'l'); + addGetter($TypedArrayPrototype$, 'length', 'e'); + dP($TypedArrayPrototype$, TAG, { + get: function () { return this[TYPED_ARRAY]; } + }); + + // eslint-disable-next-line max-statements + module.exports = function (KEY, BYTES, wrapper, CLAMPED) { + CLAMPED = !!CLAMPED; + var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'; + var GETTER = 'get' + KEY; + var SETTER = 'set' + KEY; + var TypedArray = global[NAME]; + var Base = TypedArray || {}; + var TAC = TypedArray && getPrototypeOf(TypedArray); + var FORCED = !TypedArray || !$typed.ABV; + var O = {}; + var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE]; + var getter = function (that, index) { + var data = that._d; + return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN); + }; + var setter = function (that, index, value) { + var data = that._d; + if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff; + data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN); + }; + var addElement = function (that, index) { + dP(that, index, { + get: function () { + return getter(this, index); + }, + set: function (value) { + return setter(this, index, value); + }, + enumerable: true + }); + }; + if (FORCED) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME, '_d'); + var index = 0; + var offset = 0; + var buffer, byteLength, length, klass; + if (!isObject(data)) { + length = toIndex(data); + byteLength = length * BYTES; + buffer = new $ArrayBuffer(byteLength); + } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + buffer = data; + offset = toOffset($offset, BYTES); + var $len = data.byteLength; + if ($length === undefined) { + if ($len % BYTES) throw RangeError(WRONG_LENGTH); + byteLength = $len - offset; + if (byteLength < 0) throw RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if (TYPED_ARRAY in data) { + return fromList(TypedArray, data); + } else { + return $from.call(TypedArray, data); + } + hide(that, '_d', { + b: buffer, + o: offset, + l: byteLength, + e: length, + v: new $DataView(buffer) + }); + while (index < length) addElement(that, index++); + }); + TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$); + hide(TypedArrayPrototype, 'constructor', TypedArray); + } else if (!fails(function () { + TypedArray(1); + }) || !fails(function () { + new TypedArray(-1); // eslint-disable-line no-new + }) || !$iterDetect(function (iter) { + new TypedArray(); // eslint-disable-line no-new + new TypedArray(null); // eslint-disable-line no-new + new TypedArray(1.5); // eslint-disable-line no-new + new TypedArray(iter); // eslint-disable-line no-new + }, true)) { + TypedArray = wrapper(function (that, data, $offset, $length) { + anInstance(that, TypedArray, NAME); + var klass; + // `ws` module bug, temporarily remove validation length for Uint8Array + // https://github.com/websockets/ws/pull/645 + if (!isObject(data)) return new Base(toIndex(data)); + if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) { + return $length !== undefined + ? new Base(data, toOffset($offset, BYTES), $length) + : $offset !== undefined + ? new Base(data, toOffset($offset, BYTES)) + : new Base(data); + } + if (TYPED_ARRAY in data) return fromList(TypedArray, data); + return $from.call(TypedArray, data); + }); + arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) { + if (!(key in TypedArray)) hide(TypedArray, key, Base[key]); + }); + TypedArray[PROTOTYPE] = TypedArrayPrototype; + if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray; + } + var $nativeIterator = TypedArrayPrototype[ITERATOR]; + var CORRECT_ITER_NAME = !!$nativeIterator + && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined); + var $iterator = $iterators.values; + hide(TypedArray, TYPED_CONSTRUCTOR, true); + hide(TypedArrayPrototype, TYPED_ARRAY, NAME); + hide(TypedArrayPrototype, VIEW, true); + hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray); + + if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) { + dP(TypedArrayPrototype, TAG, { + get: function () { return NAME; } + }); + } + + O[NAME] = TypedArray; + + $export($export.G + $export.W + $export.F * (TypedArray != Base), O); + + $export($export.S, NAME, { + BYTES_PER_ELEMENT: BYTES + }); + + $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, { + from: $from, + of: $of + }); + + if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES); + + $export($export.P, NAME, proto); + + setSpecies(NAME); + + $export($export.P + $export.F * FORCED_SET, NAME, { set: $set }); + + $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators); + + if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString; + + $export($export.P + $export.F * fails(function () { + new TypedArray(1).slice(); + }), NAME, { slice: $slice }); + + $export($export.P + $export.F * (fails(function () { + return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString(); + }) || !fails(function () { + TypedArrayPrototype.toLocaleString.call([1, 2]); + })), NAME, { toLocaleString: $toLocaleString }); + + Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator; + if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator); + }; +} else module.exports = function () { /* empty */ }; + + +/***/ }), +/* 63 */ +/***/ (function(module, exports, __webpack_require__) { + +var Map = __webpack_require__(244); +var $export = __webpack_require__(0); +var shared = __webpack_require__(118)('metadata'); +var store = shared.store || (shared.store = new (__webpack_require__(247))()); + +var getOrCreateMetadataMap = function (target, targetKey, create) { + var targetMetadata = store.get(target); + if (!targetMetadata) { + if (!create) return undefined; + store.set(target, targetMetadata = new Map()); + } + var keyMetadata = targetMetadata.get(targetKey); + if (!keyMetadata) { + if (!create) return undefined; + targetMetadata.set(targetKey, keyMetadata = new Map()); + } return keyMetadata; +}; +var ordinaryHasOwnMetadata = function (MetadataKey, O, P) { + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? false : metadataMap.has(MetadataKey); +}; +var ordinaryGetOwnMetadata = function (MetadataKey, O, P) { + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); +}; +var ordinaryDefineOwnMetadata = function (MetadataKey, MetadataValue, O, P) { + getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); +}; +var ordinaryOwnMetadataKeys = function (target, targetKey) { + var metadataMap = getOrCreateMetadataMap(target, targetKey, false); + var keys = []; + if (metadataMap) metadataMap.forEach(function (_, key) { keys.push(key); }); + return keys; +}; +var toMetaKey = function (it) { + return it === undefined || typeof it == 'symbol' ? it : String(it); +}; +var exp = function (O) { + $export($export.S, 'Reflect', O); +}; + +module.exports = { + store: store, + map: getOrCreateMetadataMap, + has: ordinaryHasOwnMetadata, + get: ordinaryGetOwnMetadata, + set: ordinaryDefineOwnMetadata, + keys: ordinaryOwnMetadataKeys, + key: toMetaKey, + exp: exp +}; + + +/***/ }), +/* 64 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_node_lists_geolocation_lists_geo_helpers_geo_helper__ = __webpack_require__(202); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_utils_helpers_Utils__ = __webpack_require__(61); +const ipaddr = __webpack_require__(141); + + + + +class SocketAddress { + + static checkIsSocketAddress(sckAddress){ + + if (typeof sckAddress !== 'object' || sckAddress === null) return false; + + if (! (sckAddress.constructor.name === "SocketAddress" )) return false; + + return true; + } + + /* + Create a Socket Address in case the address is just a simple "address" + */ + static createSocketAddress(address, port, uuid){ + + //in case address is actually a Socket + if (typeof address === "object" && address !== null && address.hasOwnProperty("node") && address.node.hasOwnProperty("sckAddress")) + address = address.node.sckAddress; + + if (typeof address === "object" && address !== null && address.hasOwnProperty("sckAddress")) + address = address.sckAddress; + + if (SocketAddress.checkIsSocketAddress(address)) + return address; + + return new SocketAddress(address, port, uuid); + } + + + constructor(address, port, uuid){ + + if (address === undefined) address = ''; + if (port === undefined) port = __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.NODE.PORT; + + try{ + + if (address.indexOf("https://") >= 0){ + address = address.replace("https://", ""); + this.SSL = true; + } else + if (address.indexOf("http://") >= 0){ + address = address.replace("http://",""); + } + + }catch (exception){ + + } + + + let errorIPv6=false; + try{ + + if (ipaddr.IPv6.isIPv6(address)) + address = this._extractIPv6(address); + + } catch (exception){ + + console.error("invalid ipv6", address); + errorIPv6 = true; + } + + + if (address.lastIndexOf(":") > 0) {//port + port = address.substr(address.lastIndexOf(":") + 1); + address = address.substr(0, address.lastIndexOf(":")); + } + + if (errorIPv6 && ipaddr.IPv6.isIPv6(address)) + address = this._extractIPv6(address); + + if (ipaddr.IPv4.isIPv4(address)) { + + let ip = ipaddr.IPv4.parse(address); + address = ip.toNormalizedString(); //IPv4 + + } else { + }// it is a domain + + + + this.address = address; //always ipv6 + + this.port = port; + this._geoLocation = __WEBPACK_IMPORTED_MODULE_2_common_utils_helpers_Utils__["a" /* default */].makeQuerablePromise(new Promise( async (resolve)=>{ + + this._geoLocationResolver = resolve; + + })); + + this.uuid = uuid; + } + + _extractIPv6(address){ + let ip = ipaddr.IPv6.parse(address); + + if (ip.isIPv4MappedAddress()) // ip.toIPv4Address().toString() is IPv4 + address = ip.toIPv4Address().toNormalizedString(); + else // ipString is IPv6 + address = ip.toNormalizedString(); + + return address; + } + + matchAddress(address, validationDoubleConnectionsTypes){ + + if (validationDoubleConnectionsTypes === undefined) validationDoubleConnectionsTypes = ["ip","uuid"]; // port + else + if (!Array.isArray(validationDoubleConnectionsTypes)) + validationDoubleConnectionsTypes = [validationDoubleConnectionsTypes]; + + //maybe it is a socket + let sckAddress = SocketAddress.createSocketAddress(address); + + //uuid validation + for (let i=0; i= 0){ + + if (this.address+":"+this.port === sckAddress.address+":"+sckAddress.port) + return true; + + return false; + + } else + if ( this.address === sckAddress.address ) return true; + } + } + + return false; + } + + /* + return nice looking ip addresses + */ + toString(){ + return this.getAddress(false); + } + + /* + returns ipv6 ip standard + */ + getAddress(includePort=true, includeHTTP=false){ + + return (includeHTTP ? 'http'+ (this.SSL ? 's': '') + '://' : '' )+this.address + (includePort ? ':'+this.port : ''); + + } + + get geoLocation(){ + return this._geoLocation; + } + + async getLocationNow(){ + + if (this._geoLocation.isFulfilled()) + return this._geoLocation; + + let answer = await __WEBPACK_IMPORTED_MODULE_1_node_lists_geolocation_lists_geo_helpers_geo_helper__["a" /* default */].getLocationFromAddress(this); + + if (answer === null) this._geoLocationResolver(null); + else { + this._geoLocationResolver(answer); + } + + return this._geoLocation; + } + + isLocalHost(){ + + return false; + + try{ + + let address = this.getAddress(false); + + if (address.indexOf("127.0.0.1") >= 0 || address.indexOf("localhost") >= 0) + return true; + + if (address.indexOf("::1") >= 0) + return true; + + if (address.indexOf("::") >= 0) + return true; + + return false; + + } catch (Exception){ + throw {message: "EXCEPTION isLocalHost", address: this.address} + } + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (SocketAddress); + +/***/ }), +/* 65 */ +/***/ (function(module, exports, __webpack_require__) { + +var META = __webpack_require__(74)('meta'); +var isObject = __webpack_require__(14); +var has = __webpack_require__(42); +var setDesc = __webpack_require__(19).f; +var id = 0; +var isExtensible = Object.isExtensible || function () { + return true; +}; +var FREEZE = !__webpack_require__(13)(function () { + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function (it) { + setDesc(it, META, { value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + } }); +}; +var fastKey = function (it, create) { + // return primitive with prefix + if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return 'F'; + // not necessary to add metadata + if (!create) return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function (it, create) { + if (!has(it, META)) { + // can't set metadata to uncaught frozen object + if (!isExtensible(it)) return true; + // not necessary to add metadata + if (!create) return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function (it) { + if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; + + +/***/ }), +/* 66 */ +/***/ (function(module, exports) { + +module.exports = false; + + +/***/ }), +/* 67 */ +/***/ (function(module, exports, __webpack_require__) { + +// 22.1.3.31 Array.prototype[@@unscopables] +var UNSCOPABLES = __webpack_require__(15)('unscopables'); +var ArrayProto = Array.prototype; +if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(38)(ArrayProto, UNSCOPABLES, {}); +module.exports = function (key) { + ArrayProto[UNSCOPABLES][key] = true; +}; + + +/***/ }), +/* 68 */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_RESULT__;;(function (globalObject) { + 'use strict'; + +/* + * bignumber.js v6.0.0 + * A JavaScript library for arbitrary-precision arithmetic. + * https://github.com/MikeMcl/bignumber.js + * Copyright (c) 2018 Michael Mclaughlin + * MIT Licensed. + * + * BigNumber.prototype methods | BigNumber methods + * | + * absoluteValue abs | clone + * comparedTo | config set + * decimalPlaces dp | DECIMAL_PLACES + * dividedBy div | ROUNDING_MODE + * dividedToIntegerBy idiv | EXPONENTIAL_AT + * exponentiatedBy pow | RANGE + * integerValue | CRYPTO + * isEqualTo eq | MODULO_MODE + * isFinite | POW_PRECISION + * isGreaterThan gt | FORMAT + * isGreaterThanOrEqualTo gte | ALPHABET + * isInteger | isBigNumber + * isLessThan lt | maximum max + * isLessThanOrEqualTo lte | minimum min + * isNaN | random + * isNegative | + * isPositive | + * isZero | + * minus | + * modulo mod | + * multipliedBy times | + * negated | + * plus | + * precision sd | + * shiftedBy | + * squareRoot sqrt | + * toExponential | + * toFixed | + * toFormat | + * toFraction | + * toJSON | + * toNumber | + * toPrecision | + * toString | + * valueOf | + * + */ + + + var BigNumber, + isNumeric = /^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i, + + mathceil = Math.ceil, + mathfloor = Math.floor, + + bignumberError = '[BigNumber Error] ', + tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ', + + BASE = 1e14, + LOG_BASE = 14, + MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1 + // MAX_INT32 = 0x7fffffff, // 2^31 - 1 + POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13], + SQRT_BASE = 1e7, + + // EDITABLE + // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and + // the arguments to toExponential, toFixed, toFormat, and toPrecision. + MAX = 1E9; // 0 to MAX_INT32 + + + /* + * Create and return a BigNumber constructor. + */ + function clone(configObject) { + var div, convertBase, parseNumeric, + P = BigNumber.prototype, + ONE = new BigNumber(1), + + + //----------------------------- EDITABLE CONFIG DEFAULTS ------------------------------- + + + // The default values below must be integers within the inclusive ranges stated. + // The values can also be changed at run-time using BigNumber.set. + + // The maximum number of decimal places for operations involving division. + DECIMAL_PLACES = 20, // 0 to MAX + + // The rounding mode used when rounding to the above decimal places, and when using + // toExponential, toFixed, toFormat and toPrecision, and round (default value). + // UP 0 Away from zero. + // DOWN 1 Towards zero. + // CEIL 2 Towards +Infinity. + // FLOOR 3 Towards -Infinity. + // HALF_UP 4 Towards nearest neighbour. If equidistant, up. + // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down. + // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour. + // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity. + // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity. + ROUNDING_MODE = 4, // 0 to 8 + + // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS] + + // The exponent value at and beneath which toString returns exponential notation. + // Number type: -7 + TO_EXP_NEG = -7, // 0 to -MAX + + // The exponent value at and above which toString returns exponential notation. + // Number type: 21 + TO_EXP_POS = 21, // 0 to MAX + + // RANGE : [MIN_EXP, MAX_EXP] + + // The minimum exponent value, beneath which underflow to zero occurs. + // Number type: -324 (5e-324) + MIN_EXP = -1e7, // -1 to -MAX + + // The maximum exponent value, above which overflow to Infinity occurs. + // Number type: 308 (1.7976931348623157e+308) + // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow. + MAX_EXP = 1e7, // 1 to MAX + + // Whether to use cryptographically-secure random number generation, if available. + CRYPTO = false, // true or false + + // The modulo mode used when calculating the modulus: a mod n. + // The quotient (q = a / n) is calculated according to the corresponding rounding mode. + // The remainder (r) is calculated as: r = a - n * q. + // + // UP 0 The remainder is positive if the dividend is negative, else is negative. + // DOWN 1 The remainder has the same sign as the dividend. + // This modulo mode is commonly known as 'truncated division' and is + // equivalent to (a % n) in JavaScript. + // FLOOR 3 The remainder has the same sign as the divisor (Python %). + // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function. + // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). + // The remainder is always positive. + // + // The truncated division, floored division, Euclidian division and IEEE 754 remainder + // modes are commonly used for the modulus operation. + // Although the other rounding modes can also be used, they may not give useful results. + MODULO_MODE = 1, // 0 to 9 + + // The maximum number of significant digits of the result of the exponentiatedBy operation. + // If POW_PRECISION is 0, there will be unlimited significant digits. + POW_PRECISION = 0, // 0 to MAX + + // The format specification used by the BigNumber.prototype.toFormat method. + FORMAT = { + decimalSeparator: '.', + groupSeparator: ',', + groupSize: 3, + secondaryGroupSize: 0, + fractionGroupSeparator: '\xA0', // non-breaking space + fractionGroupSize: 0 + }, + + // The alphabet used for base conversion. + // It must be at least 2 characters long, with no '.' or repeated character. + // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_' + ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'; + + + //------------------------------------------------------------------------------------------ + + + // CONSTRUCTOR + + + /* + * The BigNumber constructor and exported function. + * Create and return a new instance of a BigNumber object. + * + * n {number|string|BigNumber} A numeric value. + * [b] {number} The base of n. Integer, 2 to ALPHABET.length inclusive. + */ + function BigNumber( n, b ) { + var alphabet, c, e, i, isNum, len, str, + x = this; + + // Enable constructor usage without new. + if ( !( x instanceof BigNumber ) ) { + + // Don't throw on constructor call without new (#81). + // '[BigNumber Error] Constructor call without new: {n}' + //throw Error( bignumberError + ' Constructor call without new: ' + n ); + return new BigNumber( n, b ); + } + + if ( b == null ) { + + // Duplicate. + if ( n instanceof BigNumber ) { + x.s = n.s; + x.e = n.e; + x.c = ( n = n.c ) ? n.slice() : n; + return; + } + + isNum = typeof n == 'number'; + + if ( isNum && n * 0 == 0 ) { + + // Use `1 / n` to handle minus zero also. + x.s = 1 / n < 0 ? ( n = -n, -1 ) : 1; + + // Faster path for integers. + if ( n === ~~n ) { + for ( e = 0, i = n; i >= 10; i /= 10, e++ ); + x.e = e; + x.c = [n]; + return; + } + + str = n + ''; + } else { + if ( !isNumeric.test( str = n + '' ) ) return parseNumeric( x, str, isNum ); + x.s = str.charCodeAt(0) == 45 ? ( str = str.slice(1), -1 ) : 1; + } + + } else { + + // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' + intCheck( b, 2, ALPHABET.length, 'Base' ); + str = n + ''; + + // Allow exponential notation to be used with base 10 argument, while + // also rounding to DECIMAL_PLACES as with other bases. + if ( b == 10 ) { + x = new BigNumber( n instanceof BigNumber ? n : str ); + return round( x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE ); + } + + isNum = typeof n == 'number'; + + if (isNum) { + + // Avoid potential interpretation of Infinity and NaN as base 44+ values. + if ( n * 0 != 0 ) return parseNumeric( x, str, isNum, b ); + + x.s = 1 / n < 0 ? ( str = str.slice(1), -1 ) : 1; + + // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' + if ( str.replace( /^0\.0*|\./, '' ).length > 15 ) { + throw Error + ( tooManyDigits + n ); + } + + // Prevent later check for length on converted number. + isNum = false; + } else { + x.s = str.charCodeAt(0) === 45 ? ( str = str.slice(1), -1 ) : 1; + + // Allow e.g. hexadecimal 'FF' as well as 'ff'. + if ( b > 10 && b < 37 ) str = str.toLowerCase(); + } + + alphabet = ALPHABET.slice( 0, b ); + e = i = 0; + + // Check that str is a valid base b number. + // Don't use RegExp so alphabet can contain special characters. + for ( len = str.length; i < len; i++ ) { + if ( alphabet.indexOf( c = str.charAt(i) ) < 0 ) { + if ( c == '.' ) { + + // If '.' is not the first character and it has not be found before. + if ( i > e ) { + e = len; + continue; + } + } + + return parseNumeric( x, n + '', isNum, b ); + } + } + + str = convertBase( str, b, 10, x.s ); + } + + // Decimal point? + if ( ( e = str.indexOf('.') ) > -1 ) str = str.replace( '.', '' ); + + // Exponential form? + if ( ( i = str.search( /e/i ) ) > 0 ) { + + // Determine exponent. + if ( e < 0 ) e = i; + e += +str.slice( i + 1 ); + str = str.substring( 0, i ); + } else if ( e < 0 ) { + + // Integer. + e = str.length; + } + + // Determine leading zeros. + for ( i = 0; str.charCodeAt(i) === 48; i++ ); + + // Determine trailing zeros. + for ( len = str.length; str.charCodeAt(--len) === 48; ); + str = str.slice( i, len + 1 ); + + if (str) { + len = str.length; + + // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}' + if ( isNum && len > 15 && ( n > MAX_SAFE_INTEGER || n !== mathfloor(n) ) ) { + throw Error + ( tooManyDigits + ( x.s * n ) ); + } + + e = e - i - 1; + + // Overflow? + if ( e > MAX_EXP ) { + + // Infinity. + x.c = x.e = null; + + // Underflow? + } else if ( e < MIN_EXP ) { + + // Zero. + x.c = [ x.e = 0 ]; + } else { + x.e = e; + x.c = []; + + // Transform base + + // e is the base 10 exponent. + // i is where to slice str to get the first element of the coefficient array. + i = ( e + 1 ) % LOG_BASE; + if ( e < 0 ) i += LOG_BASE; + + if ( i < len ) { + if (i) x.c.push( +str.slice( 0, i ) ); + + for ( len -= LOG_BASE; i < len; ) { + x.c.push( +str.slice( i, i += LOG_BASE ) ); + } + + str = str.slice(i); + i = LOG_BASE - str.length; + } else { + i -= len; + } + + for ( ; i--; str += '0' ); + x.c.push( +str ); + } + } else { + + // Zero. + x.c = [ x.e = 0 ]; + } + } + + + // CONSTRUCTOR PROPERTIES + + + BigNumber.clone = clone; + + BigNumber.ROUND_UP = 0; + BigNumber.ROUND_DOWN = 1; + BigNumber.ROUND_CEIL = 2; + BigNumber.ROUND_FLOOR = 3; + BigNumber.ROUND_HALF_UP = 4; + BigNumber.ROUND_HALF_DOWN = 5; + BigNumber.ROUND_HALF_EVEN = 6; + BigNumber.ROUND_HALF_CEIL = 7; + BigNumber.ROUND_HALF_FLOOR = 8; + BigNumber.EUCLID = 9; + + + /* + * Configure infrequently-changing library-wide settings. + * + * Accept an object with the following optional properties (if the value of a property is + * a number, it must be an integer within the inclusive range stated): + * + * DECIMAL_PLACES {number} 0 to MAX + * ROUNDING_MODE {number} 0 to 8 + * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX] + * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX] + * CRYPTO {boolean} true or false + * MODULO_MODE {number} 0 to 9 + * POW_PRECISION {number} 0 to MAX + * ALPHABET {string} A string of two or more unique characters, and not + * containing '.'. The empty string, null or undefined + * resets the alphabet to its default value. + * FORMAT {object} An object with some of the following properties: + * decimalSeparator {string} + * groupSeparator {string} + * groupSize {number} + * secondaryGroupSize {number} + * fractionGroupSeparator {string} + * fractionGroupSize {number} + * + * (The values assigned to the above FORMAT object properties are not checked for validity.) + * + * E.g. + * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 }) + * + * Ignore properties/parameters set to null or undefined, except for ALPHABET. + * + * Return an object with the properties current values. + */ + BigNumber.config = BigNumber.set = function (obj) { + var p, v; + + if ( obj != null ) { + + if ( typeof obj == 'object' ) { + + // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive. + // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}' + if ( obj.hasOwnProperty( p = 'DECIMAL_PLACES' ) ) { + v = obj[p]; + intCheck( v, 0, MAX, p ); + DECIMAL_PLACES = v; + } + + // ROUNDING_MODE {number} Integer, 0 to 8 inclusive. + // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}' + if ( obj.hasOwnProperty( p = 'ROUNDING_MODE' ) ) { + v = obj[p]; + intCheck( v, 0, 8, p ); + ROUNDING_MODE = v; + } + + // EXPONENTIAL_AT {number|number[]} + // Integer, -MAX to MAX inclusive or + // [integer -MAX to 0 inclusive, 0 to MAX inclusive]. + // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}' + if ( obj.hasOwnProperty( p = 'EXPONENTIAL_AT' ) ) { + v = obj[p]; + if ( isArray(v) ) { + intCheck( v[0], -MAX, 0, p ); + intCheck( v[1], 0, MAX, p ); + TO_EXP_NEG = v[0]; + TO_EXP_POS = v[1]; + } else { + intCheck( v, -MAX, MAX, p ); + TO_EXP_NEG = -( TO_EXP_POS = v < 0 ? -v : v ); + } + } + + // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or + // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive]. + // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}' + if ( obj.hasOwnProperty( p = 'RANGE' ) ) { + v = obj[p]; + if ( isArray(v) ) { + intCheck( v[0], -MAX, -1, p ); + intCheck( v[1], 1, MAX, p ); + MIN_EXP = v[0]; + MAX_EXP = v[1]; + } else { + intCheck( v, -MAX, MAX, p ); + if (v) { + MIN_EXP = -( MAX_EXP = v < 0 ? -v : v ); + } else { + throw Error + ( bignumberError + p + ' cannot be zero: ' + v ); + } + } + } + + // CRYPTO {boolean} true or false. + // '[BigNumber Error] CRYPTO not true or false: {v}' + // '[BigNumber Error] crypto unavailable' + if ( obj.hasOwnProperty( p = 'CRYPTO' ) ) { + v = obj[p]; + if ( v === !!v ) { + if (v) { + if ( typeof crypto != 'undefined' && crypto && + (crypto.getRandomValues || crypto.randomBytes) ) { + CRYPTO = v; + } else { + CRYPTO = !v; + throw Error + ( bignumberError + 'crypto unavailable' ); + } + } else { + CRYPTO = v; + } + } else { + throw Error + ( bignumberError + p + ' not true or false: ' + v ); + } + } + + // MODULO_MODE {number} Integer, 0 to 9 inclusive. + // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}' + if ( obj.hasOwnProperty( p = 'MODULO_MODE' ) ) { + v = obj[p]; + intCheck( v, 0, 9, p ); + MODULO_MODE = v; + } + + // POW_PRECISION {number} Integer, 0 to MAX inclusive. + // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}' + if ( obj.hasOwnProperty( p = 'POW_PRECISION' ) ) { + v = obj[p]; + intCheck( v, 0, MAX, p ); + POW_PRECISION = v; + } + + // FORMAT {object} + // '[BigNumber Error] FORMAT not an object: {v}' + if ( obj.hasOwnProperty( p = 'FORMAT' ) ) { + v = obj[p]; + if ( typeof v == 'object' ) FORMAT = v; + else throw Error + ( bignumberError + p + ' not an object: ' + v ); + } + + // ALPHABET {string} + // '[BigNumber Error] ALPHABET invalid: {v}' + if ( obj.hasOwnProperty( p = 'ALPHABET' ) ) { + v = obj[p]; + + // Disallow if only one character, or contains '.' or a repeated character. + if ( typeof v == 'string' && !/^.$|\.|(.).*\1/.test(v) ) { + ALPHABET = v; + } else { + throw Error + ( bignumberError + p + ' invalid: ' + v ); + } + } + + } else { + + // '[BigNumber Error] Object expected: {v}' + throw Error + ( bignumberError + 'Object expected: ' + obj ); + } + } + + return { + DECIMAL_PLACES: DECIMAL_PLACES, + ROUNDING_MODE: ROUNDING_MODE, + EXPONENTIAL_AT: [ TO_EXP_NEG, TO_EXP_POS ], + RANGE: [ MIN_EXP, MAX_EXP ], + CRYPTO: CRYPTO, + MODULO_MODE: MODULO_MODE, + POW_PRECISION: POW_PRECISION, + FORMAT: FORMAT, + ALPHABET: ALPHABET + }; + }; + + + /* + * Return true if v is a BigNumber instance, otherwise return false. + * + * v {any} + */ + BigNumber.isBigNumber = function (v) { + return v instanceof BigNumber || v && v._isBigNumber === true || false; + }; + + + /* + * Return a new BigNumber whose value is the maximum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.maximum = BigNumber.max = function () { + return maxOrMin( arguments, P.lt ); + }; + + + /* + * Return a new BigNumber whose value is the minimum of the arguments. + * + * arguments {number|string|BigNumber} + */ + BigNumber.minimum = BigNumber.min = function () { + return maxOrMin( arguments, P.gt ); + }; + + + /* + * Return a new BigNumber with a random value equal to or greater than 0 and less than 1, + * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing + * zeros are produced). + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}' + * '[BigNumber Error] crypto unavailable' + */ + BigNumber.random = (function () { + var pow2_53 = 0x20000000000000; + + // Return a 53 bit integer n, where 0 <= n < 9007199254740992. + // Check if Math.random() produces more than 32 bits of randomness. + // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits. + // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1. + var random53bitInt = (Math.random() * pow2_53) & 0x1fffff + ? function () { return mathfloor( Math.random() * pow2_53 ); } + : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) + + (Math.random() * 0x800000 | 0); }; + + return function (dp) { + var a, b, e, k, v, + i = 0, + c = [], + rand = new BigNumber(ONE); + + if ( dp == null ) dp = DECIMAL_PLACES; + else intCheck( dp, 0, MAX ); + + k = mathceil( dp / LOG_BASE ); + + if (CRYPTO) { + + // Browsers supporting crypto.getRandomValues. + if (crypto.getRandomValues) { + + a = crypto.getRandomValues( new Uint32Array( k *= 2 ) ); + + for ( ; i < k; ) { + + // 53 bits: + // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2) + // 11111 11111111 11111111 11111111 11100000 00000000 00000000 + // ((Math.pow(2, 32) - 1) >>> 11).toString(2) + // 11111 11111111 11111111 + // 0x20000 is 2^21. + v = a[i] * 0x20000 + (a[i + 1] >>> 11); + + // Rejection sampling: + // 0 <= v < 9007199254740992 + // Probability that v >= 9e15, is + // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251 + if ( v >= 9e15 ) { + b = crypto.getRandomValues( new Uint32Array(2) ); + a[i] = b[0]; + a[i + 1] = b[1]; + } else { + + // 0 <= v <= 8999999999999999 + // 0 <= (v % 1e14) <= 99999999999999 + c.push( v % 1e14 ); + i += 2; + } + } + i = k / 2; + + // Node.js supporting crypto.randomBytes. + } else if (crypto.randomBytes) { + + // buffer + a = crypto.randomBytes( k *= 7 ); + + for ( ; i < k; ) { + + // 0x1000000000000 is 2^48, 0x10000000000 is 2^40 + // 0x100000000 is 2^32, 0x1000000 is 2^24 + // 11111 11111111 11111111 11111111 11111111 11111111 11111111 + // 0 <= v < 9007199254740992 + v = ( ( a[i] & 31 ) * 0x1000000000000 ) + ( a[i + 1] * 0x10000000000 ) + + ( a[i + 2] * 0x100000000 ) + ( a[i + 3] * 0x1000000 ) + + ( a[i + 4] << 16 ) + ( a[i + 5] << 8 ) + a[i + 6]; + + if ( v >= 9e15 ) { + crypto.randomBytes(7).copy( a, i ); + } else { + + // 0 <= (v % 1e14) <= 99999999999999 + c.push( v % 1e14 ); + i += 7; + } + } + i = k / 7; + } else { + CRYPTO = false; + throw Error + ( bignumberError + 'crypto unavailable' ); + } + } + + // Use Math.random. + if (!CRYPTO) { + + for ( ; i < k; ) { + v = random53bitInt(); + if ( v < 9e15 ) c[i++] = v % 1e14; + } + } + + k = c[--i]; + dp %= LOG_BASE; + + // Convert trailing digits to zeros according to dp. + if ( k && dp ) { + v = POWS_TEN[LOG_BASE - dp]; + c[i] = mathfloor( k / v ) * v; + } + + // Remove trailing elements which are zero. + for ( ; c[i] === 0; c.pop(), i-- ); + + // Zero? + if ( i < 0 ) { + c = [ e = 0 ]; + } else { + + // Remove leading elements which are zero and adjust exponent accordingly. + for ( e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE); + + // Count the digits of the first element of c to determine leading zeros, and... + for ( i = 1, v = c[0]; v >= 10; v /= 10, i++); + + // adjust the exponent accordingly. + if ( i < LOG_BASE ) e -= LOG_BASE - i; + } + + rand.e = e; + rand.c = c; + return rand; + }; + })(); + + + // PRIVATE FUNCTIONS + + + // Called by BigNumber and BigNumber.prototype.toString. + convertBase = ( function () { + var decimal = '0123456789'; + + /* + * Convert string of baseIn to an array of numbers of baseOut. + * Eg. toBaseOut('255', 10, 16) returns [15, 15]. + * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5]. + */ + function toBaseOut( str, baseIn, baseOut, alphabet ) { + var j, + arr = [0], + arrL, + i = 0, + len = str.length; + + for ( ; i < len; ) { + for ( arrL = arr.length; arrL--; arr[arrL] *= baseIn ); + + arr[0] += alphabet.indexOf( str.charAt( i++ ) ); + + for ( j = 0; j < arr.length; j++ ) { + + if ( arr[j] > baseOut - 1 ) { + if ( arr[j + 1] == null ) arr[j + 1] = 0; + arr[j + 1] += arr[j] / baseOut | 0; + arr[j] %= baseOut; + } + } + } + + return arr.reverse(); + } + + // Convert a numeric string of baseIn to a numeric string of baseOut. + // If the caller is toString, we are converting from base 10 to baseOut. + // If the caller is BigNumber, we are converting from baseIn to base 10. + return function ( str, baseIn, baseOut, sign, callerIsToString ) { + var alphabet, d, e, k, r, x, xc, y, + i = str.indexOf( '.' ), + dp = DECIMAL_PLACES, + rm = ROUNDING_MODE; + + // Non-integer. + if ( i >= 0 ) { + k = POW_PRECISION; + + // Unlimited precision. + POW_PRECISION = 0; + str = str.replace( '.', '' ); + y = new BigNumber(baseIn); + x = y.pow( str.length - i ); + POW_PRECISION = k; + + // Convert str as if an integer, then restore the fraction part by dividing the + // result by its base raised to a power. + + y.c = toBaseOut( toFixedPoint( coeffToString( x.c ), x.e, '0' ), + 10, baseOut, decimal ); + y.e = y.c.length; + } + + // Convert the number as integer. + + xc = toBaseOut( str, baseIn, baseOut, callerIsToString + ? ( alphabet = ALPHABET, decimal ) + : ( alphabet = decimal, ALPHABET ) ); + + + // xc now represents str as an integer and converted to baseOut. e is the exponent. + e = k = xc.length; + + // Remove trailing zeros. + for ( ; xc[--k] == 0; xc.pop() ); + + // Zero? + if ( !xc[0] ) return alphabet.charAt(0); + + // Does str represent an integer? If so, no need for the division. + if ( i < 0 ) { + --e; + } else { + x.c = xc; + x.e = e; + + // The sign is needed for correct rounding. + x.s = sign; + x = div( x, y, dp, rm, baseOut ); + xc = x.c; + r = x.r; + e = x.e; + } + + // xc now represents str converted to baseOut. + + // THe index of the rounding digit. + d = e + dp + 1; + + // The rounding digit: the digit to the right of the digit that may be rounded up. + i = xc[d]; + + // Look at the rounding digits and mode to determine whether to round up. + + k = baseOut / 2; + r = r || d < 0 || xc[d + 1] != null; + + r = rm < 4 ? ( i != null || r ) && ( rm == 0 || rm == ( x.s < 0 ? 3 : 2 ) ) + : i > k || i == k &&( rm == 4 || r || rm == 6 && xc[d - 1] & 1 || + rm == ( x.s < 0 ? 8 : 7 ) ); + + // If the index of the rounding digit is not greater than zero, or xc represents + // zero, then the result of the base conversion is zero or, if rounding up, a value + // such as 0.00001. + if ( d < 1 || !xc[0] ) { + + // 1^-dp or 0 + str = r ? toFixedPoint( alphabet.charAt(1), -dp, alphabet.charAt(0) ) + : alphabet.charAt(0); + } else { + + // Truncate xc to the required number of decimal places. + xc.length = d; + + // Round up? + if (r) { + + // Rounding up may mean the previous digit has to be rounded up and so on. + for ( --baseOut; ++xc[--d] > baseOut; ) { + xc[d] = 0; + + if ( !d ) { + ++e; + xc = [1].concat(xc); + } + } + } + + // Determine trailing zeros. + for ( k = xc.length; !xc[--k]; ); + + // E.g. [4, 11, 15] becomes 4bf. + for ( i = 0, str = ''; i <= k; str += alphabet.charAt( xc[i++] ) ); + + // Add leading zeros, decimal point and trailing zeros as required. + str = toFixedPoint( str, e, alphabet.charAt(0) ); + } + + // The caller will add the sign. + return str; + }; + })(); + + + // Perform division in the specified base. Called by div and convertBase. + div = (function () { + + // Assume non-zero x and k. + function multiply( x, k, base ) { + var m, temp, xlo, xhi, + carry = 0, + i = x.length, + klo = k % SQRT_BASE, + khi = k / SQRT_BASE | 0; + + for ( x = x.slice(); i--; ) { + xlo = x[i] % SQRT_BASE; + xhi = x[i] / SQRT_BASE | 0; + m = khi * xlo + xhi * klo; + temp = klo * xlo + ( ( m % SQRT_BASE ) * SQRT_BASE ) + carry; + carry = ( temp / base | 0 ) + ( m / SQRT_BASE | 0 ) + khi * xhi; + x[i] = temp % base; + } + + if (carry) x = [carry].concat(x); + + return x; + } + + function compare( a, b, aL, bL ) { + var i, cmp; + + if ( aL != bL ) { + cmp = aL > bL ? 1 : -1; + } else { + + for ( i = cmp = 0; i < aL; i++ ) { + + if ( a[i] != b[i] ) { + cmp = a[i] > b[i] ? 1 : -1; + break; + } + } + } + return cmp; + } + + function subtract( a, b, aL, base ) { + var i = 0; + + // Subtract b from a. + for ( ; aL--; ) { + a[aL] -= i; + i = a[aL] < b[aL] ? 1 : 0; + a[aL] = i * base + a[aL] - b[aL]; + } + + // Remove leading zeros. + for ( ; !a[0] && a.length > 1; a.splice(0, 1) ); + } + + // x: dividend, y: divisor. + return function ( x, y, dp, rm, base ) { + var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0, + yL, yz, + s = x.s == y.s ? 1 : -1, + xc = x.c, + yc = y.c; + + // Either NaN, Infinity or 0? + if ( !xc || !xc[0] || !yc || !yc[0] ) { + + return new BigNumber( + + // Return NaN if either NaN, or both Infinity or 0. + !x.s || !y.s || ( xc ? yc && xc[0] == yc[0] : !yc ) ? NaN : + + // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0. + xc && xc[0] == 0 || !yc ? s * 0 : s / 0 + ); + } + + q = new BigNumber(s); + qc = q.c = []; + e = x.e - y.e; + s = dp + e + 1; + + if ( !base ) { + base = BASE; + e = bitFloor( x.e / LOG_BASE ) - bitFloor( y.e / LOG_BASE ); + s = s / LOG_BASE | 0; + } + + // Result exponent may be one less then the current value of e. + // The coefficients of the BigNumbers from convertBase may have trailing zeros. + for ( i = 0; yc[i] == ( xc[i] || 0 ); i++ ); + + if ( yc[i] > ( xc[i] || 0 ) ) e--; + + if ( s < 0 ) { + qc.push(1); + more = true; + } else { + xL = xc.length; + yL = yc.length; + i = 0; + s += 2; + + // Normalise xc and yc so highest order digit of yc is >= base / 2. + + n = mathfloor( base / ( yc[0] + 1 ) ); + + // Not necessary, but to handle odd bases where yc[0] == ( base / 2 ) - 1. + // if ( n > 1 || n++ == 1 && yc[0] < base / 2 ) { + if ( n > 1 ) { + yc = multiply( yc, n, base ); + xc = multiply( xc, n, base ); + yL = yc.length; + xL = xc.length; + } + + xi = yL; + rem = xc.slice( 0, yL ); + remL = rem.length; + + // Add zeros to make remainder as long as divisor. + for ( ; remL < yL; rem[remL++] = 0 ); + yz = yc.slice(); + yz = [0].concat(yz); + yc0 = yc[0]; + if ( yc[1] >= base / 2 ) yc0++; + // Not necessary, but to prevent trial digit n > base, when using base 3. + // else if ( base == 3 && yc0 == 1 ) yc0 = 1 + 1e-15; + + do { + n = 0; + + // Compare divisor and remainder. + cmp = compare( yc, rem, yL, remL ); + + // If divisor < remainder. + if ( cmp < 0 ) { + + // Calculate trial digit, n. + + rem0 = rem[0]; + if ( yL != remL ) rem0 = rem0 * base + ( rem[1] || 0 ); + + // n is how many times the divisor goes into the current remainder. + n = mathfloor( rem0 / yc0 ); + + // Algorithm: + // 1. product = divisor * trial digit (n) + // 2. if product > remainder: product -= divisor, n-- + // 3. remainder -= product + // 4. if product was < remainder at 2: + // 5. compare new remainder and divisor + // 6. If remainder > divisor: remainder -= divisor, n++ + + if ( n > 1 ) { + + // n may be > base only when base is 3. + if (n >= base) n = base - 1; + + // product = divisor * trial digit. + prod = multiply( yc, n, base ); + prodL = prod.length; + remL = rem.length; + + // Compare product and remainder. + // If product > remainder. + // Trial digit n too high. + // n is 1 too high about 5% of the time, and is not known to have + // ever been more than 1 too high. + while ( compare( prod, rem, prodL, remL ) == 1 ) { + n--; + + // Subtract divisor from product. + subtract( prod, yL < prodL ? yz : yc, prodL, base ); + prodL = prod.length; + cmp = 1; + } + } else { + + // n is 0 or 1, cmp is -1. + // If n is 0, there is no need to compare yc and rem again below, + // so change cmp to 1 to avoid it. + // If n is 1, leave cmp as -1, so yc and rem are compared again. + if ( n == 0 ) { + + // divisor < remainder, so n must be at least 1. + cmp = n = 1; + } + + // product = divisor + prod = yc.slice(); + prodL = prod.length; + } + + if ( prodL < remL ) prod = [0].concat(prod); + + // Subtract product from remainder. + subtract( rem, prod, remL, base ); + remL = rem.length; + + // If product was < remainder. + if ( cmp == -1 ) { + + // Compare divisor and new remainder. + // If divisor < new remainder, subtract divisor from remainder. + // Trial digit n too low. + // n is 1 too low about 5% of the time, and very rarely 2 too low. + while ( compare( yc, rem, yL, remL ) < 1 ) { + n++; + + // Subtract divisor from remainder. + subtract( rem, yL < remL ? yz : yc, remL, base ); + remL = rem.length; + } + } + } else if ( cmp === 0 ) { + n++; + rem = [0]; + } // else cmp === 1 and n will be 0 + + // Add the next digit, n, to the result array. + qc[i++] = n; + + // Update the remainder. + if ( rem[0] ) { + rem[remL++] = xc[xi] || 0; + } else { + rem = [ xc[xi] ]; + remL = 1; + } + } while ( ( xi++ < xL || rem[0] != null ) && s-- ); + + more = rem[0] != null; + + // Leading zero? + if ( !qc[0] ) qc.splice(0, 1); + } + + if ( base == BASE ) { + + // To calculate q.e, first get the number of digits of qc[0]. + for ( i = 1, s = qc[0]; s >= 10; s /= 10, i++ ); + + round( q, dp + ( q.e = i + e * LOG_BASE - 1 ) + 1, rm, more ); + + // Caller is convertBase. + } else { + q.e = e; + q.r = +more; + } + + return q; + }; + })(); + + + /* + * Return a string representing the value of BigNumber n in fixed-point or exponential + * notation rounded to the specified decimal places or significant digits. + * + * n: a BigNumber. + * i: the index of the last digit required (i.e. the digit that may be rounded up). + * rm: the rounding mode. + * id: 1 (toExponential) or 2 (toPrecision). + */ + function format( n, i, rm, id ) { + var c0, e, ne, len, str; + + if ( rm == null ) rm = ROUNDING_MODE; + else intCheck( rm, 0, 8 ); + + if ( !n.c ) return n.toString(); + + c0 = n.c[0]; + ne = n.e; + + if ( i == null ) { + str = coeffToString( n.c ); + str = id == 1 || id == 2 && ne <= TO_EXP_NEG + ? toExponential( str, ne ) + : toFixedPoint( str, ne, '0' ); + } else { + n = round( new BigNumber(n), i, rm ); + + // n.e may have changed if the value was rounded up. + e = n.e; + + str = coeffToString( n.c ); + len = str.length; + + // toPrecision returns exponential notation if the number of significant digits + // specified is less than the number of digits necessary to represent the integer + // part of the value in fixed-point notation. + + // Exponential notation. + if ( id == 1 || id == 2 && ( i <= e || e <= TO_EXP_NEG ) ) { + + // Append zeros? + for ( ; len < i; str += '0', len++ ); + str = toExponential( str, e ); + + // Fixed-point notation. + } else { + i -= ne; + str = toFixedPoint( str, e, '0' ); + + // Append zeros? + if ( e + 1 > len ) { + if ( --i > 0 ) for ( str += '.'; i--; str += '0' ); + } else { + i += e - len; + if ( i > 0 ) { + if ( e + 1 == len ) str += '.'; + for ( ; i--; str += '0' ); + } + } + } + } + + return n.s < 0 && c0 ? '-' + str : str; + } + + + // Handle BigNumber.max and BigNumber.min. + function maxOrMin( args, method ) { + var m, n, + i = 0; + + if ( isArray( args[0] ) ) args = args[0]; + m = new BigNumber( args[0] ); + + for ( ; ++i < args.length; ) { + n = new BigNumber( args[i] ); + + // If any number is NaN, return NaN. + if ( !n.s ) { + m = n; + break; + } else if ( method.call( m, n ) ) { + m = n; + } + } + + return m; + } + + + /* + * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP. + * Called by minus, plus and times. + */ + function normalise( n, c, e ) { + var i = 1, + j = c.length; + + // Remove trailing zeros. + for ( ; !c[--j]; c.pop() ); + + // Calculate the base 10 exponent. First get the number of digits of c[0]. + for ( j = c[0]; j >= 10; j /= 10, i++ ); + + // Overflow? + if ( ( e = i + e * LOG_BASE - 1 ) > MAX_EXP ) { + + // Infinity. + n.c = n.e = null; + + // Underflow? + } else if ( e < MIN_EXP ) { + + // Zero. + n.c = [ n.e = 0 ]; + } else { + n.e = e; + n.c = c; + } + + return n; + } + + + // Handle values that fail the validity test in BigNumber. + parseNumeric = (function () { + var basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i, + dotAfter = /^([^.]+)\.$/, + dotBefore = /^\.([^.]+)$/, + isInfinityOrNaN = /^-?(Infinity|NaN)$/, + whitespaceOrPlus = /^\s*\+(?=[\w.])|^\s+|\s+$/g; + + return function ( x, str, isNum, b ) { + var base, + s = isNum ? str : str.replace( whitespaceOrPlus, '' ); + + // No exception on ±Infinity or NaN. + if ( isInfinityOrNaN.test(s) ) { + x.s = isNaN(s) ? null : s < 0 ? -1 : 1; + x.c = x.e = null; + } else { + if ( !isNum ) { + + // basePrefix = /^(-?)0([xbo])(?=\w[\w.]*$)/i + s = s.replace( basePrefix, function ( m, p1, p2 ) { + base = ( p2 = p2.toLowerCase() ) == 'x' ? 16 : p2 == 'b' ? 2 : 8; + return !b || b == base ? p1 : m; + }); + + if (b) { + base = b; + + // E.g. '1.' to '1', '.1' to '0.1' + s = s.replace( dotAfter, '$1' ).replace( dotBefore, '0.$1' ); + } + + if ( str != s ) return new BigNumber( s, base ); + } + + // '[BigNumber Error] Not a number: {n}' + // '[BigNumber Error] Not a base {b} number: {n}' + throw Error + ( bignumberError + 'Not a' + ( b ? ' base ' + b : '' ) + ' number: ' + str ); + } + } + })(); + + + /* + * Round x to sd significant digits using rounding mode rm. Check for over/under-flow. + * If r is truthy, it is known that there are more digits after the rounding digit. + */ + function round( x, sd, rm, r ) { + var d, i, j, k, n, ni, rd, + xc = x.c, + pows10 = POWS_TEN; + + // if x is not Infinity or NaN... + if (xc) { + + // rd is the rounding digit, i.e. the digit after the digit that may be rounded up. + // n is a base 1e14 number, the value of the element of array x.c containing rd. + // ni is the index of n within x.c. + // d is the number of digits of n. + // i is the index of rd within n including leading zeros. + // j is the actual index of rd within n (if < 0, rd is a leading zero). + out: { + + // Get the number of digits of the first element of xc. + for ( d = 1, k = xc[0]; k >= 10; k /= 10, d++ ); + i = sd - d; + + // If the rounding digit is in the first element of xc... + if ( i < 0 ) { + i += LOG_BASE; + j = sd; + n = xc[ ni = 0 ]; + + // Get the rounding digit at index j of n. + rd = n / pows10[ d - j - 1 ] % 10 | 0; + } else { + ni = mathceil( ( i + 1 ) / LOG_BASE ); + + if ( ni >= xc.length ) { + + if (r) { + + // Needed by sqrt. + for ( ; xc.length <= ni; xc.push(0) ); + n = rd = 0; + d = 1; + i %= LOG_BASE; + j = i - LOG_BASE + 1; + } else { + break out; + } + } else { + n = k = xc[ni]; + + // Get the number of digits of n. + for ( d = 1; k >= 10; k /= 10, d++ ); + + // Get the index of rd within n. + i %= LOG_BASE; + + // Get the index of rd within n, adjusted for leading zeros. + // The number of leading zeros of n is given by LOG_BASE - d. + j = i - LOG_BASE + d; + + // Get the rounding digit at index j of n. + rd = j < 0 ? 0 : n / pows10[ d - j - 1 ] % 10 | 0; + } + } + + r = r || sd < 0 || + + // Are there any non-zero digits after the rounding digit? + // The expression n % pows10[ d - j - 1 ] returns all digits of n to the right + // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714. + xc[ni + 1] != null || ( j < 0 ? n : n % pows10[ d - j - 1 ] ); + + r = rm < 4 + ? ( rd || r ) && ( rm == 0 || rm == ( x.s < 0 ? 3 : 2 ) ) + : rd > 5 || rd == 5 && ( rm == 4 || r || rm == 6 && + + // Check whether the digit to the left of the rounding digit is odd. + ( ( i > 0 ? j > 0 ? n / pows10[ d - j ] : 0 : xc[ni - 1] ) % 10 ) & 1 || + rm == ( x.s < 0 ? 8 : 7 ) ); + + if ( sd < 1 || !xc[0] ) { + xc.length = 0; + + if (r) { + + // Convert sd to decimal places. + sd -= x.e + 1; + + // 1, 0.1, 0.01, 0.001, 0.0001 etc. + xc[0] = pows10[ ( LOG_BASE - sd % LOG_BASE ) % LOG_BASE ]; + x.e = -sd || 0; + } else { + + // Zero. + xc[0] = x.e = 0; + } + + return x; + } + + // Remove excess digits. + if ( i == 0 ) { + xc.length = ni; + k = 1; + ni--; + } else { + xc.length = ni + 1; + k = pows10[ LOG_BASE - i ]; + + // E.g. 56700 becomes 56000 if 7 is the rounding digit. + // j > 0 means i > number of leading zeros of n. + xc[ni] = j > 0 ? mathfloor( n / pows10[ d - j ] % pows10[j] ) * k : 0; + } + + // Round up? + if (r) { + + for ( ; ; ) { + + // If the digit to be rounded up is in the first element of xc... + if ( ni == 0 ) { + + // i will be the length of xc[0] before k is added. + for ( i = 1, j = xc[0]; j >= 10; j /= 10, i++ ); + j = xc[0] += k; + for ( k = 1; j >= 10; j /= 10, k++ ); + + // if i != k the length has increased. + if ( i != k ) { + x.e++; + if ( xc[0] == BASE ) xc[0] = 1; + } + + break; + } else { + xc[ni] += k; + if ( xc[ni] != BASE ) break; + xc[ni--] = 0; + k = 1; + } + } + } + + // Remove trailing zeros. + for ( i = xc.length; xc[--i] === 0; xc.pop() ); + } + + // Overflow? Infinity. + if ( x.e > MAX_EXP ) { + x.c = x.e = null; + + // Underflow? Zero. + } else if ( x.e < MIN_EXP ) { + x.c = [ x.e = 0 ]; + } + } + + return x; + } + + + // PROTOTYPE/INSTANCE METHODS + + + /* + * Return a new BigNumber whose value is the absolute value of this BigNumber. + */ + P.absoluteValue = P.abs = function () { + var x = new BigNumber(this); + if ( x.s < 0 ) x.s = 1; + return x; + }; + + + /* + * Return + * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b), + * -1 if the value of this BigNumber is less than the value of BigNumber(y, b), + * 0 if they have the same value, + * or null if the value of either is NaN. + */ + P.comparedTo = function ( y, b ) { + return compare( this, new BigNumber( y, b ) ); + }; + + + /* + * If dp is undefined or null or true or false, return the number of decimal places of the + * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. + * + * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this + * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or + * ROUNDING_MODE if rm is omitted. + * + * [dp] {number} Decimal places: integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.decimalPlaces = P.dp = function ( dp, rm ) { + var c, n, v, + x = this; + + if ( dp != null ) { + intCheck( dp, 0, MAX ); + if ( rm == null ) rm = ROUNDING_MODE; + else intCheck( rm, 0, 8 ); + + return round( new BigNumber(x), dp + x.e + 1, rm ); + } + + if ( !( c = x.c ) ) return null; + n = ( ( v = c.length - 1 ) - bitFloor( this.e / LOG_BASE ) ) * LOG_BASE; + + // Subtract the number of trailing zeros of the last number. + if ( v = c[v] ) for ( ; v % 10 == 0; v /= 10, n-- ); + if ( n < 0 ) n = 0; + + return n; + }; + + + /* + * n / 0 = I + * n / N = N + * n / I = 0 + * 0 / n = 0 + * 0 / 0 = N + * 0 / N = N + * 0 / I = 0 + * N / n = N + * N / 0 = N + * N / N = N + * N / I = N + * I / n = I + * I / 0 = I + * I / N = N + * I / I = N + * + * Return a new BigNumber whose value is the value of this BigNumber divided by the value of + * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.dividedBy = P.div = function ( y, b ) { + return div( this, new BigNumber( y, b ), DECIMAL_PLACES, ROUNDING_MODE ); + }; + + + /* + * Return a new BigNumber whose value is the integer part of dividing the value of this + * BigNumber by the value of BigNumber(y, b). + */ + P.dividedToIntegerBy = P.idiv = function ( y, b ) { + return div( this, new BigNumber( y, b ), 0, 1 ); + }; + + + /* + * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b), + * otherwise return false. + */ + P.isEqualTo = P.eq = function ( y, b ) { + return compare( this, new BigNumber( y, b ) ) === 0; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer + * using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}' + */ + P.integerValue = function (rm) { + var n = new BigNumber(this); + if ( rm == null ) rm = ROUNDING_MODE; + else intCheck( rm, 0, 8 ); + return round( n, n.e + 1, rm ); + }; + + + /* + * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b), + * otherwise return false. + */ + P.isGreaterThan = P.gt = function ( y, b ) { + return compare( this, new BigNumber( y, b ) ) > 0; + }; + + + /* + * Return true if the value of this BigNumber is greater than or equal to the value of + * BigNumber(y, b), otherwise return false. + */ + P.isGreaterThanOrEqualTo = P.gte = function ( y, b ) { + return ( b = compare( this, new BigNumber( y, b ) ) ) === 1 || b === 0; + + }; + + + /* + * Return true if the value of this BigNumber is a finite number, otherwise return false. + */ + P.isFinite = function () { + return !!this.c; + }; + + + /* + * Return true if the value of this BigNumber is an integer, otherwise return false. + */ + P.isInteger = function () { + return !!this.c && bitFloor( this.e / LOG_BASE ) > this.c.length - 2; + }; + + + /* + * Return true if the value of this BigNumber is NaN, otherwise return false. + */ + P.isNaN = function () { + return !this.s; + }; + + + /* + * Return true if the value of this BigNumber is negative, otherwise return false. + */ + P.isNegative = function () { + return this.s < 0; + }; + + + /* + * Return true if the value of this BigNumber is positive, otherwise return false. + */ + P.isPositive = function () { + return this.s > 0; + }; + + + /* + * Return true if the value of this BigNumber is 0 or -0, otherwise return false. + */ + P.isZero = function () { + return !!this.c && this.c[0] == 0; + }; + + + /* + * Return true if the value of this BigNumber is less than the value of BigNumber(y, b), + * otherwise return false. + */ + P.isLessThan = P.lt = function ( y, b ) { + return compare( this, new BigNumber( y, b ) ) < 0; + }; + + + /* + * Return true if the value of this BigNumber is less than or equal to the value of + * BigNumber(y, b), otherwise return false. + */ + P.isLessThanOrEqualTo = P.lte = function ( y, b ) { + return ( b = compare( this, new BigNumber( y, b ) ) ) === -1 || b === 0; + }; + + + /* + * n - 0 = n + * n - N = N + * n - I = -I + * 0 - n = -n + * 0 - 0 = 0 + * 0 - N = N + * 0 - I = -I + * N - n = N + * N - 0 = N + * N - N = N + * N - I = N + * I - n = I + * I - 0 = I + * I - N = N + * I - I = N + * + * Return a new BigNumber whose value is the value of this BigNumber minus the value of + * BigNumber(y, b). + */ + P.minus = function ( y, b ) { + var i, j, t, xLTy, + x = this, + a = x.s; + + y = new BigNumber( y, b ); + b = y.s; + + // Either NaN? + if ( !a || !b ) return new BigNumber(NaN); + + // Signs differ? + if ( a != b ) { + y.s = -b; + return x.plus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if ( !xe || !ye ) { + + // Either Infinity? + if ( !xc || !yc ) return xc ? ( y.s = -b, y ) : new BigNumber( yc ? x : NaN ); + + // Either zero? + if ( !xc[0] || !yc[0] ) { + + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + return yc[0] ? ( y.s = -b, y ) : new BigNumber( xc[0] ? x : + + // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity + ROUNDING_MODE == 3 ? -0 : 0 ); + } + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Determine which is the bigger number. + if ( a = xe - ye ) { + + if ( xLTy = a < 0 ) { + a = -a; + t = xc; + } else { + ye = xe; + t = yc; + } + + t.reverse(); + + // Prepend zeros to equalise exponents. + for ( b = a; b--; t.push(0) ); + t.reverse(); + } else { + + // Exponents equal. Check digit by digit. + j = ( xLTy = ( a = xc.length ) < ( b = yc.length ) ) ? a : b; + + for ( a = b = 0; b < j; b++ ) { + + if ( xc[b] != yc[b] ) { + xLTy = xc[b] < yc[b]; + break; + } + } + } + + // x < y? Point xc to the array of the bigger number. + if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s; + + b = ( j = yc.length ) - ( i = xc.length ); + + // Append zeros to xc if shorter. + // No need to add zeros to yc if shorter as subtract only needs to start at yc.length. + if ( b > 0 ) for ( ; b--; xc[i++] = 0 ); + b = BASE - 1; + + // Subtract yc from xc. + for ( ; j > a; ) { + + if ( xc[--j] < yc[j] ) { + for ( i = j; i && !xc[--i]; xc[i] = b ); + --xc[i]; + xc[j] += BASE; + } + + xc[j] -= yc[j]; + } + + // Remove leading zeros and adjust exponent accordingly. + for ( ; xc[0] == 0; xc.splice(0, 1), --ye ); + + // Zero? + if ( !xc[0] ) { + + // Following IEEE 754 (2008) 6.3, + // n - n = +0 but n - n = -0 when rounding towards -Infinity. + y.s = ROUNDING_MODE == 3 ? -1 : 1; + y.c = [ y.e = 0 ]; + return y; + } + + // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity + // for finite x and y. + return normalise( y, xc, ye ); + }; + + + /* + * n % 0 = N + * n % N = N + * n % I = n + * 0 % n = 0 + * -0 % n = -0 + * 0 % 0 = N + * 0 % N = N + * 0 % I = 0 + * N % n = N + * N % 0 = N + * N % N = N + * N % I = N + * I % n = N + * I % 0 = N + * I % N = N + * I % I = N + * + * Return a new BigNumber whose value is the value of this BigNumber modulo the value of + * BigNumber(y, b). The result depends on the value of MODULO_MODE. + */ + P.modulo = P.mod = function ( y, b ) { + var q, s, + x = this; + + y = new BigNumber( y, b ); + + // Return NaN if x is Infinity or NaN, or y is NaN or zero. + if ( !x.c || !y.s || y.c && !y.c[0] ) { + return new BigNumber(NaN); + + // Return x if y is Infinity or x is zero. + } else if ( !y.c || x.c && !x.c[0] ) { + return new BigNumber(x); + } + + if ( MODULO_MODE == 9 ) { + + // Euclidian division: q = sign(y) * floor(x / abs(y)) + // r = x - qy where 0 <= r < abs(y) + s = y.s; + y.s = 1; + q = div( x, y, 0, 3 ); + y.s = s; + q.s *= s; + } else { + q = div( x, y, 0, MODULO_MODE ); + } + + return x.minus( q.times(y) ); + }; + + + /* + * n * 0 = 0 + * n * N = N + * n * I = I + * 0 * n = 0 + * 0 * 0 = 0 + * 0 * N = N + * 0 * I = N + * N * n = N + * N * 0 = N + * N * N = N + * N * I = N + * I * n = I + * I * 0 = N + * I * N = N + * I * I = I + * + * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value + * of BigNumber(y, b). + */ + P.multipliedBy = P.times = function ( y, b ) { + var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc, + base, sqrtBase, + x = this, + xc = x.c, + yc = ( y = new BigNumber( y, b ) ).c; + + // Either NaN, ±Infinity or ±0? + if ( !xc || !yc || !xc[0] || !yc[0] ) { + + // Return NaN if either is NaN, or one is 0 and the other is Infinity. + if ( !x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc ) { + y.c = y.e = y.s = null; + } else { + y.s *= x.s; + + // Return ±Infinity if either is ±Infinity. + if ( !xc || !yc ) { + y.c = y.e = null; + + // Return ±0 if either is ±0. + } else { + y.c = [0]; + y.e = 0; + } + } + + return y; + } + + e = bitFloor( x.e / LOG_BASE ) + bitFloor( y.e / LOG_BASE ); + y.s *= x.s; + xcL = xc.length; + ycL = yc.length; + + // Ensure xc points to longer array and xcL to its length. + if ( xcL < ycL ) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i; + + // Initialise the result array with zeros. + for ( i = xcL + ycL, zc = []; i--; zc.push(0) ); + + base = BASE; + sqrtBase = SQRT_BASE; + + for ( i = ycL; --i >= 0; ) { + c = 0; + ylo = yc[i] % sqrtBase; + yhi = yc[i] / sqrtBase | 0; + + for ( k = xcL, j = i + k; j > i; ) { + xlo = xc[--k] % sqrtBase; + xhi = xc[k] / sqrtBase | 0; + m = yhi * xlo + xhi * ylo; + xlo = ylo * xlo + ( ( m % sqrtBase ) * sqrtBase ) + zc[j] + c; + c = ( xlo / base | 0 ) + ( m / sqrtBase | 0 ) + yhi * xhi; + zc[j--] = xlo % base; + } + + zc[j] = c; + } + + if (c) { + ++e; + } else { + zc.splice(0, 1); + } + + return normalise( y, zc, e ); + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber negated, + * i.e. multiplied by -1. + */ + P.negated = function () { + var x = new BigNumber(this); + x.s = -x.s || null; + return x; + }; + + + /* + * n + 0 = n + * n + N = N + * n + I = I + * 0 + n = n + * 0 + 0 = 0 + * 0 + N = N + * 0 + I = I + * N + n = N + * N + 0 = N + * N + N = N + * N + I = N + * I + n = I + * I + 0 = I + * I + N = N + * I + I = I + * + * Return a new BigNumber whose value is the value of this BigNumber plus the value of + * BigNumber(y, b). + */ + P.plus = function ( y, b ) { + var t, + x = this, + a = x.s; + + y = new BigNumber( y, b ); + b = y.s; + + // Either NaN? + if ( !a || !b ) return new BigNumber(NaN); + + // Signs differ? + if ( a != b ) { + y.s = -b; + return x.minus(y); + } + + var xe = x.e / LOG_BASE, + ye = y.e / LOG_BASE, + xc = x.c, + yc = y.c; + + if ( !xe || !ye ) { + + // Return ±Infinity if either ±Infinity. + if ( !xc || !yc ) return new BigNumber( a / 0 ); + + // Either zero? + // Return y if y is non-zero, x if x is non-zero, or zero if both are zero. + if ( !xc[0] || !yc[0] ) return yc[0] ? y : new BigNumber( xc[0] ? x : a * 0 ); + } + + xe = bitFloor(xe); + ye = bitFloor(ye); + xc = xc.slice(); + + // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts. + if ( a = xe - ye ) { + if ( a > 0 ) { + ye = xe; + t = yc; + } else { + a = -a; + t = xc; + } + + t.reverse(); + for ( ; a--; t.push(0) ); + t.reverse(); + } + + a = xc.length; + b = yc.length; + + // Point xc to the longer array, and b to the shorter length. + if ( a - b < 0 ) t = yc, yc = xc, xc = t, b = a; + + // Only start adding at yc.length - 1 as the further digits of xc can be ignored. + for ( a = 0; b; ) { + a = ( xc[--b] = xc[b] + yc[b] + a ) / BASE | 0; + xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE; + } + + if (a) { + xc = [a].concat(xc); + ++ye; + } + + // No need to check for zero, as +x + +y != 0 && -x + -y != 0 + // ye = MAX_EXP + 1 possible + return normalise( y, xc, ye ); + }; + + + /* + * If sd is undefined or null or true or false, return the number of significant digits of + * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN. + * If sd is true include integer-part trailing zeros in the count. + * + * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this + * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or + * ROUNDING_MODE if rm is omitted. + * + * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive. + * boolean: whether to count integer-part trailing zeros: true or false. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' + */ + P.precision = P.sd = function ( sd, rm ) { + var c, n, v, + x = this; + + if ( sd != null && sd !== !!sd ) { + intCheck( sd, 1, MAX ); + if ( rm == null ) rm = ROUNDING_MODE; + else intCheck( rm, 0, 8 ); + + return round( new BigNumber(x), sd, rm ); + } + + if ( !( c = x.c ) ) return null; + v = c.length - 1; + n = v * LOG_BASE + 1; + + if ( v = c[v] ) { + + // Subtract the number of trailing zeros of the last element. + for ( ; v % 10 == 0; v /= 10, n-- ); + + // Add the number of digits of the first element. + for ( v = c[0]; v >= 10; v /= 10, n++ ); + } + + if ( sd && x.e + 1 > n ) n = x.e + 1; + + return n; + }; + + + /* + * Return a new BigNumber whose value is the value of this BigNumber shifted by k places + * (powers of 10). Shift to the right if n > 0, and to the left if n < 0. + * + * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}' + */ + P.shiftedBy = function (k) { + intCheck( k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER ); + return this.times( '1e' + k ); + }; + + + /* + * sqrt(-n) = N + * sqrt( N) = N + * sqrt(-I) = N + * sqrt( I) = I + * sqrt( 0) = 0 + * sqrt(-0) = -0 + * + * Return a new BigNumber whose value is the square root of the value of this BigNumber, + * rounded according to DECIMAL_PLACES and ROUNDING_MODE. + */ + P.squareRoot = P.sqrt = function () { + var m, n, r, rep, t, + x = this, + c = x.c, + s = x.s, + e = x.e, + dp = DECIMAL_PLACES + 4, + half = new BigNumber('0.5'); + + // Negative/NaN/Infinity/zero? + if ( s !== 1 || !c || !c[0] ) { + return new BigNumber( !s || s < 0 && ( !c || c[0] ) ? NaN : c ? x : 1 / 0 ); + } + + // Initial estimate. + s = Math.sqrt( +x ); + + // Math.sqrt underflow/overflow? + // Pass x to Math.sqrt as integer, then adjust the exponent of the result. + if ( s == 0 || s == 1 / 0 ) { + n = coeffToString(c); + if ( ( n.length + e ) % 2 == 0 ) n += '0'; + s = Math.sqrt(n); + e = bitFloor( ( e + 1 ) / 2 ) - ( e < 0 || e % 2 ); + + if ( s == 1 / 0 ) { + n = '1e' + e; + } else { + n = s.toExponential(); + n = n.slice( 0, n.indexOf('e') + 1 ) + e; + } + + r = new BigNumber(n); + } else { + r = new BigNumber( s + '' ); + } + + // Check for zero. + // r could be zero if MIN_EXP is changed after the this value was created. + // This would cause a division by zero (x/t) and hence Infinity below, which would cause + // coeffToString to throw. + if ( r.c[0] ) { + e = r.e; + s = e + dp; + if ( s < 3 ) s = 0; + + // Newton-Raphson iteration. + for ( ; ; ) { + t = r; + r = half.times( t.plus( div( x, t, dp, 1 ) ) ); + + if ( coeffToString( t.c ).slice( 0, s ) === ( n = + coeffToString( r.c ) ).slice( 0, s ) ) { + + // The exponent of r may here be one less than the final result exponent, + // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits + // are indexed correctly. + if ( r.e < e ) --s; + n = n.slice( s - 3, s + 1 ); + + // The 4th rounding digit may be in error by -1 so if the 4 rounding digits + // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the + // iteration. + if ( n == '9999' || !rep && n == '4999' ) { + + // On the first iteration only, check to see if rounding up gives the + // exact result as the nines may infinitely repeat. + if ( !rep ) { + round( t, t.e + DECIMAL_PLACES + 2, 0 ); + + if ( t.times(t).eq(x) ) { + r = t; + break; + } + } + + dp += 4; + s += 4; + rep = 1; + } else { + + // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact + // result. If not, then there are further digits and m will be truthy. + if ( !+n || !+n.slice(1) && n.charAt(0) == '5' ) { + + // Truncate to the first rounding digit. + round( r, r.e + DECIMAL_PLACES + 2, 1 ); + m = !r.times(r).eq(x); + } + + break; + } + } + } + } + + return round( r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m ); + }; + + + /* + * Return a string representing the value of this BigNumber in exponential notation and + * rounded using ROUNDING_MODE to dp fixed decimal places. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.toExponential = function ( dp, rm ) { + if ( dp != null ) { + intCheck( dp, 0, MAX ); + dp++; + } + return format( this, dp, rm, 1 ); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounding + * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted. + * + * Note: as with JavaScript's number type, (-0).toFixed(0) is '0', + * but e.g. (-0.00001).toFixed(0) is '-0'. + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.toFixed = function ( dp, rm ) { + if ( dp != null ) { + intCheck( dp, 0, MAX ); + dp = dp + this.e + 1; + } + return format( this, dp, rm ); + }; + + + /* + * Return a string representing the value of this BigNumber in fixed-point notation rounded + * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties + * of the FORMAT object (see BigNumber.set). + * + * FORMAT = { + * decimalSeparator : '.', + * groupSeparator : ',', + * groupSize : 3, + * secondaryGroupSize : 0, + * fractionGroupSeparator : '\xA0', // non-breaking space + * fractionGroupSize : 0 + * }; + * + * [dp] {number} Decimal places. Integer, 0 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}' + */ + P.toFormat = function ( dp, rm ) { + var str = this.toFixed( dp, rm ); + + if ( this.c ) { + var i, + arr = str.split('.'), + g1 = +FORMAT.groupSize, + g2 = +FORMAT.secondaryGroupSize, + groupSeparator = FORMAT.groupSeparator, + intPart = arr[0], + fractionPart = arr[1], + isNeg = this.s < 0, + intDigits = isNeg ? intPart.slice(1) : intPart, + len = intDigits.length; + + if (g2) i = g1, g1 = g2, g2 = i, len -= i; + + if ( g1 > 0 && len > 0 ) { + i = len % g1 || g1; + intPart = intDigits.substr( 0, i ); + + for ( ; i < len; i += g1 ) { + intPart += groupSeparator + intDigits.substr( i, g1 ); + } + + if ( g2 > 0 ) intPart += groupSeparator + intDigits.slice(i); + if (isNeg) intPart = '-' + intPart; + } + + str = fractionPart + ? intPart + FORMAT.decimalSeparator + ( ( g2 = +FORMAT.fractionGroupSize ) + ? fractionPart.replace( new RegExp( '\\d{' + g2 + '}\\B', 'g' ), + '$&' + FORMAT.fractionGroupSeparator ) + : fractionPart ) + : intPart; + } + + return str; + }; + + + /* + * Return a string array representing the value of this BigNumber as a simple fraction with + * an integer numerator and an integer denominator. The denominator will be a positive + * non-zero value less than or equal to the specified maximum denominator. If a maximum + * denominator is not specified, the denominator will be the lowest value necessary to + * represent the number exactly. + * + * [md] {number|string|BigNumber} Integer >= 1 and < Infinity. The maximum denominator. + * + * '[BigNumber Error] Argument {not an integer|out of range} : {md}' + */ + P.toFraction = function (md) { + var arr, d, d0, d1, d2, e, exp, n, n0, n1, q, s, + x = this, + xc = x.c; + + if ( md != null ) { + n = new BigNumber(md); + + if ( !n.isInteger() || n.lt(ONE) ) { + throw Error + ( bignumberError + 'Argument ' + + ( n.isInteger() ? 'out of range: ' : 'not an integer: ' ) + md ); + } + } + + if ( !xc ) return x.toString(); + + d = new BigNumber(ONE); + n1 = d0 = new BigNumber(ONE); + d1 = n0 = new BigNumber(ONE); + s = coeffToString(xc); + + // Determine initial denominator. + // d is a power of 10 and the minimum max denominator that specifies the value exactly. + e = d.e = s.length - x.e - 1; + d.c[0] = POWS_TEN[ ( exp = e % LOG_BASE ) < 0 ? LOG_BASE + exp : exp ]; + md = !md || n.comparedTo(d) > 0 ? ( e > 0 ? d : n1 ) : n; + + exp = MAX_EXP; + MAX_EXP = 1 / 0; + n = new BigNumber(s); + + // n0 = d1 = 0 + n0.c[0] = 0; + + for ( ; ; ) { + q = div( n, d, 0, 1 ); + d2 = d0.plus( q.times(d1) ); + if ( d2.comparedTo(md) == 1 ) break; + d0 = d1; + d1 = d2; + n1 = n0.plus( q.times( d2 = n1 ) ); + n0 = d2; + d = n.minus( q.times( d2 = d ) ); + n = d2; + } + + d2 = div( md.minus(d0), d1, 0, 1 ); + n0 = n0.plus( d2.times(n1) ); + d0 = d0.plus( d2.times(d1) ); + n0.s = n1.s = x.s; + e *= 2; + + // Determine which fraction is closer to x, n0/d0 or n1/d1 + arr = div( n1, d1, e, ROUNDING_MODE ).minus(x).abs().comparedTo( + div( n0, d0, e, ROUNDING_MODE ).minus(x).abs() ) < 1 + ? [ n1.toString(), d1.toString() ] + : [ n0.toString(), d0.toString() ]; + + MAX_EXP = exp; + return arr; + }; + + + /* + * Return the value of this BigNumber converted to a number primitive. + */ + P.toNumber = function () { + return +this; + }; + + + /* + * Return a BigNumber whose value is the value of this BigNumber exponentiated by n. + * + * If m is present, return the result modulo m. + * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE. + * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE. + * + * The modular power operation works efficiently when x, n, and m are positive integers, + * otherwise it is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0. + * + * n {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive. + * [m] {number|string|BigNumber} The modulus. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {n}' + * + * Performs 54 loop iterations for n of 9007199254740991. + */ + P.exponentiatedBy = P.pow = function ( n, m ) { + var i, k, y, z, + x = this; + + intCheck( n, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER ); + if ( m != null ) m = new BigNumber(m); + + if (m) { + if ( n > 1 && x.gt(ONE) && x.isInteger() && m.gt(ONE) && m.isInteger() ) { + x = x.mod(m); + } else { + z = m; + + // Nullify m so only a single mod operation is performed at the end. + m = null; + } + } else if (POW_PRECISION) { + + // Truncating each coefficient array to a length of k after each multiplication + // equates to truncating significant digits to POW_PRECISION + [28, 41], + // i.e. there will be a minimum of 28 guard digits retained. + //k = mathceil( POW_PRECISION / LOG_BASE + 1.5 ); // gives [9, 21] guard digits. + k = mathceil( POW_PRECISION / LOG_BASE + 2 ); + } + + y = new BigNumber(ONE); + + for ( i = mathfloor( n < 0 ? -n : n ); ; ) { + if ( i % 2 ) { + y = y.times(x); + if ( !y.c ) break; + if (k) { + if ( y.c.length > k ) y.c.length = k; + } else if (m) { + y = y.mod(m); + } + } + + i = mathfloor( i / 2 ); + if ( !i ) break; + x = x.times(x); + if (k) { + if ( x.c && x.c.length > k ) x.c.length = k; + } else if (m) { + x = x.mod(m); + } + } + + if (m) return y; + if ( n < 0 ) y = ONE.div(y); + + return z ? y.mod(z) : k ? round( y, POW_PRECISION, ROUNDING_MODE ) : y; + }; + + + /* + * Return a string representing the value of this BigNumber rounded to sd significant digits + * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits + * necessary to represent the integer part of the value in fixed-point notation, then use + * exponential notation. + * + * [sd] {number} Significant digits. Integer, 1 to MAX inclusive. + * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. + * + * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}' + */ + P.toPrecision = function ( sd, rm ) { + if ( sd != null ) intCheck( sd, 1, MAX ); + return format( this, sd, rm, 2 ); + }; + + + /* + * Return a string representing the value of this BigNumber in base b, or base 10 if b is + * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and + * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent + * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than + * TO_EXP_NEG, return exponential notation. + * + * [b] {number} Integer, 2 to ALPHABET.length inclusive. + * + * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}' + */ + P.toString = function (b) { + var str, + n = this, + s = n.s, + e = n.e; + + // Infinity or NaN? + if ( e === null ) { + + if (s) { + str = 'Infinity'; + if ( s < 0 ) str = '-' + str; + } else { + str = 'NaN'; + } + } else { + str = coeffToString( n.c ); + + if ( b == null ) { + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential( str, e ) + : toFixedPoint( str, e, '0' ); + } else { + intCheck( b, 2, ALPHABET.length, 'Base' ); + str = convertBase( toFixedPoint( str, e, '0' ), 10, b, s, true ); + } + + if ( s < 0 && n.c[0] ) str = '-' + str; + } + + return str; + }; + + + /* + * Return as toString, but do not accept a base argument, and include the minus sign for + * negative zero. + */ + P.valueOf = P.toJSON = function () { + var str, + n = this, + e = n.e; + + if ( e === null ) return n.toString(); + + str = coeffToString( n.c ); + + str = e <= TO_EXP_NEG || e >= TO_EXP_POS + ? toExponential( str, e ) + : toFixedPoint( str, e, '0' ); + + return n.s < 0 ? '-' + str : str; + }; + + + P._isBigNumber = true; + + if ( configObject != null ) BigNumber.set(configObject); + + return BigNumber; + } + + + // PRIVATE HELPER FUNCTIONS + + + function bitFloor(n) { + var i = n | 0; + return n > 0 || n === i ? i : i - 1; + } + + + // Return a coefficient array as a string of base 10 digits. + function coeffToString(a) { + var s, z, + i = 1, + j = a.length, + r = a[0] + ''; + + for ( ; i < j; ) { + s = a[i++] + ''; + z = LOG_BASE - s.length; + for ( ; z--; s = '0' + s ); + r += s; + } + + // Determine trailing zeros. + for ( j = r.length; r.charCodeAt(--j) === 48; ); + return r.slice( 0, j + 1 || 1 ); + } + + + // Compare the value of BigNumbers x and y. + function compare( x, y ) { + var a, b, + xc = x.c, + yc = y.c, + i = x.s, + j = y.s, + k = x.e, + l = y.e; + + // Either NaN? + if ( !i || !j ) return null; + + a = xc && !xc[0]; + b = yc && !yc[0]; + + // Either zero? + if ( a || b ) return a ? b ? 0 : -j : i; + + // Signs differ? + if ( i != j ) return i; + + a = i < 0; + b = k == l; + + // Either Infinity? + if ( !xc || !yc ) return b ? 0 : !xc ^ a ? 1 : -1; + + // Compare exponents. + if ( !b ) return k > l ^ a ? 1 : -1; + + j = ( k = xc.length ) < ( l = yc.length ) ? k : l; + + // Compare digit by digit. + for ( i = 0; i < j; i++ ) if ( xc[i] != yc[i] ) return xc[i] > yc[i] ^ a ? 1 : -1; + + // Compare lengths. + return k == l ? 0 : k > l ^ a ? 1 : -1; + } + + + /* + * Check that n is a primitive number, an integer, and in range, otherwise throw. + */ + function intCheck( n, min, max, name ) { + if ( n < min || n > max || n !== ( n < 0 ? mathceil(n) : mathfloor(n) ) ) { + throw Error + ( bignumberError + ( name || 'Argument' ) + ( typeof n == 'number' + ? n < min || n > max ? ' out of range: ' : ' not an integer: ' + : ' not a primitive number: ' ) + n ); + } + } + + + function isArray(obj) { + return Object.prototype.toString.call(obj) == '[object Array]'; + } + + + function toExponential( str, e ) { + return ( str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str ) + + ( e < 0 ? 'e' : 'e+' ) + e; + } + + + function toFixedPoint( str, e, z ) { + var len, zs; + + // Negative exponent? + if ( e < 0 ) { + + // Prepend zeros. + for ( zs = z + '.'; ++e; zs += z ); + str = zs + str; + + // Positive exponent + } else { + len = str.length; + + // Append zeros. + if ( ++e > len ) { + for ( zs = z, e -= len; --e; zs += z ); + str += zs; + } else if ( e < len ) { + str = str.slice( 0, e ) + '.' + str.slice(e); + } + } + + return str; + } + + + // EXPORT + + + BigNumber = clone(); + BigNumber['default'] = BigNumber.BigNumber = BigNumber; + + + // AMD. + if ( true ) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { return BigNumber; }).call(exports, __webpack_require__, exports, module), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + + // Node.js and other environments that support module.exports. + } else if ( typeof module != 'undefined' && module.exports ) { + module.exports = BigNumber; + + // Browser. + } else { + if ( !globalObject ) { + globalObject = typeof self != 'undefined' ? self : Function('return this')(); + } + + globalObject.BigNumber = BigNumber; + } +})(this); + + +/***/ }), +/* 69 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tweetnacl__ = __webpack_require__(573); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tweetnacl___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_tweetnacl__); +/** + * + * SCHNOR SIGNATURES + * + * + * TUTORIAL based on https://github.com/exonum/exonum-client/blob/master/src/crypto/index.js + * + * + **/ + + + +class ED25519{ + + static generatePrivateKey(fromSecret){ + + let privateKey; + if (fromSecret === undefined) privateKey = __WEBPACK_IMPORTED_MODULE_0_tweetnacl___default.a.sign.keyPair().secretKey; + else privateKey = __WEBPACK_IMPORTED_MODULE_0_tweetnacl___default.a.sign.keyPair.fromSecretKey(fromSecret).secretKey; + + if ( ! Buffer.isBuffer(privateKey) ) + privateKey = new Buffer(privateKey); + + return privateKey; + } + + static generatePublicKey(secretKey){ + + if (secretKey === null || !Buffer.isBuffer(secretKey) ) throw { message: 'privateKey must be a Buffer', secretKey: secretKey}; + + let publicKey = __WEBPACK_IMPORTED_MODULE_0_tweetnacl___default.a.sign.keyPair.fromSecretKey(secretKey).publicKey; + + if (!Buffer.isBuffer(publicKey)) + publicKey = new Buffer(publicKey); + + return publicKey; + + } + + static sign(data, secretKey){ + + if (secretKey === null || !Buffer.isBuffer(secretKey) ) throw {message: 'secretKey must be a Buffer', secretKey: secretKey}; + if (data === null || !Buffer.isBuffer(data) ) throw {message: 'data must be a Buffer', data: data}; + + let signature = __WEBPACK_IMPORTED_MODULE_0_tweetnacl___default.a.sign.detached( data, secretKey ); + + if ( !Buffer.isBuffer(signature) ) + signature = new Buffer(signature); + + + return signature; + } + + static verify(signature, data, publicKey){ + + if (signature === null || !Buffer.isBuffer(signature) ) throw {message: 'signature must be a Buffer', signature: signature}; + if (data === null || !Buffer.isBuffer(data) ) throw {message: 'data must be a Buffer', data:data}; + if (publicKey === null || !Buffer.isBuffer(publicKey) ) throw {message: 'publicKey must be a Buffer', publicKey: publicKey}; + + return __WEBPACK_IMPORTED_MODULE_0_tweetnacl___default.a.sign.detached.verify(data, signature, publicKey) + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (ED25519); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 70 */ +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__(4).Buffer +var Transform = __webpack_require__(133).Transform +var StringDecoder = __webpack_require__(178).StringDecoder +var inherits = __webpack_require__(7) + +function CipherBase (hashMode) { + Transform.call(this) + this.hashMode = typeof hashMode === 'string' + if (this.hashMode) { + this[hashMode] = this._finalOrDigest + } else { + this.final = this._finalOrDigest + } + if (this._final) { + this.__final = this._final + this._final = null + } + this._decoder = null + this._encoding = null +} +inherits(CipherBase, Transform) + +CipherBase.prototype.update = function (data, inputEnc, outputEnc) { + if (typeof data === 'string') { + data = Buffer.from(data, inputEnc) + } + + var outData = this._update(data) + if (this.hashMode) return this + + if (outputEnc) { + outData = this._toString(outData, outputEnc) + } + + return outData +} + +CipherBase.prototype.setAutoPadding = function () {} +CipherBase.prototype.getAuthTag = function () { + throw new Error('trying to get auth tag in unsupported state') +} + +CipherBase.prototype.setAuthTag = function () { + throw new Error('trying to set auth tag in unsupported state') +} + +CipherBase.prototype.setAAD = function () { + throw new Error('trying to set aad in unsupported state') +} + +CipherBase.prototype._transform = function (data, _, next) { + var err + try { + if (this.hashMode) { + this._update(data) + } else { + this.push(this._update(data)) + } + } catch (e) { + err = e + } finally { + next(err) + } +} +CipherBase.prototype._flush = function (done) { + var err + try { + this.push(this.__final()) + } catch (e) { + err = e + } + + done(err) +} +CipherBase.prototype._finalOrDigest = function (outputEnc) { + var outData = this.__final() || Buffer.alloc(0) + if (outputEnc) { + outData = this._toString(outData, outputEnc, true) + } + return outData +} + +CipherBase.prototype._toString = function (value, enc, fin) { + if (!this._decoder) { + this._decoder = new StringDecoder(enc) + this._encoding = enc + } + + if (this._encoding !== enc) throw new Error('can\'t switch encodings') + + var out = this._decoder.write(value) + if (fin) { + out += this._decoder.end() + } + + return out +} + +module.exports = CipherBase + + +/***/ }), +/* 71 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_main_blockchain_Blockchain__ = __webpack_require__(5); + + +let CLI, readline; +let termination; + + +if (false){ + readline = require('readline'); + termination = require('./../../termination').default; +} + +class AdvancedMessages{ + + constructor(){ + + if (false){ + this.WEBD_CLI = readline.createInterface({ + input: process.stdin, + output: process.stdout, + prompt: 'WEBD_CLI:> ' + }); + + this.WEBD_CLI.on("SIGINT", function () { + + termination(Blockchain); + + }); + + } + + } + + alert(param,title,type,timeout){ + + if (true) + alert(param); + else{ + + if (type==='error') console.error(param); + if (type==='warn') console.warn(param); + if (type==='info') console.log(param); + + } + + } + + + input(message){ + + if (true) + return prompt(message); + else + return this._questionCLI(message); + } + + async confirm(message){ + + if (true) + return await confirm(message); + else { + + while (1===1) { + let answer = (await this._questionCLI(message + " y/n")).toLowerCase(); + + if (answer === 'y') return true; + else if (answer === 'n') return false; + + } + + } + + } + + + async readNumber(message, isFloat = false) { + + let answer = await this.input(message); + + let num = isFloat ? parseFloat(answer) : parseInt(answer); + if (isNaN(num)) + return NaN; + + return num; + } + + + + log(cliMsg, browserMsg) { + + if (true) + console.info(browserMsg || cliMsg); + else + console.info(cliMsg); + } + + + _questionCLI(message){ + + return new Promise ((resolve)=> { + + console.info(message); + this.WEBD_CLI.question('', (answer)=>{ + resolve(answer); + }); + + }); + + } + + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new AdvancedMessages()); + +/***/ }), +/* 72 */ +/***/ (function(module, exports, __webpack_require__) { + +var BigInteger = __webpack_require__(309) + +//addons +__webpack_require__(709) + +module.exports = BigInteger + +/***/ }), +/* 73 */ +/***/ (function(module, exports) { + +module.exports = function (bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + + +/***/ }), +/* 74 */ +/***/ (function(module, exports) { + +var id = 0; +var px = Math.random(); +module.exports = function (key) { + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; + + +/***/ }), +/* 75 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = __webpack_require__(225); +var enumBugKeys = __webpack_require__(151); + +module.exports = Object.keys || function keys(O) { + return $keys(O, enumBugKeys); +}; + + +/***/ }), +/* 76 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(56); +var max = Math.max; +var min = Math.min; +module.exports = function (index, length) { + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; + + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = __webpack_require__(9); +var dPs = __webpack_require__(226); +var enumBugKeys = __webpack_require__(151); +var IE_PROTO = __webpack_require__(150)('IE_PROTO'); +var Empty = function () { /* empty */ }; +var PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function () { + // Thrash, waste and sodomy: IE GC bug + var iframe = __webpack_require__(148)('iframe'); + var i = enumBugKeys.length; + var lt = '<'; + var gt = '>'; + var iframeDocument; + iframe.style.display = 'none'; + __webpack_require__(152).appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties) { + var result; + if (O !== null) { + Empty[PROTOTYPE] = anObject(O); + result = new Empty(); + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + + +/***/ }), +/* 78 */ +/***/ (function(module, exports, __webpack_require__) { + +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = __webpack_require__(225); +var hiddenKeys = __webpack_require__(151).concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return $keys(O, hiddenKeys); +}; + + +/***/ }), +/* 79 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(10); +var dP = __webpack_require__(19); +var DESCRIPTORS = __webpack_require__(18); +var SPECIES = __webpack_require__(15)('species'); + +module.exports = function (KEY) { + var C = global[KEY]; + if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, { + configurable: true, + get: function () { return this; } + }); +}; + + +/***/ }), +/* 80 */ +/***/ (function(module, exports) { + +module.exports = function (it, Constructor, name, forbiddenField) { + if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) { + throw TypeError(name + ': incorrect invocation!'); + } return it; +}; + + +/***/ }), +/* 81 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(51); +var call = __webpack_require__(237); +var isArrayIter = __webpack_require__(164); +var anObject = __webpack_require__(9); +var toLength = __webpack_require__(20); +var getIterFn = __webpack_require__(166); +var BREAK = {}; +var RETURN = {}; +var exports = module.exports = function (iterable, entries, fn, that, ITERATOR) { + var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable); + var f = ctx(fn, that, entries ? 2 : 1); + var index = 0; + var length, step, iterator, result; + if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) { + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if (result === BREAK || result === RETURN) return result; + } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) { + result = call(iterator, f, step.value, entries); + if (result === BREAK || result === RETURN) return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; + + +/***/ }), +/* 82 */ +/***/ (function(module, exports, __webpack_require__) { + +var redefine = __webpack_require__(39); +module.exports = function (target, src, safe) { + for (var key in src) redefine(target, key, src[key], safe); + return target; +}; + + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) { + +function oldBrowser () { + throw new Error('Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11') +} + +var Buffer = __webpack_require__(4).Buffer +var crypto = global.crypto || global.msCrypto + +if (crypto && crypto.getRandomValues) { + module.exports = randomBytes +} else { + module.exports = oldBrowser +} + +function randomBytes (size, cb) { + // phantomjs needs to throw + if (size > 65536) throw new Error('requested too many random bytes') + // in case browserify isn't using the Uint8Array version + var rawBytes = new global.Uint8Array(size) + + // This will not work in older browsers. + // See https://developer.mozilla.org/en-US/docs/Web/API/window.crypto.getRandomValues + if (size > 0) { // getRandomValues fails on IE if size == 0 + crypto.getRandomValues(rawBytes) + } + + // XXX: phantomjs doesn't like a buffer being passed here + var bytes = Buffer.from(rawBytes.buffer) + + if (typeof cb === 'function') { + return process.nextTick(function () { + cb(null, bytes) + }) + } + + return bytes +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11), __webpack_require__(32))) + +/***/ }), +/* 84 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var inherits = __webpack_require__(7) +var MD5 = __webpack_require__(175) +var RIPEMD160 = __webpack_require__(179) +var sha = __webpack_require__(180) +var Base = __webpack_require__(70) + +function Hash (hash) { + Base.call(this, 'digest') + + this._hash = hash +} + +inherits(Hash, Base) + +Hash.prototype._update = function (data) { + this._hash.update(data) +} + +Hash.prototype._final = function () { + return this._hash.digest() +} + +module.exports = function createHash (alg) { + alg = alg.toLowerCase() + if (alg === 'md5') return new MD5() + if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160() + + return new Hash(sha(alg)) +} + + +/***/ }), +/* 85 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a duplex stream is just a stream that is both readable and writable. +// Since JS doesn't have multiple prototypal inheritance, this class +// prototypally inherits from Readable, and then parasitically from +// Writable. + + + +/**/ + +var pna = __webpack_require__(134); +/**/ + +/**/ +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + keys.push(key); + }return keys; +}; +/**/ + +module.exports = Duplex; + +/**/ +var util = __webpack_require__(102); +util.inherits = __webpack_require__(7); +/**/ + +var Readable = __webpack_require__(264); +var Writable = __webpack_require__(177); + +util.inherits(Duplex, Readable); + +{ + // avoid scope creep, the keys array can then be collected + var keys = objectKeys(Writable.prototype); + for (var v = 0; v < keys.length; v++) { + var method = keys[v]; + if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; + } +} + +function Duplex(options) { + if (!(this instanceof Duplex)) return new Duplex(options); + + Readable.call(this, options); + Writable.call(this, options); + + if (options && options.readable === false) this.readable = false; + + if (options && options.writable === false) this.writable = false; + + this.allowHalfOpen = true; + if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; + + this.once('end', onend); +} + +Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// the no-half-open enforcer +function onend() { + // if we allow half-open state, or if the writable side ended, + // then we're ok. + if (this.allowHalfOpen || this._writableState.ended) return; + + // no more data can be written. + // But allow more writes to happen in this tick. + pna.nextTick(onEndNT, this); +} + +function onEndNT(self) { + self.end(); +} + +Object.defineProperty(Duplex.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined || this._writableState === undefined) { + return false; + } + return this._readableState.destroyed && this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (this._readableState === undefined || this._writableState === undefined) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + this._writableState.destroyed = value; + } +}); + +Duplex.prototype._destroy = function (err, cb) { + this.push(null); + this.end(); + + pna.nextTick(cb, err); +}; + +/***/ }), +/* 86 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__utils_BufferExtended__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__WebDollar_Crypto__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_utils_Serialization__ = __webpack_require__(8); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_consts_const_global__ = __webpack_require__(2); +const BigInteger = __webpack_require__(31); + + + + + + +class WebDollarCryptoData { + + static isWebDollarCryptoData(object){ + + if (typeof object !== 'object' || object === null ) + return false; + + if (object instanceof WebDollarCryptoData) + return true; + + return false; + } + + static createWebDollarCryptoData(object, forceToCreate){ + + //console.log("createWebDollarCryptoData",object); + + //if it s WebDollarCryptoData, then return it + if (WebDollarCryptoData.isWebDollarCryptoData(object)){ + + if (forceToCreate) + return new WebDollarCryptoData( new Buffer(object.buffer), "buffer" ); + + return object; + } + + let cryptoData = new WebDollarCryptoData(object); + + if (forceToCreate && cryptoData.buffer !== null) { + cryptoData.buffer = new Buffer(cryptoData.buffer); + } + + return cryptoData; + } + + constructor (data, type){ + + this.buffer = null; + + if ((data !== null && Buffer.isBuffer(data)) || (type==="buffer")) + this.buffer = data; + else + if (type === "hex") + this.buffer = new Buffer(data, "hex"); + else + if (type === "base") + this.buffer = new Buffer(__WEBPACK_IMPORTED_MODULE_0__utils_BufferExtended__["a" /* default */].fromBase(data)); //if it is string, it must be a Base string + else + if (type === "utf-8") + this.buffer = new Buffer(data, "utf-8"); + else + if (type === "ascii" || typeof data === "string") + this.buffer = new Buffer(data, "ascii"); + else + if (type === "byte" || Array.isArray(data)) //if it is array + { + if (data.length > 0 && typeof data[0] === "object" ) + this.buffer = this.createBufferFromArray(data); + else // byte array + this.buffer = new Buffer(data); + } + else + if (type === "object" || typeof data === "object"){ + + if (data instanceof BigInteger) { + + //converting number value into a buffer + this.buffer = __WEBPACK_IMPORTED_MODULE_2_common_utils_Serialization__["a" /* default */].serializeBigInteger(data); + return; + } + + if (typeof data === 'number'){ + this.buffer = __WEBPACK_IMPORTED_MODULE_2_common_utils_Serialization__["a" /* default */].serializeNumber7Bytes(data); + return; + } + + if (data === null) + this.buffer = new Buffer ( [0] ); + else + this.buffer = this.createBufferFromArray(data); + + } + else + if (typeof data === "number"){ + + //converting number value into a buffer on 4 bytes + this.buffer = __WEBPACK_IMPORTED_MODULE_2_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes(data) + } + + } + + createBufferFromArray(data){ + + let newValue = null; + let i = 0; + + //console.log("Data", data); + + for (let property in data) { + + if (data.hasOwnProperty(property)) { + + if (i === 0) + newValue = WebDollarCryptoData.createWebDollarCryptoData( data[property], true); + else { + if (Buffer.isBuffer(data[property])) + newValue.concat( data[property], false ); + else + newValue.concat(WebDollarCryptoData.createWebDollarCryptoData(data[property], false)); + } + + //console.log("newValue", newValue); + + i++; + } + } + + if (newValue !== null) + return newValue.buffer; + else + return new Buffer( [0] ); + } + + toHex(){ + return this.buffer.toString('hex'); + } + + toString(param){ + + return this.buffer.toString(param); + } + + toBytes(){ + + let result = []; + + for (let i = 0; i < this.buffer.length; ++i) { + result.push (this.buffer[i]); + } + + return result; + } + + toUint8Array(){ + + let result = new Uint8Array(this.buffer.length); + + for (let i = 0; i < this.buffer.length; ++i) { + result[i] = this.buffer[i]; + } + + return result; + } + + toBase(){ + + return __WEBPACK_IMPORTED_MODULE_0__utils_BufferExtended__["a" /* default */].toBase(this.buffer); + } + + substr(index, count){ + return __WEBPACK_IMPORTED_MODULE_0__utils_BufferExtended__["a" /* default */].substr(this.buffer, index, count); + } + + longestMatch(cryptoData2, startIndex){ + + if (! WebDollarCryptoData.isWebDollarCryptoData(cryptoData2)) + return null; + + return __WEBPACK_IMPORTED_MODULE_0__utils_BufferExtended__["a" /* default */].longestMatch(this.buffer, cryptoData2.buffer, startIndex ); + } + + concat(data){ + + data = WebDollarCryptoData.createWebDollarCryptoData(data); + + this.buffer = Buffer.concat( [this.buffer, data.buffer] ); + + return this; + } + + + + compare(data){ + + if (!Buffer.isBuffer(data)) + data = WebDollarCryptoData.createWebDollarCryptoData(data); + + return this.buffer.compare(data.buffer) + } + + +} + +/* harmony default export */ __webpack_exports__["a"] = (WebDollarCryptoData); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 87 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var zlib = __webpack_require__(768); + +class GZip{ + + zip(buffer){ + + return zlib.deflateSync(buffer); + + } + + unzip(buffer){ + + return zlib.unzipSync(buffer); + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new GZip()); + +/***/ }), +/* 88 */ +/***/ (function(module, exports, __webpack_require__) { + +var def = __webpack_require__(19).f; +var has = __webpack_require__(42); +var TAG = __webpack_require__(15)('toStringTag'); + +module.exports = function (it, tag, stat) { + if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag }); +}; + + +/***/ }), +/* 89 */ +/***/ (function(module, exports, __webpack_require__) { + +var $export = __webpack_require__(0); +var defined = __webpack_require__(55); +var fails = __webpack_require__(13); +var spaces = __webpack_require__(154); +var space = '[' + spaces + ']'; +var non = '\u200b\u0085'; +var ltrim = RegExp('^' + space + space + '*'); +var rtrim = RegExp(space + space + '*$'); + +var exporter = function (KEY, exec, ALIAS) { + var exp = {}; + var FORCE = fails(function () { + return !!spaces[KEY]() || non[KEY]() != non; + }); + var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY]; + if (ALIAS) exp[ALIAS] = fn; + $export($export.P + $export.F * FORCE, 'String', exp); +}; + +// 1 -> String#trimLeft +// 2 -> String#trimRight +// 3 -> String#trim +var trim = exporter.trim = function (string, TYPE) { + string = String(defined(string)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; +}; + +module.exports = exporter; + + +/***/ }), +/* 90 */ +/***/ (function(module, exports) { + +module.exports = {}; + + +/***/ }), +/* 91 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(14); +module.exports = function (it, TYPE) { + if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!'); + return it; +}; + + +/***/ }), +/* 92 */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if(!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if(!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__(4).Buffer + +// prototype class for hash functions +function Hash (blockSize, finalSize) { + this._block = Buffer.alloc(blockSize) + this._finalSize = finalSize + this._blockSize = blockSize + this._len = 0 +} + +Hash.prototype.update = function (data, enc) { + if (typeof data === 'string') { + enc = enc || 'utf8' + data = Buffer.from(data, enc) + } + + var block = this._block + var blockSize = this._blockSize + var length = data.length + var accum = this._len + + for (var offset = 0; offset < length;) { + var assigned = accum % blockSize + var remainder = Math.min(length - offset, blockSize - assigned) + + for (var i = 0; i < remainder; i++) { + block[assigned + i] = data[offset + i] + } + + accum += remainder + offset += remainder + + if ((accum % blockSize) === 0) { + this._update(block) + } + } + + this._len += length + return this +} + +Hash.prototype.digest = function (enc) { + var rem = this._len % this._blockSize + + this._block[rem] = 0x80 + + // zero (rem + 1) trailing bits, where (rem + 1) is the smallest + // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize + this._block.fill(0, rem + 1) + + if (rem >= this._finalSize) { + this._update(this._block) + this._block.fill(0) + } + + var bits = this._len * 8 + + // uint32 + if (bits <= 0xffffffff) { + this._block.writeUInt32BE(bits, this._blockSize - 4) + + // uint64 + } else { + var lowBits = (bits & 0xffffffff) >>> 0 + var highBits = (bits - lowBits) / 0x100000000 + + this._block.writeUInt32BE(highBits, this._blockSize - 8) + this._block.writeUInt32BE(lowBits, this._blockSize - 4) + } + + this._update(this._block) + var hash = this._hash() + + return enc ? hash.toString(enc) : hash +} + +Hash.prototype._update = function () { + throw new Error('_update must be implemented by subclass') +} + +module.exports = Hash + + +/***/ }), +/* 94 */ +/***/ (function(module, exports, __webpack_require__) { + +var createHash = __webpack_require__(84) + +function ripemd160 (buffer) { + return createHash('rmd160').update(buffer).digest() +} + +function sha1 (buffer) { + return createHash('sha1').update(buffer).digest() +} + +function sha256 (buffer) { + return createHash('sha256').update(buffer).digest() +} + +function hash160 (buffer) { + return ripemd160(sha256(buffer)) +} + +function hash256 (buffer) { + return sha256(sha256(buffer)) +} + +module.exports = { + hash160: hash160, + hash256: hash256, + ripemd160: ripemd160, + sha1: sha1, + sha256: sha256 +} + + +/***/ }), +/* 95 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +class RevertActions { + + constructor(blockchain){ + + this.blockchain = blockchain; + this._actions = []; + + } + + push(data){ + this._actions .push(data); + } + + revertOperations(actionName='', all=''){ + + for (let i=this._actions .length-1; i>=0; i--) { + + let action = this._actions [i]; + + let done = true; + + try { + + if (action.name === "revert-updateAccount" && (actionName === '' || actionName === action.name)) { + + this.blockchain.accountantTree.updateAccount(action.address, -action.value, action.tokenId, undefined, action.showUpdate); + + } + else if (action.name === "revert-updateAccountNonce" && (actionName === '' || actionName === action.name)) { + + this.blockchain.accountantTree.updateAccountNonce(action.address, -action.nonceChange, action.tokenId, undefined, action.showUpdate); + + } + else if (action.name === "revert-skip-validation-transactions-from-values" && (actionName === '' || actionName === action.name)) { + + action.block.blockValidation.blockValidationType["skip-validation-transactions-from-values"] = !action.value; + } + else if (action.name === "block-added" && (actionName === '' || actionName === action.name)) { + + this.blockchain.blocks.spliceBlocks(action.height, true); + + if (this.blockchain.agent.light) { + this.blockchain.lightPrevHashPrevs.splice(action.height); + this.blockchain.lightPrevTimeStamps.splice(action.height); + this.blockchain.lightPrevDifficultyTargets.splice(action.height); + + this.blockchain.lightPrevHashPrevs[action.height] = this.blockchain.blocks[action.height-1].hash; + this.blockchain.lightPrevTimeStamps[action.height] = this.blockchain.blocks[action.height-1].timeStamp; + this.blockchain.lightPrevDifficultyTargets[action.height] = this.blockchain.blocks[action.height-1].difficultyTarget; + + } + + } else if (action.name === "breakpoint" && (actionName === '' || actionName === action.name)) { + + this._actions.splice(i, 1); + + if (all !== 'all') + break; + + } + else done = false; + + } catch (exception){ + console.error("#################################################") + console.error("#################################################") + console.error("revertOperations raised an error",exception) + console.error("#################################################") + console.error("#################################################") + } + + if (done === true){ + action.name = ''; + this._actions.splice(i,1); + } + + } + + + } + + clearUntilBreakpoint(){ + + for (let i=this._actions .length-1; i>=0; i--) { + + let action = this._actions[i]; + + if (action.name === "breakpoint") { + + this._actions.splice(i); + return; + + } + + } + + this._actions = []; + + } + + destroyRevertActions(){ + + this.blockchain = undefined; + this._actions = []; + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (RevertActions); + +/***/ }), +/* 96 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_main_blockchain_Blockchain__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__extend_socket_Node_Protocol__ = __webpack_require__(111); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__ = __webpack_require__(34); + + + + + + +const INTERVAL_PROPAGATION = 300; + +class NodeBlockchainPropagation{ + + constructor(){ + + this._blockPropagating = undefined; + this._socketsAlreadyBroadcast = []; + this._socketsPropagating = []; + + //make sure we delete their references + __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/disconnected", (nodeListObject) => { + + for (let i=this._socketsAlreadyBroadcast.length-1; i>=0; i--) + if (this._socketsAlreadyBroadcast[i] === nodeListObject.socket) + this._socketsAlreadyBroadcast.slice(i,1); + + for (let i=this._socketsPropagating.length-1; i>=0; i--) + if (this._socketsPropagating[i] === nodeListObject.socket) + this._socketsPropagating.slice(i,1); + + }); + + setTimeout( this.processPropagation.bind(this), INTERVAL_PROPAGATION); + + //remove disconnected sockets + setInterval( this._deleteDisconenctedSockets.bind(this), 20000) + } + + propagateBlock(block, socketsAvoidBroadcast){ + + //verifiy if I am propagating a better block + if (this._blockPropagating !== undefined && this._blockPropagating === block) return; + + if ( socketsAvoidBroadcast === "all") return; + + this._socketsAlreadyBroadcast = []; + + if (socketsAvoidBroadcast !== undefined && socketsAvoidBroadcast !== "all") { + + if (! Array.isArray(socketsAvoidBroadcast) ) + socketsAvoidBroadcast = [socketsAvoidBroadcast]; + + //avoid sending to those sockets + for (let i=0; i < __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes.length; i++) + if ( __WEBPACK_IMPORTED_MODULE_0_main_blockchain_Blockchain__["a" /* default */].isPoolActivated && ( [__WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_MINER_POOL, __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER_FOR_MINER].indexOf(__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket.node.protocol.nodeConsensusType) >= 0 )) + socketsAvoidBroadcast.push(__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket); + + this._socketsAlreadyBroadcast = socketsAvoidBroadcast; + + } + + this._blockPropagating = block; + + } + + propagateLastBlockFast(suspendOtherBlocks = true){ + + if (suspendOtherBlocks) { + this._blockPropagating = undefined; + this._socketsPropagating = []; + this._socketsAlreadyBroadcast = []; + } + + //sending the block, except poolMiners + for (let i=0; i < __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes.length; i++) + if ( !__WEBPACK_IMPORTED_MODULE_0_main_blockchain_Blockchain__["a" /* default */].isPoolActivated || ( [__WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_MINER_POOL, __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER_FOR_MINER].indexOf(__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket.node.protocol.nodeConsensusType) < 0 )) + __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket.node.protocol.sendLastBlock(); + + } + + processPropagation() { + + let block = this._blockPropagating; + + if (block === undefined){ + setTimeout( this.processPropagation.bind(this), INTERVAL_PROPAGATION ); + return true; + } + + if (this._socketsPropagating.length < __WEBPACK_IMPORTED_MODULE_1_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.SOCKETS_TO_PROPAGATE_NEW_BLOCK_TIP) { + + let list = []; + for (let i=0; i<__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes.length; i++) + if (!this._findSocket(__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket)) + list.push(__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket); + + + while ( list.length > 0 && this._socketsPropagating.length < __WEBPACK_IMPORTED_MODULE_1_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.SOCKETS_TO_PROPAGATE_NEW_BLOCK_TIP ) { + + let index = Math.floor( Math.random() * list.length ); + + let socket = list[index]; + list.splice(index,1); + + this._socketsPropagating.push(socket); + + //let send the block, but once we receive any kind of confirmation, we need to delete it from the socketsWaitlist + socket.node.protocol.sendLastBlock(); + + setTimeout(()=>{ + + if (block === this._blockPropagating){ + + if (socket.disconnected) + return; + + this._socketsAlreadyBroadcast.push(socket); + } + + //delete it from the list + for (let i=this._socketsPropagating.length; i>=0; i-- ) + if (this._socketsPropagating[i] === socket) + this._socketsPropagating.splice(i,1); + + }, 100 + Math.random()*200 ); + + } + + + } + + setTimeout( this.processPropagation.bind(this), INTERVAL_PROPAGATION ); + + } + + + _findSocket(socket) { + + for (let i=0; i=0; i--) + if (this._socketsAlreadyBroadcast[i].disconnected) + this._socketsAlreadyBroadcast.splice(i,1); + + for (let i=this._socketsPropagating.length-1; i>=0; i--) + if (this._socketsPropagating[i].disconnected) + this._socketsPropagating.splice(i,1); + + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new NodeBlockchainPropagation()); + +/***/ }), +/* 97 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** + * Module dependencies. + */ + +var keys = __webpack_require__(820); +var hasBinary = __webpack_require__(349); +var sliceBuffer = __webpack_require__(822); +var after = __webpack_require__(823); +var utf8 = __webpack_require__(824); + +var base64encoder; +if (global && global.ArrayBuffer) { + base64encoder = __webpack_require__(825); +} + +/** + * Check if we are running an android browser. That requires us to use + * ArrayBuffer with polling transports... + * + * http://ghinda.net/jpeg-blob-ajax-android/ + */ + +var isAndroid = typeof navigator !== 'undefined' && /Android/i.test(navigator.userAgent); + +/** + * Check if we are running in PhantomJS. + * Uploading a Blob with PhantomJS does not work correctly, as reported here: + * https://github.com/ariya/phantomjs/issues/11395 + * @type boolean + */ +var isPhantomJS = typeof navigator !== 'undefined' && /PhantomJS/i.test(navigator.userAgent); + +/** + * When true, avoids using Blobs to encode payloads. + * @type boolean + */ +var dontSendBlobs = isAndroid || isPhantomJS; + +/** + * Current protocol version. + */ + +exports.protocol = 3; + +/** + * Packet types. + */ + +var packets = exports.packets = { + open: 0 // non-ws + , close: 1 // non-ws + , ping: 2 + , pong: 3 + , message: 4 + , upgrade: 5 + , noop: 6 +}; + +var packetslist = keys(packets); + +/** + * Premade error packet. + */ + +var err = { type: 'error', data: 'parser error' }; + +/** + * Create a blob api even for blob builder when vendor prefixes exist + */ + +var Blob = __webpack_require__(826); + +/** + * Encodes a packet. + * + * [ ] + * + * Example: + * + * 5hello world + * 3 + * 4 + * + * Binary is encoded in an identical principle + * + * @api private + */ + +exports.encodePacket = function (packet, supportsBinary, utf8encode, callback) { + if ('function' == typeof supportsBinary) { + callback = supportsBinary; + supportsBinary = false; + } + + if ('function' == typeof utf8encode) { + callback = utf8encode; + utf8encode = null; + } + + var data = (packet.data === undefined) + ? undefined + : packet.data.buffer || packet.data; + + if (global.ArrayBuffer && data instanceof ArrayBuffer) { + return encodeArrayBuffer(packet, supportsBinary, callback); + } else if (Blob && data instanceof global.Blob) { + return encodeBlob(packet, supportsBinary, callback); + } + + // might be an object with { base64: true, data: dataAsBase64String } + if (data && data.base64) { + return encodeBase64Object(packet, callback); + } + + // Sending data as a utf-8 string + var encoded = packets[packet.type]; + + // data fragment is optional + if (undefined !== packet.data) { + encoded += utf8encode ? utf8.encode(String(packet.data)) : String(packet.data); + } + + return callback('' + encoded); + +}; + +function encodeBase64Object(packet, callback) { + // packet data is an object { base64: true, data: dataAsBase64String } + var message = 'b' + exports.packets[packet.type] + packet.data.data; + return callback(message); +} + +/** + * Encode packet helpers for binary types + */ + +function encodeArrayBuffer(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + var data = packet.data; + var contentArray = new Uint8Array(data); + var resultBuffer = new Uint8Array(1 + data.byteLength); + + resultBuffer[0] = packets[packet.type]; + for (var i = 0; i < contentArray.length; i++) { + resultBuffer[i+1] = contentArray[i]; + } + + return callback(resultBuffer.buffer); +} + +function encodeBlobAsArrayBuffer(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + var fr = new FileReader(); + fr.onload = function() { + packet.data = fr.result; + exports.encodePacket(packet, supportsBinary, true, callback); + }; + return fr.readAsArrayBuffer(packet.data); +} + +function encodeBlob(packet, supportsBinary, callback) { + if (!supportsBinary) { + return exports.encodeBase64Packet(packet, callback); + } + + if (dontSendBlobs) { + return encodeBlobAsArrayBuffer(packet, supportsBinary, callback); + } + + var length = new Uint8Array(1); + length[0] = packets[packet.type]; + var blob = new Blob([length.buffer, packet.data]); + + return callback(blob); +} + +/** + * Encodes a packet with binary data in a base64 string + * + * @param {Object} packet, has `type` and `data` + * @return {String} base64 encoded message + */ + +exports.encodeBase64Packet = function(packet, callback) { + var message = 'b' + exports.packets[packet.type]; + if (Blob && packet.data instanceof global.Blob) { + var fr = new FileReader(); + fr.onload = function() { + var b64 = fr.result.split(',')[1]; + callback(message + b64); + }; + return fr.readAsDataURL(packet.data); + } + + var b64data; + try { + b64data = String.fromCharCode.apply(null, new Uint8Array(packet.data)); + } catch (e) { + // iPhone Safari doesn't let you apply with typed arrays + var typed = new Uint8Array(packet.data); + var basic = new Array(typed.length); + for (var i = 0; i < typed.length; i++) { + basic[i] = typed[i]; + } + b64data = String.fromCharCode.apply(null, basic); + } + message += global.btoa(b64data); + return callback(message); +}; + +/** + * Decodes a packet. Changes format to Blob if requested. + * + * @return {Object} with `type` and `data` (if any) + * @api private + */ + +exports.decodePacket = function (data, binaryType, utf8decode) { + if (data === undefined) { + return err; + } + // String data + if (typeof data == 'string') { + if (data.charAt(0) == 'b') { + return exports.decodeBase64Packet(data.substr(1), binaryType); + } + + if (utf8decode) { + data = tryDecode(data); + if (data === false) { + return err; + } + } + var type = data.charAt(0); + + if (Number(type) != type || !packetslist[type]) { + return err; + } + + if (data.length > 1) { + return { type: packetslist[type], data: data.substring(1) }; + } else { + return { type: packetslist[type] }; + } + } + + var asArray = new Uint8Array(data); + var type = asArray[0]; + var rest = sliceBuffer(data, 1); + if (Blob && binaryType === 'blob') { + rest = new Blob([rest]); + } + return { type: packetslist[type], data: rest }; +}; + +function tryDecode(data) { + try { + data = utf8.decode(data); + } catch (e) { + return false; + } + return data; +} + +/** + * Decodes a packet encoded in a base64 string + * + * @param {String} base64 encoded message + * @return {Object} with `type` and `data` (if any) + */ + +exports.decodeBase64Packet = function(msg, binaryType) { + var type = packetslist[msg.charAt(0)]; + if (!base64encoder) { + return { type: type, data: { base64: true, data: msg.substr(1) } }; + } + + var data = base64encoder.decode(msg.substr(1)); + + if (binaryType === 'blob' && Blob) { + data = new Blob([data]); + } + + return { type: type, data: data }; +}; + +/** + * Encodes multiple messages (payload). + * + * :data + * + * Example: + * + * 11:hello world2:hi + * + * If any contents are binary, they will be encoded as base64 strings. Base64 + * encoded strings are marked with a b before the length specifier + * + * @param {Array} packets + * @api private + */ + +exports.encodePayload = function (packets, supportsBinary, callback) { + if (typeof supportsBinary == 'function') { + callback = supportsBinary; + supportsBinary = null; + } + + var isBinary = hasBinary(packets); + + if (supportsBinary && isBinary) { + if (Blob && !dontSendBlobs) { + return exports.encodePayloadAsBlob(packets, callback); + } + + return exports.encodePayloadAsArrayBuffer(packets, callback); + } + + if (!packets.length) { + return callback('0:'); + } + + function setLengthHeader(message) { + return message.length + ':' + message; + } + + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, !isBinary ? false : supportsBinary, true, function(message) { + doneCallback(null, setLengthHeader(message)); + }); + } + + map(packets, encodeOne, function(err, results) { + return callback(results.join('')); + }); +}; + +/** + * Async array map using after + */ + +function map(ary, each, done) { + var result = new Array(ary.length); + var next = after(ary.length, done); + + var eachWithIndex = function(i, el, cb) { + each(el, function(error, msg) { + result[i] = msg; + cb(error, result); + }); + }; + + for (var i = 0; i < ary.length; i++) { + eachWithIndex(i, ary[i], next); + } +} + +/* + * Decodes data when a payload is maybe expected. Possible binary contents are + * decoded from their base64 representation + * + * @param {String} data, callback method + * @api public + */ + +exports.decodePayload = function (data, binaryType, callback) { + if (typeof data != 'string') { + return exports.decodePayloadAsBinary(data, binaryType, callback); + } + + if (typeof binaryType === 'function') { + callback = binaryType; + binaryType = null; + } + + var packet; + if (data == '') { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + var length = '' + , n, msg; + + for (var i = 0, l = data.length; i < l; i++) { + var chr = data.charAt(i); + + if (':' != chr) { + length += chr; + } else { + if ('' == length || (length != (n = Number(length)))) { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + msg = data.substr(i + 1, n); + + if (length != msg.length) { + // parser error - ignoring payload + return callback(err, 0, 1); + } + + if (msg.length) { + packet = exports.decodePacket(msg, binaryType, true); + + if (err.type == packet.type && err.data == packet.data) { + // parser error in individual packet - ignoring payload + return callback(err, 0, 1); + } + + var ret = callback(packet, i + n, l); + if (false === ret) return; + } + + // advance cursor + i += n; + length = ''; + } + } + + if (length != '') { + // parser error - ignoring payload + return callback(err, 0, 1); + } + +}; + +/** + * Encodes multiple messages (payload) as binary. + * + * <1 = binary, 0 = string>[...] + * + * Example: + * 1 3 255 1 2 3, if the binary contents are interpreted as 8 bit integers + * + * @param {Array} packets + * @return {ArrayBuffer} encoded payload + * @api private + */ + +exports.encodePayloadAsArrayBuffer = function(packets, callback) { + if (!packets.length) { + return callback(new ArrayBuffer(0)); + } + + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, true, true, function(data) { + return doneCallback(null, data); + }); + } + + map(packets, encodeOne, function(err, encodedPackets) { + var totalLength = encodedPackets.reduce(function(acc, p) { + var len; + if (typeof p === 'string'){ + len = p.length; + } else { + len = p.byteLength; + } + return acc + len.toString().length + len + 2; // string/binary identifier + separator = 2 + }, 0); + + var resultArray = new Uint8Array(totalLength); + + var bufferIndex = 0; + encodedPackets.forEach(function(p) { + var isString = typeof p === 'string'; + var ab = p; + if (isString) { + var view = new Uint8Array(p.length); + for (var i = 0; i < p.length; i++) { + view[i] = p.charCodeAt(i); + } + ab = view.buffer; + } + + if (isString) { // not true binary + resultArray[bufferIndex++] = 0; + } else { // true binary + resultArray[bufferIndex++] = 1; + } + + var lenStr = ab.byteLength.toString(); + for (var i = 0; i < lenStr.length; i++) { + resultArray[bufferIndex++] = parseInt(lenStr[i]); + } + resultArray[bufferIndex++] = 255; + + var view = new Uint8Array(ab); + for (var i = 0; i < view.length; i++) { + resultArray[bufferIndex++] = view[i]; + } + }); + + return callback(resultArray.buffer); + }); +}; + +/** + * Encode as Blob + */ + +exports.encodePayloadAsBlob = function(packets, callback) { + function encodeOne(packet, doneCallback) { + exports.encodePacket(packet, true, true, function(encoded) { + var binaryIdentifier = new Uint8Array(1); + binaryIdentifier[0] = 1; + if (typeof encoded === 'string') { + var view = new Uint8Array(encoded.length); + for (var i = 0; i < encoded.length; i++) { + view[i] = encoded.charCodeAt(i); + } + encoded = view.buffer; + binaryIdentifier[0] = 0; + } + + var len = (encoded instanceof ArrayBuffer) + ? encoded.byteLength + : encoded.size; + + var lenStr = len.toString(); + var lengthAry = new Uint8Array(lenStr.length + 1); + for (var i = 0; i < lenStr.length; i++) { + lengthAry[i] = parseInt(lenStr[i]); + } + lengthAry[lenStr.length] = 255; + + if (Blob) { + var blob = new Blob([binaryIdentifier.buffer, lengthAry.buffer, encoded]); + doneCallback(null, blob); + } + }); + } + + map(packets, encodeOne, function(err, results) { + return callback(new Blob(results)); + }); +}; + +/* + * Decodes data when a payload is maybe expected. Strings are decoded by + * interpreting each byte as a key code for entries marked to start with 0. See + * description of encodePayloadAsBinary + * + * @param {ArrayBuffer} data, callback method + * @api public + */ + +exports.decodePayloadAsBinary = function (data, binaryType, callback) { + if (typeof binaryType === 'function') { + callback = binaryType; + binaryType = null; + } + + var bufferTail = data; + var buffers = []; + + var numberTooLong = false; + while (bufferTail.byteLength > 0) { + var tailArray = new Uint8Array(bufferTail); + var isString = tailArray[0] === 0; + var msgLength = ''; + + for (var i = 1; ; i++) { + if (tailArray[i] == 255) break; + + if (msgLength.length > 310) { + numberTooLong = true; + break; + } + + msgLength += tailArray[i]; + } + + if(numberTooLong) return callback(err, 0, 1); + + bufferTail = sliceBuffer(bufferTail, 2 + msgLength.length); + msgLength = parseInt(msgLength); + + var msg = sliceBuffer(bufferTail, 0, msgLength); + if (isString) { + try { + msg = String.fromCharCode.apply(null, new Uint8Array(msg)); + } catch (e) { + // iPhone Safari doesn't let you apply to typed arrays + var typed = new Uint8Array(msg); + msg = ''; + for (var i = 0; i < typed.length; i++) { + msg += String.fromCharCode(typed[i]); + } + } + } + + buffers.push(msg); + bufferTail = sliceBuffer(bufferTail, msgLength); + } + + var total = buffers.length; + buffers.forEach(function(buffer, i) { + callback(exports.decodePacket(buffer, binaryType, true), i, total); + }); +}; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11))) + +/***/ }), +/* 98 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_utils_helpers_Utils__ = __webpack_require__(61); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__ = __webpack_require__(34); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__blockchain_interface_blockchain_addresses_Interface_Blockchain_Address_Helper__ = __webpack_require__(17); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__sockets_protocol_extend_socket_Socket_Address__ = __webpack_require__(64); + + + + + + + + + +const sanitizer = __webpack_require__(361); + +class PoolsUtils { + + constructor(){ + this.servers = []; + } + + validatePoolName(poolName){ + + if (typeof poolName !== "string") throw {message: "pool name is not a string"}; + if (poolName !=='' && ! /^[_\-A-Za-z\d\s]+$/.test(poolName)) throw {message: "pool name is invalid"}; + + } + + validatePoolFee(poolFee){ + if ( typeof poolFee !== "number") throw {message: "pool fee is invalid"}; + if ( poolFee < 0 && poolFee > 1 ) throw {message: "pool fee is invalid"}; + } + + validatePoolWebsite(poolWebsite){ + if (typeof poolWebsite !== "string") throw {message: "pool website is not a string"}; + if (poolWebsite !== '' && ! __WEBPACK_IMPORTED_MODULE_0_common_utils_helpers_Utils__["a" /* default */].validateUrl(poolWebsite)) throw {message:"pool website is invalid"}; + } + + validatePoolPublicKey(poolPublicKey){ + if (!Buffer.isBuffer(poolPublicKey) || poolPublicKey.length !== __WEBPACK_IMPORTED_MODULE_5_consts_const_global__["a" /* default */].ADDRESSES.PUBLIC_KEY.LENGTH) throw {message: "pool publicKey is not valid"}; + } + + validatePoolServers(poolServers){ + poolServers = this.processServersList( poolServers ); + + if (!Array.isArray(poolServers)) throw {message: "pool servers is not an array"}; + if (poolServers.length <= 0) throw {message: "pool servers is empty"}; + + } + + validatePoolActivated( poolActivated = false){ + if (typeof poolActivated !== "boolean") throw {message: "poolActivated is not a boolean"}; + } + + validatePoolsDetails(poolName, poolFee, poolWebsite, poolAddress, poolPublicKey, poolServers, poolActivated = false, poolReferralFee = 0){ + + this.validatePoolName(poolName); + this.validatePoolFee(poolFee); + this.validatePoolWebsite(poolWebsite); + this.validatePoolPublicKey(poolPublicKey); + this.validatePoolServers(poolServers); + this.validatePoolActivated(poolActivated); + this.validatePoolFee(poolReferralFee); + + if (poolAddress !== undefined) + if (__WEBPACK_IMPORTED_MODULE_6__blockchain_interface_blockchain_addresses_Interface_Blockchain_Address_Helper__["a" /* default */].getUnencodedAddressFromWIF(poolAddress) === null) throw {message: "poolAddress is invalid"}; + + return true; + } + + async insertServersListWaitlist(serversListArray, nodeConsensusType = __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER_FOR_POOL ){ + + if (!Array.isArray(serversListArray) || serversListArray.length === 0) return false; + + __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].deleteWaitlistByConsensusNode(__WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER); + __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].deleteWaitlistByConsensusNode(nodeConsensusType); + + //disconnect all nodes + + for (let i=0; i<__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes.length; i++) + if ( __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket.node.protocol.nodeConsensusType === __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER || __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket.node.protocol.nodeConsensusType === nodeConsensusType ) + __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[i].socket.node.protocol._checked = false; + + + //Add new Waitlist + + for (let i=0; i=0; j--) { + + if (__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[j].socket.node.protocol.nodeConsensusType === __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_SERVER || __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[j].socket.node.protocol.nodeConsensusType === nodeConsensusType && !__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[j].socket.node.protocol._checked) { + __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[j].socket.disconnect(); + __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes.splice(j, 1); + } else + delete __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].nodes[j].socket.node.protocol._checked; + } + + } + + processServersList(serversList){ + + if (typeof serversList === "string") serversList = serversList.split(/[\s,]+/); + + if (!Array.isArray(serversList)) throw {message: "serversList is not array"}; + + for (let i=serversList.length-1; i>=0; i--){ + + serversList[i] = serversList[i].replace(/\s+/, ""); + if (serversList[i] === ''){ + + if (serversList.length === 1) + serversList = []; + else + serversList.splice(i,1); + } + + } + + for (let i=0; i= 0 ? url.substr(url.indexOf( "/" )+1) : ''; + } + + extractPoolURL(url){ + + if ( url === null || url === "" || url === undefined ) return null; + + url = sanitizer.sanitize(url); + + let object = __WEBPACK_IMPORTED_MODULE_0_common_utils_helpers_Utils__["a" /* default */].getLocation(url); + if (object !== null) + url = object.pathname; + + if (url.indexOf("/pool/") === 0) url = url.replace("/pool/",""); + if (url.indexOf("pool/") === 0) url = url.replace("pool/",""); + + let poolURL = url; + + let version = this.substr(url); + url = this.substrNext(url); + + if (version !== "") version = parseInt(version); + + let poolName = this.substr(url) ; + poolName = decodeURIComponent(poolName); + url = this.substrNext(url); + + let poolFee = parseFloat( this.substr(url) ); + url = this.substrNext(url); + + let poolAddress; + + if (version === 0) { + poolAddress = this.substr(url); + poolAddress = poolAddress.replace(/%23/g,"#"); + + url = this.substrNext(url); + } + + let poolPublicKey = this.substr(url); + url = this.substrNext(url); + + poolPublicKey = new Buffer(poolPublicKey, "hex"); + + let poolWebsite = ''; + + if (version === 0) { + poolWebsite = this.substr(url).replace(/\$/g, '/'); + url = url.substr(url.indexOf("/") + 1); + } + + let poolServers = this.substr(url).replace(/\$/g, '/' ).split(";") ; + url = this.substrNext(url); + + let poolReferral = ''; + let ref = this.substr(url); + if (ref === "r"){ + + url = this.substrNext(url); + + poolReferral = this.substr(url); + poolReferral = poolReferral.replace(/%23/g,"#"); + + url = this.substrNext(url); + } + + + if (!this.validatePoolsDetails(poolName, poolFee, poolWebsite, poolAddress, poolPublicKey, poolServers)) throw {message: "validate pools "}; + + return { + poolVersion: version, + poolName: poolName, + poolFee: poolFee, + poolWebsite: poolWebsite, + poolServers: poolServers, + poolAddress: poolAddress, + poolPublicKey: poolPublicKey, + poolURL: poolURL, + poolReferral: poolReferral, + }; + + } + + getPoolServersStatus(poolServers){ + + try { + if (typeof poolServers === "string") poolServers = this.processServersList(poolServers); + } catch (exception){ + return {} + } + + let result = {}; + + for (let i=0; i= 0, + nodeConsensusType: nodeConsensusType, + + }; + + } + + return result; + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new PoolsUtils()); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 99 */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = __webpack_require__(52); +// eslint-disable-next-line no-prototype-builtins +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) { + return cof(it) == 'String' ? it.split('') : Object(it); +}; + + +/***/ }), +/* 100 */ +/***/ (function(module, exports) { + +exports.f = {}.propertyIsEnumerable; + + +/***/ }), +/* 101 */ +/***/ (function(module, exports, __webpack_require__) { + +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = __webpack_require__(52); +var TAG = __webpack_require__(15)('toStringTag'); +// ES3 wrong here +var ARG = cof(function () { return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function (it, key) { + try { + return it[key]; + } catch (e) { /* empty */ } +}; + +module.exports = function (it) { + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; + + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. + +function isArray(arg) { + if (Array.isArray) { + return Array.isArray(arg); + } + return objectToString(arg) === '[object Array]'; +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = Buffer.isBuffer; + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 103 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {module.exports = function xor (a, b) { + var length = Math.min(a.length, b.length) + var buffer = new Buffer(length) + + for (var i = 0; i < length; ++i) { + buffer[i] = a[i] ^ b[i] + } + + return buffer +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 104 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(59); +var assert = __webpack_require__(47); + +function BlockHash() { + this.pending = null; + this.pendingTotal = 0; + this.blockSize = this.constructor.blockSize; + this.outSize = this.constructor.outSize; + this.hmacStrength = this.constructor.hmacStrength; + this.padLength = this.constructor.padLength / 8; + this.endian = 'big'; + + this._delta8 = this.blockSize / 8; + this._delta32 = this.blockSize / 32; +} +exports.BlockHash = BlockHash; + +BlockHash.prototype.update = function update(msg, enc) { + // Convert message to array, pad it, and join into 32bit blocks + msg = utils.toArray(msg, enc); + if (!this.pending) + this.pending = msg; + else + this.pending = this.pending.concat(msg); + this.pendingTotal += msg.length; + + // Enough data, try updating + if (this.pending.length >= this._delta8) { + msg = this.pending; + + // Process pending data in blocks + var r = msg.length % this._delta8; + this.pending = msg.slice(msg.length - r, msg.length); + if (this.pending.length === 0) + this.pending = null; + + msg = utils.join32(msg, 0, msg.length - r, this.endian); + for (var i = 0; i < msg.length; i += this._delta32) + this._update(msg, i, i + this._delta32); + } + + return this; +}; + +BlockHash.prototype.digest = function digest(enc) { + this.update(this._pad()); + assert(this.pending === null); + + return this._digest(enc); +}; + +BlockHash.prototype._pad = function pad() { + var len = this.pendingTotal; + var bytes = this._delta8; + var k = bytes - ((len + this.padLength) % bytes); + var res = new Array(k + this.padLength); + res[0] = 0x80; + for (var i = 1; i < k; i++) + res[i] = 0; + + // Append length + len <<= 3; + if (this.endian === 'big') { + for (var t = 8; t < this.padLength; t++) + res[i++] = 0; + + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = (len >>> 24) & 0xff; + res[i++] = (len >>> 16) & 0xff; + res[i++] = (len >>> 8) & 0xff; + res[i++] = len & 0xff; + } else { + res[i++] = len & 0xff; + res[i++] = (len >>> 8) & 0xff; + res[i++] = (len >>> 16) & 0xff; + res[i++] = (len >>> 24) & 0xff; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + res[i++] = 0; + + for (t = 8; t < this.padLength; t++) + res[i++] = 0; + } + + return res; +}; + + +/***/ }), +/* 105 */ +/***/ (function(module, exports, __webpack_require__) { + +var asn1 = exports; + +asn1.bignum = __webpack_require__(22); + +asn1.define = __webpack_require__(642).define; +asn1.base = __webpack_require__(106); +asn1.constants = __webpack_require__(289); +asn1.decoders = __webpack_require__(647); +asn1.encoders = __webpack_require__(649); + + +/***/ }), +/* 106 */ +/***/ (function(module, exports, __webpack_require__) { + +var base = exports; + +base.Reporter = __webpack_require__(644).Reporter; +base.DecoderBuffer = __webpack_require__(288).DecoderBuffer; +base.EncoderBuffer = __webpack_require__(288).EncoderBuffer; +base.Node = __webpack_require__(645); + + +/***/ }), +/* 107 */ +/***/ (function(module, exports) { + +// https://en.bitcoin.it/wiki/List_of_address_prefixes +// Dogecoin BIP32 is a proposed standard: https://bitcointalk.org/index.php?topic=409731 + +module.exports = { + bitcoin: { + messagePrefix: '\x18Bitcoin Signed Message:\n', + bech32: 'bc', + bip32: { + public: 0x0488b21e, + private: 0x0488ade4 + }, + pubKeyHash: 0x00, + scriptHash: 0x05, + wif: 0x80 + }, + testnet: { + messagePrefix: '\x18Bitcoin Signed Message:\n', + bech32: 'tb', + bip32: { + public: 0x043587cf, + private: 0x04358394 + }, + pubKeyHash: 0x6f, + scriptHash: 0xc4, + wif: 0xef + }, + litecoin: { + messagePrefix: '\x19Litecoin Signed Message:\n', + bip32: { + public: 0x019da462, + private: 0x019d9cfe + }, + pubKeyHash: 0x30, + scriptHash: 0x32, + wif: 0xb0 + } +} + + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { + +// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js +// original notice: + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +function compare(a, b) { + if (a === b) { + return 0; + } + + var x = a.length; + var y = b.length; + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i]; + y = b[i]; + break; + } + } + + if (x < y) { + return -1; + } + if (y < x) { + return 1; + } + return 0; +} +function isBuffer(b) { + if (global.Buffer && typeof global.Buffer.isBuffer === 'function') { + return global.Buffer.isBuffer(b); + } + return !!(b != null && b._isBuffer); +} + +// based on node assert, original notice: + +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +var util = __webpack_require__(310); +var hasOwn = Object.prototype.hasOwnProperty; +var pSlice = Array.prototype.slice; +var functionsHaveNames = (function () { + return function foo() {}.name === 'foo'; +}()); +function pToString (obj) { + return Object.prototype.toString.call(obj); +} +function isView(arrbuf) { + if (isBuffer(arrbuf)) { + return false; + } + if (typeof global.ArrayBuffer !== 'function') { + return false; + } + if (typeof ArrayBuffer.isView === 'function') { + return ArrayBuffer.isView(arrbuf); + } + if (!arrbuf) { + return false; + } + if (arrbuf instanceof DataView) { + return true; + } + if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) { + return true; + } + return false; +} +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +var regex = /\s*function\s+([^\(\s]*)\s*/; +// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js +function getName(func) { + if (!util.isFunction(func)) { + return; + } + if (functionsHaveNames) { + return func.name; + } + var str = func.toString(); + var match = str.match(regex); + return match && match[1]; +} +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = getName(stackStartFunction); + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function truncate(s, n) { + if (typeof s === 'string') { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} +function inspect(something) { + if (functionsHaveNames || !util.isFunction(something)) { + return util.inspect(something); + } + var rawname = getName(something); + var name = rawname ? ': ' + rawname : ''; + return '[Function' + name + ']'; +} +function getMessage(self) { + return truncate(inspect(self.actual), 128) + ' ' + + self.operator + ' ' + + truncate(inspect(self.expected), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) { + if (!_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual); + } +}; + +function _deepEqual(actual, expected, strict, memos) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + } else if (isBuffer(actual) && isBuffer(expected)) { + return compare(actual, expected) === 0; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if ((actual === null || typeof actual !== 'object') && + (expected === null || typeof expected !== 'object')) { + return strict ? actual === expected : actual == expected; + + // If both values are instances of typed arrays, wrap their underlying + // ArrayBuffers in a Buffer each to increase performance + // This optimization requires the arrays to have the same type as checked by + // Object.prototype.toString (aka pToString). Never perform binary + // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their + // bit patterns are not identical. + } else if (isView(actual) && isView(expected) && + pToString(actual) === pToString(expected) && + !(actual instanceof Float32Array || + actual instanceof Float64Array)) { + return compare(new Uint8Array(actual.buffer), + new Uint8Array(expected.buffer)) === 0; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else if (isBuffer(actual) !== isBuffer(expected)) { + return false; + } else { + memos = memos || {actual: [], expected: []}; + + var actualIndex = memos.actual.indexOf(actual); + if (actualIndex !== -1) { + if (actualIndex === memos.expected.indexOf(expected)) { + return true; + } + } + + memos.actual.push(actual); + memos.expected.push(expected); + + return objEquiv(actual, expected, strict, memos); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b, strict, actualVisitedObjects) { + if (a === null || a === undefined || b === null || b === undefined) + return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) + return a === b; + if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) + return false; + var aIsArgs = isArguments(a); + var bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b, strict); + } + var ka = objectKeys(a); + var kb = objectKeys(b); + var key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length !== kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] !== kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) + return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected, false)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +assert.notDeepStrictEqual = notDeepStrictEqual; +function notDeepStrictEqual(actual, expected, message) { + if (_deepEqual(actual, expected, true)) { + fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual); + } +} + + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } + + try { + if (actual instanceof expected) { + return true; + } + } catch (e) { + // Ignore. The instanceof check doesn't work for arrow functions. + } + + if (Error.isPrototypeOf(expected)) { + return false; + } + + return expected.call({}, actual) === true; +} + +function _tryBlock(block) { + var error; + try { + block(); + } catch (e) { + error = e; + } + return error; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (typeof block !== 'function') { + throw new TypeError('"block" argument must be a function'); + } + + if (typeof expected === 'string') { + message = expected; + expected = null; + } + + actual = _tryBlock(block); + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + var userProvidedMessage = typeof message === 'string'; + var isUnwantedException = !shouldThrow && util.isError(actual); + var isUnexpectedException = !shouldThrow && actual && !expected; + + if ((isUnwantedException && + userProvidedMessage && + expectedException(actual, expected)) || + isUnexpectedException) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws(true, block, error, message); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/error, /*optional*/message) { + _throws(false, block, error, message); +}; + +assert.ifError = function(err) { if (err) throw err; }; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11))) + +/***/ }), +/* 109 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_crypto_WebDollar_Crypto__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_blockchain_global_Blockchain_Genesis__ = __webpack_require__(41); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_blockchain_global_Blockchain_Mining_Reward__ = __webpack_require__(48); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__ = __webpack_require__(8); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__ = __webpack_require__(3); +const BigInteger = __webpack_require__(31); + + + + + + + + +/* + Tutorial based on https://en.bitcoin.it/wiki/Block_hashing_algorithm + */ + +class InterfaceBlockchainBlock { + + //everything is buffer + + constructor (blockchain, blockValidation, version, hash, hashPrev, timeStamp, nonce, data, height, db){ + + this.blockchain = blockchain; + + this.version = version||0; // 2 bytes version - 2 bytes + + this.hash = hash||null; // 256-bit hash based on all of the transactions in the block - 32 bytes, sha256 + + this.hashPrev = hashPrev||null; // 256-bit hash sha256 l - 32 bytes, sha256 + + this.nonce = nonce||0;// int 2^8^5 number (starts at 0)- int, - 5 bytes + + if ( timeStamp === undefined || timeStamp === null) { + + timeStamp = this.blockchain.timestamp.networkAdjustedTime - __WEBPACK_IMPORTED_MODULE_1_common_blockchain_global_Blockchain_Genesis__["a" /* default */].timeStampOffset; + + if (timeStamp === undefined || timeStamp === null) + timeStamp = ( new Date().getTime() - __WEBPACK_IMPORTED_MODULE_1_common_blockchain_global_Blockchain_Genesis__["a" /* default */].timeStampOffset) / 1000; + + timeStamp += Math.floor( Math.random()*5 * (Math.random() < 0.5 ? -1 : 1 )); + + } + + this.timeStamp = timeStamp||null; //Current timestamp as seconds since 1970-01-01T00:00 UTC - 4 bytes, + + + if (data === undefined || data === null) + data = this.blockchain.blockCreator.createEmptyBlockData(); + + this.data = data; + + + //computed data + this.computedBlockPrefix = null; + this.computedSerialization = null; + + this.difficultyTarget = null; // difficulty set by Blockchain + this.difficultyTargetPrev = null; // difficulty set by Blockchain + this.height = (typeof height === "number" ? height : null); // index set by me + + this.reward = undefined; + + if (blockValidation === undefined) + blockValidation = this.blockchain.createBlockValidation(); + + this.blockValidation = blockValidation; + + this.db = db; + + this._socketPropagatedBy = undefined; + + this._workDone = undefined; + + } + + destroyBlock(){ + + if (this.blockchain === undefined) return; + + //it is included in the blockchain + if ( this.blockchain.blocks[ this.height ] === this) + return; + + this.blockchain = undefined; + + if (this.data !== undefined && this.data !== null) + this.data.destroyBlockData(); + + this.db = undefined; + delete this.data; + + if (this.blockValidation !== undefined && this.blockValidation !== null) + this.blockValidation.destroyBlockValidation(); + + this.blockValidation = undefined; + } + + async _supplementaryValidation() { + return true; + } + + async validateBlock( height ){ + + if (typeof this.version !== 'number') throw {message: 'version is empty'}; + if (typeof this.nonce !== 'number') throw {message: 'nonce is empty'}; + if (typeof this.timeStamp !== 'number') throw {message: 'timeStamp is empty'}; + + if (this.hash === undefined || this.hash === null || !Buffer.isBuffer(this.hash) ) throw {message: 'hash is empty'}; + if (this.hashPrev === undefined || this.hashPrev === null || !Buffer.isBuffer(this.hashPrev) ) throw {message: 'hashPrev is empty'}; + + //timestamp must be on 4 bytes + if (this.timeStamp < 0 || this.timeStamp >= 0xFFFFFFFF) throw {message: 'timeStamp is invalid'}; + + if (height >= 0) { + if (this.version !== __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].TRANSACTIONS.VERSIONS.SCHNORR_VERSION) throw {message: 'invalid version ', version: this.version}; + } + + if (height !== this.height) + throw {message: 'height is different', height: height, myHeight: this.height}; + + if ( ! (await this._validateBlockHash()) ) + throw {message: "validateBlockchain returned false"}; + + this._validateTargetDifficulty(); + + this._validateBlockTimeStamp(); + + if (this.reward !== __WEBPACK_IMPORTED_MODULE_2_common_blockchain_global_Blockchain_Mining_Reward__["a" /* default */].getReward(this.height) ) + throw {message: 'reward is not right: ', myReward: this.reward, reward: __WEBPACK_IMPORTED_MODULE_2_common_blockchain_global_Blockchain_Mining_Reward__["a" /* default */].getReward( this.height ) }; + + if (this._supplementaryValidation() === false) + throw {message: "supplementaryValidation failed"}; + + return true; + } + + /** + * it will recheck the validity of the block + */ + async _validateBlockHash() { + + if ( ! this.blockValidation.blockValidationType["skip-prev-hash-validation"] ){ + + //validate hashPrev + let previousHash = this.blockValidation.getHashPrevCallback(this.height); + if ( previousHash === null || !Buffer.isBuffer(previousHash)) + throw {message: 'previous hash is not given'}; + + if (! __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__["a" /* default */].safeCompare(previousHash, this.hashPrev)) + throw {message: "block prevHash doesn't match ", prevHash: previousHash.toString("hex"), hashPrev: this.hashPrev.toString("hex")}; + } + + //validate hash + //skip the validation, if the blockValidationType is provided + if (!this.blockValidation.blockValidationType['skip-validation-PoW-hash']) { + + if (this.computedBlockPrefix === null) + this._computeBlockHeaderPrefix(); //making sure that the prefix was calculated for calculating the block + + let hash = await this.computeHash(); + + if (! __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__["a" /* default */].safeCompare(hash, this.hash)) + throw {message: "block hash is not right", nonce: this.nonce, height: this.height, myHash:this.hash.toString("hex"), hash:hash.toString("hex"), + difficultyTargetPrev: this.difficultyTargetPrev.toString("hex"), serialization: Buffer.concat( [this.computedBlockPrefix, __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes(this.nonce)] ).toString("hex")}; + + } + + await this.data.validateBlockData(this.height, this.blockValidation); + + return true; + + } + + _validateTargetDifficulty(){ + + if (!this.blockValidation.blockValidationType['skip-target-difficulty-validation']){ + + let prevDifficultyTarget = this.blockValidation.getDifficultyCallback(this.height); + + if (prevDifficultyTarget instanceof BigInteger) + prevDifficultyTarget = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeToFixedBuffer(__WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_POW_LENGTH, __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeBigInteger(prevDifficultyTarget)); + + if ( prevDifficultyTarget === null || !Buffer.isBuffer(prevDifficultyTarget) ) + throw {message: 'previousDifficultyTarget is not given'}; + + if (! (this.hash.compare( prevDifficultyTarget ) <= 0)) + throw {message: "block doesn't match the difficulty target is not ", hash:this.hash, prevDifficultyTarget: prevDifficultyTarget}; + + + } + + + return true; + } + + _validateBlockTimeStamp(){ + + // BITCOIN: A timestamp is accepted as valid if it is greater than the median timestamp of previous 11 blocks, and less than the network-adjusted time + 2 hours. + + + if (!this.blockValidation.blockValidationType['skip-validation-timestamp'] && this.height > __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.TIMESTAMP.VALIDATION_NO_BLOCKS+1) { + + let medianTimestamp = 0; + for (let i=this.height-1; i >= this.height - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.TIMESTAMP.VALIDATION_NO_BLOCKS; i--) + medianTimestamp += this.blockValidation.getTimeStampCallback(i+1); + + medianTimestamp = medianTimestamp / __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.TIMESTAMP.VALIDATION_NO_BLOCKS; + + if (this.timeStamp < medianTimestamp) + throw {message: "Block Timestamp is not bigger than the previous 10 blocks"}; + + } + + + if ( this.blockValidation.blockValidationType['validation-timestamp-adjusted-time'] === true ) { + + if (this.timeStamp > this.blockchain.timestamp.networkAdjustedTime - __WEBPACK_IMPORTED_MODULE_1_common_blockchain_global_Blockchain_Genesis__["a" /* default */].timeStampOffset + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.TIMESTAMP.NETWORK_ADJUSTED_TIME_MAXIMUM_BLOCK_OFFSET) + throw { message: "Timestamp of block is less than the network-adjusted time", timeStamp: this.timeStamp, " > ": this.blockchain.timestamp.networkAdjustedTime - __WEBPACK_IMPORTED_MODULE_1_common_blockchain_global_Blockchain_Genesis__["a" /* default */].timeStampOffset + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.TIMESTAMP.NETWORK_ADJUSTED_TIME_MAXIMUM_BLOCK_OFFSET, networkAdjustedTime: this.blockchain.timestamp.networkAdjustedTime, NETWORK_ADJUSTED_TIME_MAXIMUM_BLOCK_OFFSET: __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.TIMESTAMP.NETWORK_ADJUSTED_TIME_MAXIMUM_BLOCK_OFFSET } + + } + + } + + toString(){ + return this.hashPrev.toString() + this.data.toString(); + } + + toJSON(){ + + return { + height: this.height, + version: this.version, + hashPrev: (this.hashPrev !== null ? this.hashPrev.toString("hex") : ''), + data: (this.data !== null ? this.data.toJSON() : ''), + nonce: this.nonce, + timeStamp: this.timeStamp, + difficulty: (this.difficultyTarget !== null ? this.difficultyTarget.toString("hex") : ''), + } + + } + + /* + Concat of Hashes to avoid double computation + */ + + _computeBlockHeaderPrefix(skipPrefix, requestHeader){ + + //in case I have calculated the computedBlockPrefix before + + if (skipPrefix === true && Buffer.isBuffer(this.computedBlockPrefix) ) + return this.computedBlockPrefix; + + this.computedBlockPrefix = Buffer.concat ( [ + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber2Bytes( this.version), + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeToFixedBuffer( __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_POW_LENGTH , this.hashPrev ), + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes( this.timeStamp ), + //data contains addressMiner, transactions history, contracts, etc + this.data.serializeData(requestHeader), + ]); + + return this.computedBlockPrefix; + } + + /** + * Computes block's hash + * @param newNonce + * @returns {Promise} + */ + async computeHash(newNonce){ + + try { + + // hash is hashPow ( block header + nonce ) + if (this.computedBlockPrefix === null) + return this._computeBlockHeaderPrefix(); + + let buffer = Buffer.concat([ + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeBufferRemovingLeadingZeros(__WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes(this.height)), + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeBufferRemovingLeadingZeros(this.difficultyTargetPrev), + this.computedBlockPrefix, + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes(newNonce || this.nonce), + ]); + + return await __WEBPACK_IMPORTED_MODULE_0_common_crypto_WebDollar_Crypto__["a" /* default */].hashPOW(buffer); + + } catch (exception){ + console.error("Error computeHash", exception); + return Buffer.from( __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_MAX_TARGET_BUFFER); + } + } + + /** + * Computes a hash based on static block data + * @param newNonce + * @param height + * @param difficultyTargetPrev + * @param computedBlockPrefix + * @param blockNonce + * @returns {Promise} + */ + static async computeHashStatic(blockSerialized, newNonce) { + + let buffer = Buffer.concat ( [ + blockSerialized, + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes(newNonce), + ] ); + + return await __WEBPACK_IMPORTED_MODULE_0_common_crypto_WebDollar_Crypto__["a" /* default */].hashPOW( buffer ); + } + + serializeBlock(requestHeader){ + + // serialize block is ( hash + nonce + header ) + + if (this.computedSerialization !== null && requestHeader === true) return this.computedSerialization; + + this._computeBlockHeaderPrefix(true, requestHeader); + + if (!Buffer.isBuffer(this.hash) || this.hash.length !== __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_POW_LENGTH) + this.hash = this.computeHash(); + + let data = Buffer.concat( [ + this.hash, + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes( this.nonce ), + this.computedBlockPrefix, + ]); + + if (this.computedSerialization === null && requestHeader === true) this.computedSerialization = data; + + return data; + + } + + deserializeBlock(buffer, height, reward, difficultyTarget, offset = 0){ + + if (!Buffer.isBuffer(buffer)) + if (typeof buffer === "string") + buffer = new Buffer(buffer, "hex"); + + if (height !== undefined) this.height = height; + if (reward !== undefined) this.reward = reward; + else if (this.reward === undefined) this.reward = __WEBPACK_IMPORTED_MODULE_2_common_blockchain_global_Blockchain_Mining_Reward__["a" /* default */].getReward(height||this.height); + + if (difficultyTarget !== undefined) this.difficultyTarget = difficultyTarget; + + if ( (buffer.length - offset) > __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_SIZE.BLOCKS_MAX_SIZE_BYTES ) + throw {message: "Block Size is bigger than the MAX_SIZE.BLOCKS_MAX_SIZE_BYTES", bufferLength: buffer.length }; + + try { + + this.hash = __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__["a" /* default */].substr(buffer, offset, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_POW_LENGTH); + offset += __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_POW_LENGTH; + + this.nonce = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].deserializeNumber4Bytes( buffer, offset, ); + offset += 4; + + + //TODO 1 byte version + this.version = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].deserializeNumber2Bytes( buffer, offset ); + offset += 2; + + //TODO put hashPrev into block.data + this.hashPrev = __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__["a" /* default */].substr(buffer, offset, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_POW_LENGTH); + offset += __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_POW_LENGTH; + + + this.timeStamp = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].deserializeNumber4Bytes( buffer, offset); + offset += 4; + + offset = this.data.deserializeData(buffer, offset); + + } catch (exception){ + console.error("error deserializing a block ", exception, buffer); + throw exception; + } + + return offset; + + } + + async saveBlock(){ + + let key = "block" + this.height; + + let bufferValue; + + try { + bufferValue = this.serializeBlock(); + } catch (exception){ + console.error('ERROR serializing block: ', exception); + throw exception; + } + + try{ + return (await this.db.save(key, bufferValue)); + } + catch (exception){ + console.error('ERROR on SAVE block: ', exception); + throw exception; + } + } + + async loadBlock(){ + + let key = "block" + this.height; + + try{ + + let buffer = await this.db.get(key, 12000); + + if (buffer === null) { + console.error("block "+this.height+" was not found "+ key); + return false; + } + + this.deserializeBlock(buffer, this.height, undefined, this.blockValidation.getDifficultyCallback(this.height) ); + + return true; + } + catch(exception) { + console.error( 'ERROR on LOAD block: ', exception); + return false; + } + } + + async removeBlock() { + + let key = "block" + this.height; + + try{ + return (await this.db.remove(key)); + } + catch(exception) { + return 'ERROR on REMOVE block: ' + exception; + } + } + + equals(targetBlock){ + + return __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__["a" /* default */].safeCompare(this.hash, targetBlock.hash) && + this.height === targetBlock.height && + this.nonce === targetBlock.nonce && + this.version === targetBlock.version; + } + + getBlockHeaderWithInformation(){ + + return { + + height: this.height, + chainLength: this.blockchain.blocks.length, + chainStartingPoint: this.blockchain.blocks.blocksStartingPoint, + + header: this.getBlockHeader(), + } + + } + + getBlockHeader(){ + + return { + + version: this.version, + height: this.height, + hash: this.hash, + hashPrev: this.hashPrev, + data: { + hashData: this.data.hashData, + }, + nonce: this.nonce, + timeStamp: this.timeStamp, + difficultyTargetPrev: this.difficultyTargetPrev, + } + + } + + async importBlockFromHeader(json) { + + this.height = json.height; + this.hash = json.hash; + this.hashPrev = json.hashPrev; + this.data.hashData = json.data.hashData; + this.nonce = json.nonce; + + this.version = json.version; + this.timeStamp = json.timeStamp; + this.difficultyTargetPrev = json.difficultyTargetPrev; + + //calculate Hash + this._computeBlockHeaderPrefix(true, true); + await this.computeHash(); + } + + get socketPropagatedBy(){ + return this._socketPropagatedBy; + } + + set socketPropagatedBy(socket){ + + this._socketPropagatedBy = socket; + + socket.on("disconnect",()=>{ + this._socketPropagatedBy = undefined; + }); + + } + + /** + * + */ + get workDone(){ + + if (this._workDone !== undefined) return this._workDone; + + this._workDone = __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.BLOCKS_MAX_TARGET_BIG_INTEGER.divide( new BigInteger( this.difficultyTargetPrev.toString("hex"), 16 ) ); + + return this._workDone; + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceBlockchainBlock); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 110 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_blockchain_global_difficulty_Blockchain_Difficulty__ = __webpack_require__(718); + + +class InterfaceBlockchainBlockValidation { + + constructor(getBlockCallBack, getDifficultyCallback, getTimeStampCallback, getHashPrevCallback, blockValidationType){ + + if (blockValidationType === undefined || blockValidationType === null) + blockValidationType = {}; + + this.getBlockCallBack = getBlockCallBack; + this.getDifficultyCallback = getDifficultyCallback; + this.getTimeStampCallback = getTimeStampCallback; + this.getHashPrevCallback = getHashPrevCallback; + + this.blockValidationType = blockValidationType; + } + + destroyBlockValidation(){ + + this.getBlockCallBack = undefined; + this.getDifficultyCallback = undefined; + this.getTimeStampCallback = undefined; + this.getHashPrevCallback = undefined; + + this.blockValidationType = undefined; + + } + + getDifficulty(blockTimestamp, blockNumber){ + + return __WEBPACK_IMPORTED_MODULE_0_common_blockchain_global_difficulty_Blockchain_Difficulty__["a" /* default */].getDifficulty(this.getDifficultyCallback, this.getTimeStampCallback, blockTimestamp, blockNumber) + + } + + + saveValidation(){ + + } + + loadValidation(){ + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceBlockchainBlockValidation); + +/***/ }), +/* 111 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_node_lists_types_Node_Type__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Connection_Type__ = __webpack_require__(37); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_main_blockchain_Blockchain__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_node_lists_types_Node_Consensus_Type__ = __webpack_require__(34); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__utils_Serialization__ = __webpack_require__(8); + + + + + + + + +let NodeExpress, NodeServer; + +if (false) { + NodeExpress = require('node/sockets/node-server/express/Node-Express').default; + NodeServer = require('node/sockets/node-server/sockets/Node-Server').default; +} + +class NodeProtocol { + + /* + HELLO PROTOCOL + */ + + justSendHello(){ + + return this.node.sendRequestWaitOnce("HelloNode", { + version: __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.NODE.VERSION, + uuid: __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.UUID, + nodeType: true ? __WEBPACK_IMPORTED_MODULE_2_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER : NODE_TYPE.NODE_TERMINAL, + domain: true ? "browser" : NodeServer.getServerHTTPAddress(), + UTC: __WEBPACK_IMPORTED_MODULE_4_main_blockchain_Blockchain__["a" /* default */].blockchain.timestamp.timeUTC, + }, undefined, 5000); + + } + + processHello( response, validationDoubleConnectionsTypes ){ + + if (typeof response !== "object" || response === null || response === undefined) { + console.error("No Hello"); + return false; + } + + if (response.uuid === undefined || response.version === undefined) { + console.error("hello received, but there is not uuid or version", response); + return false; + } + + + if (response.version < __WEBPACK_IMPORTED_MODULE_4_main_blockchain_Blockchain__["a" /* default */].versionCompatibility){ + console.log("hello received, VERSION is not right", response.version, __WEBPACK_IMPORTED_MODULE_4_main_blockchain_Blockchain__["a" /* default */].versionCompatibility); + return false; + } + + if ( [__WEBPACK_IMPORTED_MODULE_2_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL, __WEBPACK_IMPORTED_MODULE_2_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER].indexOf( response.nodeType ) === -1 ){ + console.error("invalid node type", response); + return false; + } + + if (__WEBPACK_IMPORTED_MODULE_2_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL === response.nodeType && __WEBPACK_IMPORTED_MODULE_1_node_lists_Nodes_List__["a" /* default */].countNodesByType(__WEBPACK_IMPORTED_MODULE_2_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL) > __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.BROWSER.CLIENT.MAXIMUM_CONNECTIONS_FROM_TERMINAL){ + console.warn("too many terminal connections"); + return false; + } + + if (response.uuid === __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.UUID) + return false; + + this.node.sckAddress.uuid = response.uuid; + + //check if it is a unique connection, add it to the list + let connections = __WEBPACK_IMPORTED_MODULE_1_node_lists_Nodes_List__["a" /* default */].countNodeSocketByAddress(this.node.sckAddress, "all"); + + for (let i=0; i ( __WEBPACK_IMPORTED_MODULE_4_main_blockchain_Blockchain__["a" /* default */].isPoolActivated ? __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].MINING_POOL.CONNECTIONS.NO_OF_IDENTICAL_IPS : __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.NO_OF_IDENTICAL_IPS )) + return false; + + } + + console.log("RECEIVED HELLO NODE BACK", response.version); + + this.node.protocol.nodeType = response.nodeType; + this.node.protocol.nodeConsensusType = response.nodeConsensusType || __WEBPACK_IMPORTED_MODULE_5_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_PEER; + + this.node.protocol.nodeDomain = response.domain; + + this.node.protocol.nodeUTC = response.UTC; + this.node.protocol.helloValidated = true; + + return true; + } + + async sendHello ( validationDoubleConnectionsTypes, process = true ) { + + + // Waiting for Protocol Confirmation + + let response; + for (let i=0; i < 3; i++) { + + if (this.connected === false) return false; + + response = await this.node.protocol.justSendHello(); + + if ( typeof response === "object" && response !== null && response.hasOwnProperty("uuid") ) + break; + + } + + if (!process) + return true; + + return this.node.protocol.processHello( response, validationDoubleConnectionsTypes ); + + } + + + /** + * boradcast to every sockets except the exceptSockets + * @param request + * @param data + * @param type + * @param exceptSockets + */ + static broadcastRequest (request, data, connectionType, exceptSockets){ + + if (exceptSockets === "all") return true; + + let nodes = __WEBPACK_IMPORTED_MODULE_1_node_lists_Nodes_List__["a" /* default */].getNodesByConnectionType(connectionType); + + if (exceptSockets !== undefined && exceptSockets !== null && !Array.isArray(exceptSockets)) + exceptSockets = [exceptSockets]; + + //console.log("request nodes.length", nodes.length, request, data, ) + //console.log("nodes.length", nodes.length ); + + for (let i=0; i < nodes.length; i++) { + + let broadcast = false; + + if (exceptSockets === undefined) broadcast = true; + else + if (Array.isArray(exceptSockets)){ + + //console.log("exceptSockets", exceptSockets); + + let found = false; + for (let j=0; j{ + this._forkPromiseResolver = resolve; + }); + + this._blocksCopy = []; + } + + + + + async _validateFork(validateHashesAgain, firstValidation){ + + //forkStartingHeight is offseted by 1 + + if (this.forkBlocks.length === 0) throw {message: "Fork doesn't have any block"}; + + if (validateHashesAgain) + for (let i = 0; i < this.forkBlocks.length; i++){ + + if (! (await this._validateForkBlock( this.forkBlocks[i], this.forkStartingHeight + i ))) + throw {message:"validateForkBlock failed for ", index:i}; + + } + + this._validateChainWork(); + + return true; + } + + validateForkImmutability(){ + + //detecting there is a fork in my blockchain + if ( this.blockchain.blocks.blocksStartingPoint < this.blockchain.blocks.length - __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.FORKS.IMMUTABILITY_LENGTH ) + if (this.forkStartingHeight <= this.blockchain.blocks.length - __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.FORKS.IMMUTABILITY_LENGTH){ + //verify if there were only a few people mining in my last 30 blocks + + let addresses = []; + + for (let i=this.forkStartingHeight; i 3) //in my fork, there were a lot of miners, and not just me + throw {message: "Validate for Immutability failed"}; + else + return true; //there were just 3 miners, probably it is my own fork... + + } + + return true; + + } + + _validateChainWork(){ + + let chainWork = new BigInteger(0); + for (let i = this.forkStartingHeight; i 0) + return this.forkBlocks[forkHeight - 1]; // just the fork + else + return this.blockchain.getBlock(height) // the blockchain + } + + // return the difficultly target for ForkBlock + getForkDifficultyTarget(height){ + + let forkHeight = height - this.forkStartingHeight; + + if (height === 0) + return __WEBPACK_IMPORTED_MODULE_2_common_blockchain_global_Blockchain_Genesis__["a" /* default */].difficultyTarget; // based on genesis block + else if ( forkHeight === 0) + return this.blockchain.getDifficultyTarget(height); + else if ( forkHeight > 0) { + + if ( forkHeight-1 >= this.forkBlocks.length ) + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].warn("getForkDifficultyTarget FAILED: "+ forkHeight, __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + + return this.forkBlocks[forkHeight - 1].difficultyTarget; // just the fork + } + else + return this.blockchain.getDifficultyTarget(height) // the blockchain + } + + getForkTimeStamp(height){ + + let forkHeight = height - this.forkStartingHeight; + + if (height === 0) + return __WEBPACK_IMPORTED_MODULE_2_common_blockchain_global_Blockchain_Genesis__["a" /* default */].timeStamp; // based on genesis block + else if ( forkHeight === 0) + return this.blockchain.getTimeStamp(height); // based on previous block from blockchain + else if ( forkHeight > 0) + return this.forkBlocks[forkHeight - 1].timeStamp; // just the fork + else + return this.blockchain.getTimeStamp(height) // the blockchain + + } + + getForkPrevHash(height){ + let forkHeight = height - this.forkStartingHeight; + + if (height === 0) + return __WEBPACK_IMPORTED_MODULE_2_common_blockchain_global_Blockchain_Genesis__["a" /* default */].hashPrev; // based on genesis block + else if ( forkHeight === 0) + return this.blockchain.getHashPrev(height); // based on previous block from blockchain + else if ( forkHeight > 0) + return this.forkBlocks[forkHeight - 1].hash; // just the fork + else + return this.blockchain.getHashPrev(height) // the blockchain + } + + _createBlockValidation_ForkValidation(height, forkHeight){ + + let validationType = {}; + + if (height === this.forkChainLength-1) + validationType["validation-timestamp-adjusted-time"] = true; + + return new __WEBPACK_IMPORTED_MODULE_0__blocks_validation_Interface_Blockchain_Block_Validation__["a" /* default */](this.getForkBlock.bind(this), this.getForkDifficultyTarget.bind(this), this.getForkTimeStamp.bind(this), this.getForkPrevHash.bind(this), validationType ); + } + + _createBlockValidation_BlockchainValidation(height, forkHeight){ + + let validationType = {}; + + if (height === this.forkChainLength-1) + validationType["validation-timestamp-adjusted-time"] = true; + + if (height !== this.forkChainLength-1) + validationType["skip-calculating-proofs"] = true; + + return new __WEBPACK_IMPORTED_MODULE_0__blocks_validation_Interface_Blockchain_Block_Validation__["a" /* default */](this.getForkBlock.bind(this), this.getForkDifficultyTarget.bind(this), this.getForkTimeStamp.bind(this), this.getForkPrevHash.bind(this), validationType ); + } + + sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); + } + + deleteAlreadyIncludedBlocks(){ + + //verify if now, I have some blocks already in my the blockchain that are similar with the fork + let pos = -1; + for (let i=0; i= 0){ + + this.forkStartingHeight = this.forkBlocks[pos].height; + this.forkStartingHeightDownloading = this.forkBlocks[pos].height; + + for (let j=0; j<=pos; j++) + if (this.blockchain.blocks[ this.forkBlocks[j].height ] !== this.forkBlocks[j]) + this.forkBlocks[j].destroyBlock(); + else + this.forkBlocks[j] = undefined; + + + this.forkBlocks.splice(0, pos); + } + + if (this.forkBlocks.length !== 0) return true; + else return false; + + } + + /** + * Validate the Fork and Use the fork as main blockchain + * + * overwrite the blockchain blocks with the forkBlocks + * + */ + async saveFork(){ + + if (__WEBPACK_IMPORTED_MODULE_1_consts_global__["a" /* default */].TERMINATED) + return false; + + this.forkIsSaving = true; //marking it saved because we want to avoid the forksAdministrator to delete it + if (this.blockchain === undefined) return false; //fork was already destroyed + + if (! (await this._validateFork(false, true))) { + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("validateFork was not passed", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + return false + } + + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].log("Save Fork after validateFork", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + + + let revertActions = new __WEBPACK_IMPORTED_MODULE_4_common_utils_Revert_Actions_Revert_Actions__["a" /* default */](this.blockchain); + revertActions.push({action: "breakpoint"}); + + let success; + + if (this.blockchain === undefined) success = false ; //fork was already destroyed + else + success = await this.blockchain.semaphoreProcessing.processSempahoreCallback( async () => { + + if (! (await this._validateFork(false, false))) { + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("validateFork was not passed", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + return false + } + + if (!this.deleteAlreadyIncludedBlocks()){ + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("deleteAlreadyIncludedBlocks blocks no longer exist", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + return false; + } + + if (this.downloadBlocksSleep) await this.sleep(30); + + try { + + //making a copy of the current blockchain + this.preForkClone(); + + } catch (exception){ + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("preForkBefore raised an error", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + this.forkIsSaving = false; + return false; + } + + if (this.downloadBlocksSleep) await this.sleep(20); + + try { + + this.preFork(revertActions); + + } catch (exception){ + + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("preFork raised an error", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, exception); + + revertActions.revertOperations('', "all"); + this._blocksCopy = []; //We didn't use them so far + + try { + await this.revertFork(); + } catch (exception){ + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("revertFork rasied an error", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, exception ); + } + + this.forkIsSaving = false; + return false; + } + + if (this.downloadBlocksSleep) await this.sleep(20); + + this.blockchain.blocks.spliceBlocks(this.forkStartingHeight, false, false); + + let forkedSuccessfully = true; + + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].log("===========================", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].log("===========================", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + + //TODO use the revertActions to revert the process + + //show information about Transactions Hash + if (__WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].DEBUG) { + + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].log("Accountant Tree", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, this.blockchain.accountantTree.root.hash.sha256.toString("hex")); + + for (let i = 0; i < this.forkBlocks.length; i++) { + + for (let j = 0; j < this.forkBlocks[i].data.transactions.transactions.length; j++) + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].log("Transaction", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, this.forkBlocks[i].data.transactions.transactions[j].toJSON()); + + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].log("Transaction hash", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, this.forkBlocks[i].data.transactions.hashTransactions.toString("hex")); + } + + } + + let index; + try { + + for (index = 0; index < this.forkBlocks.length && (__WEBPACK_IMPORTED_MODULE_8_main_blockchain_Blockchain__["a" /* default */].MinerPoolManagement === undefined || !__WEBPACK_IMPORTED_MODULE_8_main_blockchain_Blockchain__["a" /* default */].MinerPoolManagement.minerPoolStarted); index++) { + + __WEBPACK_IMPORTED_MODULE_3_common_events_Status_Events__["a" /* default */].emit( "agent/status", { message: "Synchronizing - Including Block", blockHeight: this.forkBlocks[index].height, blockHeightMax: this.forkChainLength } ); + + this.forkBlocks[index].blockValidation = this._createBlockValidation_BlockchainValidation( this.forkBlocks[index].height , index); + this.forkBlocks[index].blockValidation.blockValidationType['skip-validation-PoW-hash'] = true; //It already validated the hash + + + this.forkBlocks[index].blockValidation.blockValidationType['skip-recalculating-hash-rate'] = true; + + //await Blockchain.blockchain.sleep(10); + + if (false) + this.forkBlocks[index].blockValidation.blockValidationType['skip-sleep'] = true; + else + await this.blockchain.sleep(2); + + + + + if (! (await this.saveIncludeBlock(index, revertActions, false, false)) ) + throw( { message: "fork couldn't be included in main Blockchain ", index: index }); + + this.forkBlocks[index].socketPropagatedBy = this.socketsFirst; + + } + + await this.blockchain.saveBlockchain( this.forkStartingHeight ); + + if (!this.downloadBlocksSleep) await this.sleep(2); + + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].log("FORK STATUS SUCCESS5: "+forkedSuccessfully+ " position "+this.forkStartingHeight, __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, ); + + } catch (exception){ + + try { + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error('-----------------------------------------', __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS,); + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("saveFork includeBlockchainBlock1 raised exception", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS,); + this.printException(exception); + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("index: " + index + "forkStartingHeight" + this.forkStartingHeight + "fork", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS,); + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error('-----------------------------------------', __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS,); + } catch (exception){ + + } + + forkedSuccessfully = false; + + //revert the accountant tree + //revert the last K block + + try { + revertActions.revertOperations('', "all"); + } catch (exception){ + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("revertOptions raised an error", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, exception ); + } + await this.sleep(30); + + try { + //reverting back to the clones, especially light settings + await this.revertFork(); + } catch (exception){ + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("revertFork raised an error", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, exception ); + } + + await this.sleep(30); + + } + + await this.postForkTransactions(forkedSuccessfully); + + if (this.downloadBlocksSleep) await this.sleep(30); + + this.postFork(forkedSuccessfully); + + if (this.downloadAllBlocks){ + await this.sleep(30); + __WEBPACK_IMPORTED_MODULE_8_main_blockchain_Blockchain__["a" /* default */].synchronizeBlockchain(); + } + + if (forkedSuccessfully) { + this.blockchain.mining.resetMining(); + this._forkPromiseResolver(true) //making it async + } + + return forkedSuccessfully; + }); + + this.forkIsSaving = false; + + if (success) { + __WEBPACK_IMPORTED_MODULE_3_common_events_Status_Events__["a" /* default */].emit("blockchain/new-blocks", {}); + this.blockchain.blocks.emitBlockInserted( ) ; + } + + // it was done successfully + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].info("FORK SOLVER SUCCESS: " + success, __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + + revertActions.destroyRevertActions(); + + __WEBPACK_IMPORTED_MODULE_8_main_blockchain_Blockchain__["a" /* default */].blockchain.accountantTree.emitBalancesChanges(); + __WEBPACK_IMPORTED_MODULE_8_main_blockchain_Blockchain__["a" /* default */].blockchain.blocks.recalculateNetworkHashRate(); + __WEBPACK_IMPORTED_MODULE_8_main_blockchain_Blockchain__["a" /* default */].blockchain.blocks.emitBlockInserted(); + __WEBPACK_IMPORTED_MODULE_8_main_blockchain_Blockchain__["a" /* default */].blockchain.blocks.emitBlockCountChanged(); + + try { + + if (success) { + + //successfully, let's delete the backup blocks + this._deleteBackupBlocks(); + + //propagate last block + __WEBPACK_IMPORTED_MODULE_5_common_sockets_protocol_propagation_Node_Blockchain_Propagation__["a" /* default */].propagateBlock(this.blockchain.blocks[this.blockchain.blocks.length - 1], this.sockets); + + if (this.downloadAllBlocks) { + + await this.sleep(100); + + this.blockchain.agent.protocol.askBlockchain(this.getSocket()); + + } + + } + } catch (exception){ + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("saveFork - saving the fork returned an exception", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, exception); + } + + return success; + } + + preForkClone(cloneBlocks=true){ + + try { + + this._blocksCopy = []; + + if (!cloneBlocks) return true; + + for (let i = this.forkStartingHeight; i < this.blockchain.blocks.length; i++) + this._blocksCopy.push(this.blockchain.blocks[i]); + + } catch (exception){ + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("_blockCopy raised an error", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, exception); + throw exception; + } + + return true; + } + + preFork(revertActions){ + + } + + + async revertFork(){ + + let index = 0; + + try { + + let revertActions = new __WEBPACK_IMPORTED_MODULE_4_common_utils_Revert_Actions_Revert_Actions__["a" /* default */](this.blockchain); + + for (let i=0; i { + + if (block.data !== undefined && block.data.transactions !== undefined) + block.data.transactions.transactions.forEach((transaction) => { + + transaction.confirmed = false; + + try { + this.blockchain.transactions.pendingQueue.includePendingTransaction(transaction, "all"); + } + catch (exception) { + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].warn("Transaction Was Rejected to be Added to the Pending Queue ", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, transaction.toJSON() ); + } + + }); + }); + + this.forkBlocks.forEach((block)=> { + + if (block.data !== undefined && block.data.transactions !== undefined) + block.data.transactions.transactions.forEach((transaction) => { + transaction.confirmed = true; + + this.blockchain.transactions.pendingQueue._removePendingTransaction(transaction); + + }); + + }); + + } else { + + this.forkBlocks.forEach((block)=>{ + + if (block.data !== undefined && block.data.transactions !== undefined) + block.data.transactions.transactions.forEach((transaction)=>{ + transaction.confirmed = false; + + try { + this.blockchain.transactions.pendingQueue.includePendingTransaction(transaction, "all"); + } + catch (exception) { + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].warn("Transaction Was Rejected to be Added to the Pending Queue ", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, transaction.toJSON() ); + } + + }); + }); + + + this._blocksCopy.forEach( (block) => { + + if (block.data !== undefined && block.data.transactions !== undefined) + block.data.transactions.transactions.forEach((transaction) => { + transaction.confirmed = true; + + this.blockchain.transactions.pendingQueue._removePendingTransaction(transaction); + + }); + + }); + + } + + + + } + + postFork(forkedSuccessfully){ + + } + + async saveIncludeBlock(index, revertActions, saveBlock = false, showUpdate = false){ + + if (! (await this.blockchain.includeBlockchainBlock( this.forkBlocks[index], false, "all", saveBlock, revertActions, showUpdate))) { + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("fork couldn't be included in main Blockchain " + index, __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS); + return false; + } + + return true; + } + + _deleteBackupBlocks(){ + + + for (let i = 0; i < this._blocksCopy.length; i++) + if ( this._blocksCopy[i] !== undefined && this._blocksCopy[i] !== null && this.blockchain.blocks[ this._blocksCopy[i].height ] !== this._blocksCopy[i] ) { + this._blocksCopy[i].destroyBlock(); + this._blocksCopy[i] = undefined; + } + + this._blocksCopy = []; + + } + + printException(exception){ + + exception = JSON.stringify(exception); + + let isIterable = (obj) => { + // checks for null and undefined + if (obj === null) + return false; + return typeof obj[Symbol.iterator] === 'function'; + }; + + let removeBlocks = (obj, depth=1000)=>{ + + if (depth <= 0) return; + + if (isIterable(obj) || Array.isArray(obj) ) + for (let key in obj) + if (obj.hasOwnProperty(key)){ + if (key === "blocks") + obj[key] = ''; + + removeBlocks(obj[key], depth-1); + } + + }; + + removeBlocks(exception); + __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].error("fork save error", __WEBPACK_IMPORTED_MODULE_9_common_utils_logging_Log__["a" /* default */].LOG_TYPE.BLOCKCHAIN_FORKS, exception); + + } + + getSocket(){ + let socket = this.sockets; + if (Array.isArray(socket)) + socket = socket[0]; + + return socket; + } + + _findSocket(socket){ + for (let i=0; i= 0 && position < this.edges.length) { + + if (edge.label > this.edges[position].label) + position++; + else + break + } + } + } else if (Buffer.isBuffer(edge.label)){ + + position = 0; + while (position >= 0 && position < this.edges.length) { + + if (Buffer.compare(edge.label, this.edges[position].label) > 0) + position++; + else + break + } + } + + this.edges.splice(position, 0, edge); + + } + + +} + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceTreeNode); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 114 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__BanObject__ = __webpack_require__(763); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_node_lists_Nodes_List__ = __webpack_require__(6); + + + +class BansList{ + + constructor(){ + + this.bans = []; + + __WEBPACK_IMPORTED_MODULE_1_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/disconnected", async (nodesListObject) => { + + //sckAddresses shouldn't be deleted after a socket is disconnected + + }); + + setInterval( this._listBans.bind(this), 20*1000 ) + + } + + isBanned(sckAddress){ + + let ban = this.getBan(sckAddress); + if (ban === null) + return false; + + return ban.isBanned(sckAddress); + } + + addBan(sckAddress, banTime = 10000, banReason){ + + if (sckAddress === undefined || sckAddress === null) return false; + + if (typeof sckAddress === "object" && sckAddress.hasOwnProperty("node")) sckAddress = sckAddress.node.sckAddress; + if (typeof sckAddress === "object" && sckAddress.hasOwnProperty("sckAddress")) sckAddress = sckAddress.node.sckAddress; + + let ban = this.getBan(sckAddress); + + if (ban === null) { + + ban = new __WEBPACK_IMPORTED_MODULE_0__BanObject__["a" /* default */](sckAddress); + this.bans.push(ban); + + } + + ban.increaseBanTrials(banTime, banReason); + + this._removeEmptyBans(); + + return ban; + } + + findBan(sckAddress){ + + for (let i = 0; i < this.bans.length; i++) + if (this.bans[i].sckAddress.matchAddress(sckAddress, ["uuid"]) ) + return i; + + return null; + } + + getBan(sckAddress){ + + let index = this.findBan(sckAddress); + if (index !== null) + return this.bans[index]; + + return null; + } + + deleteBan(sckAddress){ + + let ban = this.getBan(sckAddress); + + if (ban !== null) + ban.upLiftBan(); + + } + + _removeEmptyBans(){ + + for (let i=this.bans.length-1; i>=0; i--) + if (this.bans[i].sckAddress === undefined || !this.bans[i].isBanned() ) + this.bans.splice(i,1) + + } + + _listBans(){ + + if (this.bans.length > 0) + console.info("BANNNNNNNNNNNNNNS"); + for (let i=0; i 0) + console.warn("Address", this.bans[i].sckAddress.toString(), + "banTime", this.bans[i].banTime, + "timeLeft", timeLeft , + "messages", this.bans[i].banReasons); + } + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new BansList()); + + +/***/ }), +/* 115 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +let AGENT_STATUS = { + + AGENT_STATUS_NOT_SYNCHRONIZED : 0, // not synchronized + AGENT_STATUS_SYNCHRONIZED : 2, //synchronized based on the fallback nodes + + AGENT_STATUS_SYNCHRONIZED_SLAVES : 3, //synchronized based on others (not fallback nodes) + + AGENT_STATUS_SYNCHRONIZED_POOL: 4, + +}; + +/* harmony default export */ __webpack_exports__["a"] = (AGENT_STATUS); + +/***/ }), +/* 116 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * Expose `Emitter`. + */ + +if (true) { + module.exports = Emitter; +} + +/** + * Initialize a new `Emitter`. + * + * @api public + */ + +function Emitter(obj) { + if (obj) return mixin(obj); +}; + +/** + * Mixin the emitter properties. + * + * @param {Object} obj + * @return {Object} + * @api private + */ + +function mixin(obj) { + for (var key in Emitter.prototype) { + obj[key] = Emitter.prototype[key]; + } + return obj; +} + +/** + * Listen on the given `event` with `fn`. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.on = +Emitter.prototype.addEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + (this._callbacks['$' + event] = this._callbacks['$' + event] || []) + .push(fn); + return this; +}; + +/** + * Adds an `event` listener that will be invoked a single + * time then automatically removed. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.once = function(event, fn){ + function on() { + this.off(event, on); + fn.apply(this, arguments); + } + + on.fn = fn; + this.on(event, on); + return this; +}; + +/** + * Remove the given callback for `event` or all + * registered callbacks. + * + * @param {String} event + * @param {Function} fn + * @return {Emitter} + * @api public + */ + +Emitter.prototype.off = +Emitter.prototype.removeListener = +Emitter.prototype.removeAllListeners = +Emitter.prototype.removeEventListener = function(event, fn){ + this._callbacks = this._callbacks || {}; + + // all + if (0 == arguments.length) { + this._callbacks = {}; + return this; + } + + // specific event + var callbacks = this._callbacks['$' + event]; + if (!callbacks) return this; + + // remove all handlers + if (1 == arguments.length) { + delete this._callbacks['$' + event]; + return this; + } + + // remove specific handler + var cb; + for (var i = 0; i < callbacks.length; i++) { + cb = callbacks[i]; + if (cb === fn || cb.fn === fn) { + callbacks.splice(i, 1); + break; + } + } + return this; +}; + +/** + * Emit `event` with the given args. + * + * @param {String} event + * @param {Mixed} ... + * @return {Emitter} + */ + +Emitter.prototype.emit = function(event){ + this._callbacks = this._callbacks || {}; + var args = [].slice.call(arguments, 1) + , callbacks = this._callbacks['$' + event]; + + if (callbacks) { + callbacks = callbacks.slice(0); + for (var i = 0, len = callbacks.length; i < len; ++i) { + callbacks[i].apply(this, args); + } + } + + return this; +}; + +/** + * Return array of callbacks for `event`. + * + * @param {String} event + * @return {Array} + * @api public + */ + +Emitter.prototype.listeners = function(event){ + this._callbacks = this._callbacks || {}; + return this._callbacks['$' + event] || []; +}; + +/** + * Check if this emitter has `event` handlers. + * + * @param {String} event + * @return {Boolean} + * @api public + */ + +Emitter.prototype.hasListeners = function(event){ + return !! this.listeners(event).length; +}; + + +/***/ }), +/* 117 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__ = __webpack_require__(6); + + +class PoolProtocolList{ + + constructor(){ + + this.list = []; + + + this._checkDisconnection(); + } + + _checkDisconnection(){ + + __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/disconnected", async (nodesListObject) => { + + this.deleteElementBySocket(nodesListObject.socket); + + }); + + } + + + addElement(socket){ + + if (this.findElement(socket) !== -1) return false; + + this.list.push(socket); + return true; + + } + + findElement(socket){ + + for (let i=0; i Array#indexOf +// true -> Array#includes +var toIObject = __webpack_require__(43); +var toLength = __webpack_require__(20); +var toAbsoluteIndex = __webpack_require__(76); +module.exports = function (IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; + // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; + // eslint-disable-next-line no-self-compare + if (value != value) return true; + // Array#indexOf ignores holes, Array#includes - not + } else for (;length > index; index++) if (IS_INCLUDES || index in O) { + if (O[index] === el) return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; + + +/***/ }), +/* 120 */ +/***/ (function(module, exports) { + +exports.f = Object.getOwnPropertySymbols; + + +/***/ }), +/* 121 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.2.2 IsArray(argument) +var cof = __webpack_require__(52); +module.exports = Array.isArray || function isArray(arg) { + return cof(arg) == 'Array'; +}; + + +/***/ }), +/* 122 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.2.8 IsRegExp(argument) +var isObject = __webpack_require__(14); +var cof = __webpack_require__(52); +var MATCH = __webpack_require__(15)('match'); +module.exports = function (it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; + + +/***/ }), +/* 123 */ +/***/ (function(module, exports, __webpack_require__) { + +var ITERATOR = __webpack_require__(15)('iterator'); +var SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function () { SAFE_CLOSING = true; }; + // eslint-disable-next-line no-throw-literal + Array.from(riter, function () { throw 2; }); +} catch (e) { /* empty */ } + +module.exports = function (exec, skipClosing) { + if (!skipClosing && !SAFE_CLOSING) return false; + var safe = false; + try { + var arr = [7]; + var iter = arr[ITERATOR](); + iter.next = function () { return { done: safe = true }; }; + arr[ITERATOR] = function () { return iter; }; + exec(arr); + } catch (e) { /* empty */ } + return safe; +}; + + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 21.2.5.3 get RegExp.prototype.flags +var anObject = __webpack_require__(9); +module.exports = function () { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; + + +/***/ }), +/* 125 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var hide = __webpack_require__(38); +var redefine = __webpack_require__(39); +var fails = __webpack_require__(13); +var defined = __webpack_require__(55); +var wks = __webpack_require__(15); + +module.exports = function (KEY, length, exec) { + var SYMBOL = wks(KEY); + var fns = exec(defined, SYMBOL, ''[KEY]); + var strfn = fns[0]; + var rxfn = fns[1]; + if (fails(function () { + var O = {}; + O[SYMBOL] = function () { return 7; }; + return ''[KEY](O) != 7; + })) { + redefine(String.prototype, KEY, strfn); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { return rxfn.call(string, this); } + ); + } +}; + + +/***/ }), +/* 126 */ +/***/ (function(module, exports, __webpack_require__) { + +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = __webpack_require__(9); +var aFunction = __webpack_require__(30); +var SPECIES = __webpack_require__(15)('species'); +module.exports = function (O, D) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; + + +/***/ }), +/* 127 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(10); +var navigator = global.navigator; + +module.exports = navigator && navigator.userAgent || ''; + + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(10); +var $export = __webpack_require__(0); +var redefine = __webpack_require__(39); +var redefineAll = __webpack_require__(82); +var meta = __webpack_require__(65); +var forOf = __webpack_require__(81); +var anInstance = __webpack_require__(80); +var isObject = __webpack_require__(14); +var fails = __webpack_require__(13); +var $iterDetect = __webpack_require__(123); +var setToStringTag = __webpack_require__(88); +var inheritIfRequired = __webpack_require__(155); + +module.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) { + var Base = global[NAME]; + var C = Base; + var ADDER = IS_MAP ? 'set' : 'add'; + var proto = C && C.prototype; + var O = {}; + var fixMethod = function (KEY) { + var fn = proto[KEY]; + redefine(proto, KEY, + KEY == 'delete' ? function (a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a) { + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a) { + return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () { + new C().entries().next(); + }))) { + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + redefineAll(C.prototype, methods); + meta.NEED = true; + } else { + var instance = new C(); + // early implementations not supports chaining + var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance; + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); }); + // most early implementations doesn't supports iterables, most modern - not close it correctly + var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + var BUGGY_ZERO = !IS_WEAK && fails(function () { + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new C(); + var index = 5; + while (index--) $instance[ADDER](index, index); + return !$instance.has(-0); + }); + if (!ACCEPT_ITERABLES) { + C = wrapper(function (target, iterable) { + anInstance(target, C, NAME); + var that = inheritIfRequired(new Base(), target, C); + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) { + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER); + // weak collections should not contains .clear method + if (IS_WEAK && proto.clear) delete proto.clear; + } + + setToStringTag(C, NAME); + + O[NAME] = C; + $export($export.G + $export.W + $export.F * (C != Base), O); + + if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP); + + return C; +}; + + +/***/ }), +/* 129 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(10); +var hide = __webpack_require__(38); +var uid = __webpack_require__(74); +var TYPED = uid('typed_array'); +var VIEW = uid('view'); +var ABV = !!(global.ArrayBuffer && global.DataView); +var CONSTR = ABV; +var i = 0; +var l = 9; +var Typed; + +var TypedArrayConstructors = ( + 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array' +).split(','); + +while (i < l) { + if (Typed = global[TypedArrayConstructors[i++]]) { + hide(Typed.prototype, TYPED, true); + hide(Typed.prototype, VIEW, true); + } else CONSTR = false; +} + +module.exports = { + ABV: ABV, + CONSTR: CONSTR, + TYPED: TYPED, + VIEW: VIEW +}; + + +/***/ }), +/* 130 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// Forced replacement prototype accessors methods +module.exports = __webpack_require__(66) || !__webpack_require__(13)(function () { + var K = Math.random(); + // In FF throws only define methods + // eslint-disable-next-line no-undef, no-useless-call + __defineSetter__.call(null, K, function () { /* empty */ }); + delete __webpack_require__(10)[K]; +}); + + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://tc39.github.io/proposal-setmap-offrom/ +var $export = __webpack_require__(0); + +module.exports = function (COLLECTION) { + $export($export.S, COLLECTION, { of: function of() { + var length = arguments.length; + var A = new Array(length); + while (length--) A[length] = arguments[length]; + return new this(A); + } }); +}; + + +/***/ }), +/* 132 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://tc39.github.io/proposal-setmap-offrom/ +var $export = __webpack_require__(0); +var aFunction = __webpack_require__(30); +var ctx = __webpack_require__(51); +var forOf = __webpack_require__(81); + +module.exports = function (COLLECTION) { + $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) { + var mapFn = arguments[1]; + var mapping, A, n, cb; + aFunction(this); + mapping = mapFn !== undefined; + if (mapping) aFunction(mapFn); + if (source == undefined) return new this(); + A = []; + if (mapping) { + n = 0; + cb = ctx(mapFn, arguments[2], 2); + forOf(source, false, function (nextItem) { + A.push(cb(nextItem, n++)); + }); + } else { + forOf(source, false, A.push, A); + } + return new this(A); + } }); +}; + + +/***/ }), +/* 133 */ +/***/ (function(module, exports, __webpack_require__) { + +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +module.exports = Stream; + +var EE = __webpack_require__(46).EventEmitter; +var inherits = __webpack_require__(7); + +inherits(Stream, EE); +Stream.Readable = __webpack_require__(176); +Stream.Writable = __webpack_require__(585); +Stream.Duplex = __webpack_require__(586); +Stream.Transform = __webpack_require__(587); +Stream.PassThrough = __webpack_require__(588); + +// Backwards-compat with node 0.4.x +Stream.Stream = Stream; + + + +// old-style streams. Note that the pipe method (the only relevant +// part of this class) is overridden in the Readable class. + +function Stream() { + EE.call(this); +} + +Stream.prototype.pipe = function(dest, options) { + var source = this; + + function ondata(chunk) { + if (dest.writable) { + if (false === dest.write(chunk) && source.pause) { + source.pause(); + } + } + } + + source.on('data', ondata); + + function ondrain() { + if (source.readable && source.resume) { + source.resume(); + } + } + + dest.on('drain', ondrain); + + // If the 'end' option is not supplied, dest.end() will be called when + // source gets the 'end' or 'close' events. Only dest.end() once. + if (!dest._isStdio && (!options || options.end !== false)) { + source.on('end', onend); + source.on('close', onclose); + } + + var didOnEnd = false; + function onend() { + if (didOnEnd) return; + didOnEnd = true; + + dest.end(); + } + + + function onclose() { + if (didOnEnd) return; + didOnEnd = true; + + if (typeof dest.destroy === 'function') dest.destroy(); + } + + // don't leave dangling pipes when there are errors. + function onerror(er) { + cleanup(); + if (EE.listenerCount(this, 'error') === 0) { + throw er; // Unhandled stream error in pipe. + } + } + + source.on('error', onerror); + dest.on('error', onerror); + + // remove all the event listeners that were added. + function cleanup() { + source.removeListener('data', ondata); + dest.removeListener('drain', ondrain); + + source.removeListener('end', onend); + source.removeListener('close', onclose); + + source.removeListener('error', onerror); + dest.removeListener('error', onerror); + + source.removeListener('end', cleanup); + source.removeListener('close', cleanup); + + dest.removeListener('close', cleanup); + } + + source.on('end', cleanup); + source.on('close', cleanup); + + dest.on('close', cleanup); + + dest.emit('pipe', source); + + // Allow for unix-like usage: A.pipe(B).pipe(C) + return dest; +}; + + +/***/ }), +/* 134 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +if (!process.version || + process.version.indexOf('v0.') === 0 || + process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { + module.exports = { nextTick: nextTick }; +} else { + module.exports = process +} + +function nextTick(fn, arg1, arg2, arg3) { + if (typeof fn !== 'function') { + throw new TypeError('"callback" argument must be a function'); + } + var len = arguments.length; + var args, i; + switch (len) { + case 0: + case 1: + return process.nextTick(fn); + case 2: + return process.nextTick(function afterTickOne() { + fn.call(null, arg1); + }); + case 3: + return process.nextTick(function afterTickTwo() { + fn.call(null, arg1, arg2); + }); + case 4: + return process.nextTick(function afterTickThree() { + fn.call(null, arg1, arg2, arg3); + }); + default: + args = new Array(len - 1); + i = 0; + while (i < args.length) { + args[i++] = arguments[i]; + } + return process.nextTick(function afterTick() { + fn.apply(null, args); + }); + } +} + + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32))) + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var inherits = __webpack_require__(7) +var Legacy = __webpack_require__(593) +var Base = __webpack_require__(70) +var Buffer = __webpack_require__(4).Buffer +var md5 = __webpack_require__(270) +var RIPEMD160 = __webpack_require__(179) + +var sha = __webpack_require__(180) + +var ZEROS = Buffer.alloc(128) + +function Hmac (alg, key) { + Base.call(this, 'digest') + if (typeof key === 'string') { + key = Buffer.from(key) + } + + var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 + + this._alg = alg + this._key = key + if (key.length > blocksize) { + var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) + key = hash.update(key).digest() + } else if (key.length < blocksize) { + key = Buffer.concat([key, ZEROS], blocksize) + } + + var ipad = this._ipad = Buffer.allocUnsafe(blocksize) + var opad = this._opad = Buffer.allocUnsafe(blocksize) + + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg) + this._hash.update(ipad) +} + +inherits(Hmac, Base) + +Hmac.prototype._update = function (data) { + this._hash.update(data) +} + +Hmac.prototype._final = function () { + var h = this._hash.digest() + var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg) + return hash.update(this._opad).update(h).digest() +} + +module.exports = function createHmac (alg, key) { + alg = alg.toLowerCase() + if (alg === 'rmd160' || alg === 'ripemd160') { + return new Hmac('rmd160', key) + } + if (alg === 'md5') { + return new Legacy(md5, key) + } + return new Hmac(alg, key) +} + + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +// based on the aes implimentation in triple sec +// https://github.com/keybase/triplesec +// which is in turn based on the one from crypto-js +// https://code.google.com/p/crypto-js/ + +var Buffer = __webpack_require__(4).Buffer + +function asUInt32Array (buf) { + if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf) + + var len = (buf.length / 4) | 0 + var out = new Array(len) + + for (var i = 0; i < len; i++) { + out[i] = buf.readUInt32BE(i * 4) + } + + return out +} + +function scrubVec (v) { + for (var i = 0; i < v.length; v++) { + v[i] = 0 + } +} + +function cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) { + var SUB_MIX0 = SUB_MIX[0] + var SUB_MIX1 = SUB_MIX[1] + var SUB_MIX2 = SUB_MIX[2] + var SUB_MIX3 = SUB_MIX[3] + + var s0 = M[0] ^ keySchedule[0] + var s1 = M[1] ^ keySchedule[1] + var s2 = M[2] ^ keySchedule[2] + var s3 = M[3] ^ keySchedule[3] + var t0, t1, t2, t3 + var ksRow = 4 + + for (var round = 1; round < nRounds; round++) { + t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++] + t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++] + t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++] + t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++] + s0 = t0 + s1 = t1 + s2 = t2 + s3 = t3 + } + + t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++] + t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++] + t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++] + t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++] + t0 = t0 >>> 0 + t1 = t1 >>> 0 + t2 = t2 >>> 0 + t3 = t3 >>> 0 + + return [t0, t1, t2, t3] +} + +// AES constants +var RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36] +var G = (function () { + // Compute double table + var d = new Array(256) + for (var j = 0; j < 256; j++) { + if (j < 128) { + d[j] = j << 1 + } else { + d[j] = (j << 1) ^ 0x11b + } + } + + var SBOX = [] + var INV_SBOX = [] + var SUB_MIX = [[], [], [], []] + var INV_SUB_MIX = [[], [], [], []] + + // Walk GF(2^8) + var x = 0 + var xi = 0 + for (var i = 0; i < 256; ++i) { + // Compute sbox + var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4) + sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63 + SBOX[x] = sx + INV_SBOX[sx] = x + + // Compute multiplication + var x2 = d[x] + var x4 = d[x2] + var x8 = d[x4] + + // Compute sub bytes, mix columns tables + var t = (d[sx] * 0x101) ^ (sx * 0x1010100) + SUB_MIX[0][x] = (t << 24) | (t >>> 8) + SUB_MIX[1][x] = (t << 16) | (t >>> 16) + SUB_MIX[2][x] = (t << 8) | (t >>> 24) + SUB_MIX[3][x] = t + + // Compute inv sub bytes, inv mix columns tables + t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100) + INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8) + INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16) + INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24) + INV_SUB_MIX[3][sx] = t + + if (x === 0) { + x = xi = 1 + } else { + x = x2 ^ d[d[d[x8 ^ x2]]] + xi ^= d[d[xi]] + } + } + + return { + SBOX: SBOX, + INV_SBOX: INV_SBOX, + SUB_MIX: SUB_MIX, + INV_SUB_MIX: INV_SUB_MIX + } +})() + +function AES (key) { + this._key = asUInt32Array(key) + this._reset() +} + +AES.blockSize = 4 * 4 +AES.keySize = 256 / 8 +AES.prototype.blockSize = AES.blockSize +AES.prototype.keySize = AES.keySize +AES.prototype._reset = function () { + var keyWords = this._key + var keySize = keyWords.length + var nRounds = keySize + 6 + var ksRows = (nRounds + 1) * 4 + + var keySchedule = [] + for (var k = 0; k < keySize; k++) { + keySchedule[k] = keyWords[k] + } + + for (k = keySize; k < ksRows; k++) { + var t = keySchedule[k - 1] + + if (k % keySize === 0) { + t = (t << 8) | (t >>> 24) + t = + (G.SBOX[t >>> 24] << 24) | + (G.SBOX[(t >>> 16) & 0xff] << 16) | + (G.SBOX[(t >>> 8) & 0xff] << 8) | + (G.SBOX[t & 0xff]) + + t ^= RCON[(k / keySize) | 0] << 24 + } else if (keySize > 6 && k % keySize === 4) { + t = + (G.SBOX[t >>> 24] << 24) | + (G.SBOX[(t >>> 16) & 0xff] << 16) | + (G.SBOX[(t >>> 8) & 0xff] << 8) | + (G.SBOX[t & 0xff]) + } + + keySchedule[k] = keySchedule[k - keySize] ^ t + } + + var invKeySchedule = [] + for (var ik = 0; ik < ksRows; ik++) { + var ksR = ksRows - ik + var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)] + + if (ik < 4 || ksR <= 4) { + invKeySchedule[ik] = tt + } else { + invKeySchedule[ik] = + G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^ + G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^ + G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^ + G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]] + } + } + + this._nRounds = nRounds + this._keySchedule = keySchedule + this._invKeySchedule = invKeySchedule +} + +AES.prototype.encryptBlockRaw = function (M) { + M = asUInt32Array(M) + return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds) +} + +AES.prototype.encryptBlock = function (M) { + var out = this.encryptBlockRaw(M) + var buf = Buffer.allocUnsafe(16) + buf.writeUInt32BE(out[0], 0) + buf.writeUInt32BE(out[1], 4) + buf.writeUInt32BE(out[2], 8) + buf.writeUInt32BE(out[3], 12) + return buf +} + +AES.prototype.decryptBlock = function (M) { + M = asUInt32Array(M) + + // swap + var m1 = M[1] + M[1] = M[3] + M[3] = m1 + + var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds) + var buf = Buffer.allocUnsafe(16) + buf.writeUInt32BE(out[0], 0) + buf.writeUInt32BE(out[3], 4) + buf.writeUInt32BE(out[2], 8) + buf.writeUInt32BE(out[1], 12) + return buf +} + +AES.prototype.scrub = function () { + scrubVec(this._keySchedule) + scrubVec(this._invKeySchedule) + scrubVec(this._key) +} + +module.exports.AES = AES + + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__(4).Buffer +var MD5 = __webpack_require__(175) + +/* eslint-disable camelcase */ +function EVP_BytesToKey (password, salt, keyBits, ivLen) { + if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary') + if (salt) { + if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary') + if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length') + } + + var keyLen = keyBits / 8 + var key = Buffer.alloc(keyLen) + var iv = Buffer.alloc(ivLen || 0) + var tmp = Buffer.alloc(0) + + while (keyLen > 0 || ivLen > 0) { + var hash = new MD5() + hash.update(tmp) + hash.update(password) + if (salt) hash.update(salt) + tmp = hash.digest() + + var used = 0 + + if (keyLen > 0) { + var keyStart = key.length - keyLen + used = Math.min(keyLen, tmp.length) + tmp.copy(key, keyStart, 0, used) + keyLen -= used + } + + if (used < tmp.length && ivLen > 0) { + var ivStart = iv.length - ivLen + var length = Math.min(ivLen, tmp.length - used) + tmp.copy(iv, ivStart, used, used + length) + ivLen -= length + } + } + + tmp.fill(0) + return { key: key, iv: iv } +} + +module.exports = EVP_BytesToKey + + +/***/ }), +/* 138 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var curve = exports; + +curve.base = __webpack_require__(622); +curve.short = __webpack_require__(623); +curve.mont = __webpack_require__(624); +curve.edwards = __webpack_require__(625); + + +/***/ }), +/* 139 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var asn1 = __webpack_require__(641) +var aesid = __webpack_require__(652) +var fixProc = __webpack_require__(653) +var ciphers = __webpack_require__(182) +var compat = __webpack_require__(272) +module.exports = parseKeys + +function parseKeys (buffer) { + var password + if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) { + password = buffer.passphrase + buffer = buffer.key + } + if (typeof buffer === 'string') { + buffer = new Buffer(buffer) + } + + var stripped = fixProc(buffer, password) + + var type = stripped.tag + var data = stripped.data + var subtype, ndata + switch (type) { + case 'CERTIFICATE': + ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo + // falls through + case 'PUBLIC KEY': + if (!ndata) { + ndata = asn1.PublicKey.decode(data, 'der') + } + subtype = ndata.algorithm.algorithm.join('.') + switch (subtype) { + case '1.2.840.113549.1.1.1': + return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der') + case '1.2.840.10045.2.1': + ndata.subjectPrivateKey = ndata.subjectPublicKey + return { + type: 'ec', + data: ndata + } + case '1.2.840.10040.4.1': + ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der') + return { + type: 'dsa', + data: ndata.algorithm.params + } + default: throw new Error('unknown key id ' + subtype) + } + throw new Error('unknown key type ' + type) + case 'ENCRYPTED PRIVATE KEY': + data = asn1.EncryptedPrivateKey.decode(data, 'der') + data = decrypt(data, password) + // falls through + case 'PRIVATE KEY': + ndata = asn1.PrivateKey.decode(data, 'der') + subtype = ndata.algorithm.algorithm.join('.') + switch (subtype) { + case '1.2.840.113549.1.1.1': + return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der') + case '1.2.840.10045.2.1': + return { + curve: ndata.algorithm.curve, + privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey + } + case '1.2.840.10040.4.1': + ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der') + return { + type: 'dsa', + params: ndata.algorithm.params + } + default: throw new Error('unknown key id ' + subtype) + } + throw new Error('unknown key type ' + type) + case 'RSA PUBLIC KEY': + return asn1.RSAPublicKey.decode(data, 'der') + case 'RSA PRIVATE KEY': + return asn1.RSAPrivateKey.decode(data, 'der') + case 'DSA PRIVATE KEY': + return { + type: 'dsa', + params: asn1.DSAPrivateKey.decode(data, 'der') + } + case 'EC PRIVATE KEY': + data = asn1.ECPrivateKey.decode(data, 'der') + return { + curve: data.parameters.value, + privateKey: data.privateKey + } + default: throw new Error('unknown key type ' + type) + } +} +parseKeys.signature = asn1.signature +function decrypt (data, password) { + var salt = data.algorithm.decrypt.kde.kdeparams.salt + var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10) + var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')] + var iv = data.algorithm.decrypt.cipher.iv + var cipherText = data.subjectPrivateKey + var keylen = parseInt(algo.split('-')[1], 10) / 8 + var key = compat.pbkdf2Sync(password, salt, iters, keylen) + var cipher = ciphers.createDecipheriv(algo, key, iv) + var out = [] + out.push(cipher.update(cipherText)) + out.push(cipher.final()) + return Buffer.concat(out) +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 140 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(719); + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {(function() { + var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex; + + ipaddr = {}; + + root = this; + + if ((typeof module !== "undefined" && module !== null) && module.exports) { + module.exports = ipaddr; + } else { + root['ipaddr'] = ipaddr; + } + + matchCIDR = function(first, second, partSize, cidrBits) { + var part, shift; + if (first.length !== second.length) { + throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); + } + part = 0; + while (cidrBits > 0) { + shift = partSize - cidrBits; + if (shift < 0) { + shift = 0; + } + if (first[part] >> shift !== second[part] >> shift) { + return false; + } + cidrBits -= partSize; + part += 1; + } + return true; + }; + + ipaddr.subnetMatch = function(address, rangeList, defaultName) { + var k, len, rangeName, rangeSubnets, subnet; + if (defaultName == null) { + defaultName = 'unicast'; + } + for (rangeName in rangeList) { + rangeSubnets = rangeList[rangeName]; + if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) { + rangeSubnets = [rangeSubnets]; + } + for (k = 0, len = rangeSubnets.length; k < len; k++) { + subnet = rangeSubnets[k]; + if (address.kind() === subnet[0].kind()) { + if (address.match.apply(address, subnet)) { + return rangeName; + } + } + } + } + return defaultName; + }; + + ipaddr.IPv4 = (function() { + function IPv4(octets) { + var k, len, octet; + if (octets.length !== 4) { + throw new Error("ipaddr: ipv4 octet count should be 4"); + } + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!((0 <= octet && octet <= 255))) { + throw new Error("ipaddr: ipv4 octet should fit in 8 bits"); + } + } + this.octets = octets; + } + + IPv4.prototype.kind = function() { + return 'ipv4'; + }; + + IPv4.prototype.toString = function() { + return this.octets.join("."); + }; + + IPv4.prototype.toNormalizedString = function() { + return this.toString(); + }; + + IPv4.prototype.toByteArray = function() { + return this.octets.slice(0); + }; + + IPv4.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== 'ipv4') { + throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); + } + return matchCIDR(this.octets, other.octets, 8, cidrRange); + }; + + IPv4.prototype.SpecialRanges = { + unspecified: [[new IPv4([0, 0, 0, 0]), 8]], + broadcast: [[new IPv4([255, 255, 255, 255]), 32]], + multicast: [[new IPv4([224, 0, 0, 0]), 4]], + linkLocal: [[new IPv4([169, 254, 0, 0]), 16]], + loopback: [[new IPv4([127, 0, 0, 0]), 8]], + carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]], + "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]], + reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]] + }; + + IPv4.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + + IPv4.prototype.toIPv4MappedAddress = function() { + return ipaddr.IPv6.parse("::ffff:" + (this.toString())); + }; + + IPv4.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, octet, stop, zeros, zerotable; + zerotable = { + 0: 8, + 128: 7, + 192: 6, + 224: 5, + 240: 4, + 248: 3, + 252: 2, + 254: 1, + 255: 0 + }; + cidr = 0; + stop = false; + for (i = k = 3; k >= 0; i = k += -1) { + octet = this.octets[i]; + if (octet in zerotable) { + zeros = zerotable[octet]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 8) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 32 - cidr; + }; + + return IPv4; + + })(); + + ipv4Part = "(0?\\d+|0x[a-f0-9]+)"; + + ipv4Regexes = { + fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", 'i'), + longValue: new RegExp("^" + ipv4Part + "$", 'i') + }; + + ipaddr.IPv4.parser = function(string) { + var match, parseIntAuto, part, shift, value; + parseIntAuto = function(string) { + if (string[0] === "0" && string[1] !== "x") { + return parseInt(string, 8); + } else { + return parseInt(string); + } + }; + if (match = string.match(ipv4Regexes.fourOctet)) { + return (function() { + var k, len, ref, results; + ref = match.slice(1, 6); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseIntAuto(part)); + } + return results; + })(); + } else if (match = string.match(ipv4Regexes.longValue)) { + value = parseIntAuto(match[1]); + if (value > 0xffffffff || value < 0) { + throw new Error("ipaddr: address outside defined range"); + } + return ((function() { + var k, results; + results = []; + for (shift = k = 0; k <= 24; shift = k += 8) { + results.push((value >> shift) & 0xff); + } + return results; + })()).reverse(); + } else { + return null; + } + }; + + ipaddr.IPv6 = (function() { + function IPv6(parts, zoneId) { + var i, k, l, len, part, ref; + if (parts.length === 16) { + this.parts = []; + for (i = k = 0; k <= 14; i = k += 2) { + this.parts.push((parts[i] << 8) | parts[i + 1]); + } + } else if (parts.length === 8) { + this.parts = parts; + } else { + throw new Error("ipaddr: ipv6 part count should be 8 or 16"); + } + ref = this.parts; + for (l = 0, len = ref.length; l < len; l++) { + part = ref[l]; + if (!((0 <= part && part <= 0xffff))) { + throw new Error("ipaddr: ipv6 part should fit in 16 bits"); + } + } + if (zoneId) { + this.zoneId = zoneId; + } + } + + IPv6.prototype.kind = function() { + return 'ipv6'; + }; + + IPv6.prototype.toString = function() { + return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, '::'); + }; + + IPv6.prototype.toByteArray = function() { + var bytes, k, len, part, ref; + bytes = []; + ref = this.parts; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + bytes.push(part >> 8); + bytes.push(part & 0xff); + } + return bytes; + }; + + IPv6.prototype.toNormalizedString = function() { + var addr, part, suffix; + addr = ((function() { + var k, len, ref, results; + ref = this.parts; + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(part.toString(16)); + } + return results; + }).call(this)).join(":"); + suffix = ''; + if (this.zoneId) { + suffix = '%' + this.zoneId; + } + return addr + suffix; + }; + + IPv6.prototype.match = function(other, cidrRange) { + var ref; + if (cidrRange === void 0) { + ref = other, other = ref[0], cidrRange = ref[1]; + } + if (other.kind() !== 'ipv6') { + throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); + } + return matchCIDR(this.parts, other.parts, 16, cidrRange); + }; + + IPv6.prototype.SpecialRanges = { + unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128], + linkLocal: [new IPv6([0xfe80, 0, 0, 0, 0, 0, 0, 0]), 10], + multicast: [new IPv6([0xff00, 0, 0, 0, 0, 0, 0, 0]), 8], + loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128], + uniqueLocal: [new IPv6([0xfc00, 0, 0, 0, 0, 0, 0, 0]), 7], + ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 0xffff, 0, 0]), 96], + rfc6145: [new IPv6([0, 0, 0, 0, 0xffff, 0, 0, 0]), 96], + rfc6052: [new IPv6([0x64, 0xff9b, 0, 0, 0, 0, 0, 0]), 96], + '6to4': [new IPv6([0x2002, 0, 0, 0, 0, 0, 0, 0]), 16], + teredo: [new IPv6([0x2001, 0, 0, 0, 0, 0, 0, 0]), 32], + reserved: [[new IPv6([0x2001, 0xdb8, 0, 0, 0, 0, 0, 0]), 32]] + }; + + IPv6.prototype.range = function() { + return ipaddr.subnetMatch(this, this.SpecialRanges); + }; + + IPv6.prototype.isIPv4MappedAddress = function() { + return this.range() === 'ipv4Mapped'; + }; + + IPv6.prototype.toIPv4Address = function() { + var high, low, ref; + if (!this.isIPv4MappedAddress()) { + throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); + } + ref = this.parts.slice(-2), high = ref[0], low = ref[1]; + return new ipaddr.IPv4([high >> 8, high & 0xff, low >> 8, low & 0xff]); + }; + + IPv6.prototype.prefixLengthFromSubnetMask = function() { + var cidr, i, k, part, stop, zeros, zerotable; + zerotable = { + 0: 16, + 32768: 15, + 49152: 14, + 57344: 13, + 61440: 12, + 63488: 11, + 64512: 10, + 65024: 9, + 65280: 8, + 65408: 7, + 65472: 6, + 65504: 5, + 65520: 4, + 65528: 3, + 65532: 2, + 65534: 1, + 65535: 0 + }; + cidr = 0; + stop = false; + for (i = k = 7; k >= 0; i = k += -1) { + part = this.parts[i]; + if (part in zerotable) { + zeros = zerotable[part]; + if (stop && zeros !== 0) { + return null; + } + if (zeros !== 16) { + stop = true; + } + cidr += zeros; + } else { + return null; + } + } + return 128 - cidr; + }; + + return IPv6; + + })(); + + ipv6Part = "(?:[0-9a-f]+::?)+"; + + zoneIndex = "%[0-9a-z]{1,}"; + + ipv6Regexes = { + zoneIndex: new RegExp(zoneIndex, 'i'), + "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?(" + zoneIndex + ")?$", 'i'), + transitional: new RegExp(("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)") + (ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part) + ("(" + zoneIndex + ")?$"), 'i') + }; + + expandIPv6 = function(string, parts) { + var colonCount, lastColon, part, replacement, replacementCount, zoneId; + if (string.indexOf('::') !== string.lastIndexOf('::')) { + return null; + } + zoneId = (string.match(ipv6Regexes['zoneIndex']) || [])[0]; + if (zoneId) { + zoneId = zoneId.substring(1); + string = string.replace(/%.+$/, ''); + } + colonCount = 0; + lastColon = -1; + while ((lastColon = string.indexOf(':', lastColon + 1)) >= 0) { + colonCount++; + } + if (string.substr(0, 2) === '::') { + colonCount--; + } + if (string.substr(-2, 2) === '::') { + colonCount--; + } + if (colonCount > parts) { + return null; + } + replacementCount = parts - colonCount; + replacement = ':'; + while (replacementCount--) { + replacement += '0:'; + } + string = string.replace('::', replacement); + if (string[0] === ':') { + string = string.slice(1); + } + if (string[string.length - 1] === ':') { + string = string.slice(0, -1); + } + parts = (function() { + var k, len, ref, results; + ref = string.split(":"); + results = []; + for (k = 0, len = ref.length; k < len; k++) { + part = ref[k]; + results.push(parseInt(part, 16)); + } + return results; + })(); + return { + parts: parts, + zoneId: zoneId + }; + }; + + ipaddr.IPv6.parser = function(string) { + var addr, k, len, match, octet, octets, zoneId; + if (ipv6Regexes['native'].test(string)) { + return expandIPv6(string, 8); + } else if (match = string.match(ipv6Regexes['transitional'])) { + zoneId = match[6] || ''; + addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6); + if (addr.parts) { + octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])]; + for (k = 0, len = octets.length; k < len; k++) { + octet = octets[k]; + if (!((0 <= octet && octet <= 255))) { + return null; + } + } + addr.parts.push(octets[0] << 8 | octets[1]); + addr.parts.push(octets[2] << 8 | octets[3]); + return { + parts: addr.parts, + zoneId: addr.zoneId + }; + } + } + return null; + }; + + ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) { + return this.parser(string) !== null; + }; + + ipaddr.IPv4.isValid = function(string) { + var e; + try { + new this(this.parser(string)); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + + ipaddr.IPv4.isValidFourPartDecimal = function(string) { + if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)) { + return true; + } else { + return false; + } + }; + + ipaddr.IPv6.isValid = function(string) { + var addr, e; + if (typeof string === "string" && string.indexOf(":") === -1) { + return false; + } + try { + addr = this.parser(string); + new this(addr.parts, addr.zoneId); + return true; + } catch (error1) { + e = error1; + return false; + } + }; + + ipaddr.IPv4.parse = function(string) { + var parts; + parts = this.parser(string); + if (parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(parts); + }; + + ipaddr.IPv6.parse = function(string) { + var addr; + addr = this.parser(string); + if (addr.parts === null) { + throw new Error("ipaddr: string is not formatted like ip address"); + } + return new this(addr.parts, addr.zoneId); + }; + + ipaddr.IPv4.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 32) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, 'toString', { + value: function() { + return this.join('/'); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range"); + }; + + ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) { + var filledOctetCount, j, octets; + prefix = parseInt(prefix); + if (prefix < 0 || prefix > 32) { + throw new Error('ipaddr: invalid IPv4 prefix length'); + } + octets = [0, 0, 0, 0]; + j = 0; + filledOctetCount = Math.floor(prefix / 8); + while (j < filledOctetCount) { + octets[j] = 255; + j++; + } + if (filledOctetCount < 4) { + octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - (prefix % 8); + } + return new this(octets); + }; + + ipaddr.IPv4.broadcastAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error('ipaddr: the address does not have IPv4 CIDR format'); + } + }; + + ipaddr.IPv4.networkAddressFromCIDR = function(string) { + var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; + try { + cidr = this.parseCIDR(string); + ipInterfaceOctets = cidr[0].toByteArray(); + subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); + octets = []; + i = 0; + while (i < 4) { + octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10)); + i++; + } + return new this(octets); + } catch (error1) { + error = error1; + throw new Error('ipaddr: the address does not have IPv4 CIDR format'); + } + }; + + ipaddr.IPv6.parseCIDR = function(string) { + var maskLength, match, parsed; + if (match = string.match(/^(.+)\/(\d+)$/)) { + maskLength = parseInt(match[2]); + if (maskLength >= 0 && maskLength <= 128) { + parsed = [this.parse(match[1]), maskLength]; + Object.defineProperty(parsed, 'toString', { + value: function() { + return this.join('/'); + } + }); + return parsed; + } + } + throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range"); + }; + + ipaddr.isValid = function(string) { + return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string); + }; + + ipaddr.parse = function(string) { + if (ipaddr.IPv6.isValid(string)) { + return ipaddr.IPv6.parse(string); + } else if (ipaddr.IPv4.isValid(string)) { + return ipaddr.IPv4.parse(string); + } else { + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); + } + }; + + ipaddr.parseCIDR = function(string) { + var e; + try { + return ipaddr.IPv6.parseCIDR(string); + } catch (error1) { + e = error1; + try { + return ipaddr.IPv4.parseCIDR(string); + } catch (error1) { + e = error1; + throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format"); + } + } + }; + + ipaddr.fromByteArray = function(bytes) { + var length; + length = bytes.length; + if (length === 4) { + return new ipaddr.IPv4(bytes); + } else if (length === 16) { + return new ipaddr.IPv6(bytes); + } else { + throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address"); + } + }; + + ipaddr.process = function(string) { + var addr; + addr = this.parse(string); + if (addr.kind() === 'ipv6' && addr.isIPv4MappedAddress()) { + return addr.toIPv4Address(); + } else { + return addr; + } + }; + +}).call(this); + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(92)(module))) + +/***/ }), +/* 142 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__PPoW_Blockchain_Proof_Basic__ = __webpack_require__(337); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__ = __webpack_require__(8); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__utils_BufferExtended__ = __webpack_require__(3); +/** + * Known as π + */ + + + + + +class PPowBlockchainProofPi extends __WEBPACK_IMPORTED_MODULE_0__PPoW_Blockchain_Proof_Basic__["a" /* default */]{ + + constructor(blockchain, blocks){ + super(blockchain, blocks) + this.proofGzip = undefined; + } + + /** + * Returns ths upchain of current chain(C ↑ µ). + */ + blocksGreaterLevel(miu){ + + let list = []; + + for (let i = 0; i < this.blocks.length; ++i) + if (miu <= this.blocks[i].level) + list.push(this.blocks[i]); + + return new PPowBlockchainProofPi(this.blockchain, list); + } + + /** + * Returns ths downchain of current chain(C ↓ µ). + */ + blocksLessLevel(miu){ + + let list = []; + + for (let i = 0; i < this.blocks.length; ++i) + if (this.blocks[i].level <= miu) + list.push(this.blocks[i]); + + return new PPowBlockchainProofPi(this.blockchain, list); + } + + /** + * + * @param underlyingChain C + * @param superChain C' + */ + downSuperChainGetUnderlyingChain(underlyingChain ){ + + //finding C[ C'[0] : + let first = -1, last = -1; + + for (let i=0; i=0; i--) + if (underlyingChain.blocks[i] === this.blocks[this.blocks.length-1]) { + last = i; + break; + } + + if (first === undefined || last === undefined) + return 0 ; + else { + + if (last < first){ + let aux = last; + last = first; + first = aux; + } + + return last-first+1; + } + } + + serializeProof (proof){ + + let buffer = []; + + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeNumber1Byte(proof.version)); + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeNumber3Bytes(proof.height)); + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes(proof.timeStamp)); + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeNumber4Bytes(proof.nonce)); + + buffer.push(proof.data.hashData); + buffer.push(proof.data.hashAccountantTree); + + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeHashOptimized(proof.difficultyTargetPrev)); + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeHashOptimized(proof.hash)); + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeHashOptimized(proof.hashPrev)); + + buffer.push(__WEBPACK_IMPORTED_MODULE_1_common_utils_Serialization__["a" /* default */].serializeNumber1Byte(proof.interlinks.length)); + + let interlinks = []; + let containGemesis = false; + let genesisPosition = 0; + + for(let i=0; i= 0; + this.acceptBlocks = params.indexOf("acceptBlocks") >= 0; + + __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/connected", (result) => { + this._initializeNewSocket(result) + }); + + __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/disconnected", (result) => { + this._uninitializeSocket(result) + }); + + //already connected sockets + for (let i=0; i<__WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].nodes.length; i++) + this._initializeNewSocket(__WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].nodes[i]); + + this.createForkSolver(); + this.createForksManager(); + } + + createForkSolver(){ + this.forkSolver = new __WEBPACK_IMPORTED_MODULE_1__Interface_Blockchain_Protocol_Fork_Solver__["a" /* default */](this.blockchain, this); + } + + createForksManager(){ + this.forksManager = new __WEBPACK_IMPORTED_MODULE_2__Interface_Blockchain_Protocol_Forks_Manager__["a" /* default */](this.blockchain, this); + } + + _validateBlockchainHeader(data){ + + if ( data === undefined || data === null) throw {message: "data is not defined"}; + + // validating data + if (typeof data.chainLength !== 'number') throw {message: 'chainLength is not specified'}; + if (typeof data.chainStartingPoint !== 'number') throw {message: 'chainStartingPoint is not specified'}; + + if (typeof data.height !== 'number') throw {message: 'height is not specified'}; + if (typeof data.header !== 'object') throw {message: 'header is not specified'}; + if (data.header === undefined ) throw {message:'header.header is not specified'}; + if (data.header.hashPrev === undefined ) throw {message:'header.hashPrev is not specified'}; + if (data.header.hash === undefined) throw {message: 'header.hash is not specified'}; + + if (typeof data.header.hashPrev === 'string') + data.header.hashPrev = __WEBPACK_IMPORTED_MODULE_3_common_utils_Serialization__["a" /* default */].fromBase(data.header.hashPrev); + + if (typeof data.header.hash === 'string') + data.header.hash = __WEBPACK_IMPORTED_MODULE_3_common_utils_Serialization__["a" /* default */].fromBase(data.header.hash); + + if ((typeof data.header.nonce === 'number' || Buffer.isBuffer(data.header.nonce)) === false) + throw {message: 'nonce is not specified'}; + + if (typeof data.header.data.hashData === 'string') + data.header.data.hashData = __WEBPACK_IMPORTED_MODULE_3_common_utils_Serialization__["a" /* default */].fromBase(data.header.data.hashData); + + if (data.header.chainLength < data.header.height) + throw {message: 'chainLength is smaller than block height ?? ', dataChainLength: data.header.chainLength, dataHeaderHeight: data.header.height}; + + if (data.header.chainStartingPoint > data.header.height ) + throw {message: 'chainLength is smaller than block height ?? ', dataChainStartingPoint: data.header.chainStartingPoint, dataHeaderHeight: data.header.height}; + + } + + _initializeNewSocket(nodesListObject) { + + let socket = nodesListObject.socket; + + // sending the last block using the protocol + if (this.acceptBlockHeaders) + socket.node.on("head/last-block", ()=>{ + + if (this.blockchain.blocks.length > 0 && this.blockchain.blocks.last !== undefined) { + socket.node.sendRequest("head/last-block/a", { + l: this.blockchain.blocks.length, + h: this.blockchain.blocks.last.hash, + s: this.blockchain.blocks.blocksStartingPoint, + p: this.blockchain.agent.light ? ( this.blockchain.proofPi !== undefined && this.blockchain.proofPi.validatesLastBlock() ? true : false ) : true, + W: this.blockchain.blocks.chainWorkSerialized, + } ); + } + + }); + + if (this.acceptBlockHeaders) + socket.node.on("head/new-block", async (data) => { + + try { + + /* + h hash + l chainLength + s chainStartingPoint + p hasProof (boolean) + W WorkChain + + */ + + if (data === null || (data.l < 0) || ( data.s >= data.l )) return; + + if ( Math.random() < 0.1 ) + console.log("newForkTip", data.l ); + + await this.blockchain.sleep(15+Math.random()*20); + + this.forksManager.newForkTip(socket, data.l, data.s, data.h, data.p, data.W); + + } catch (exception){ + + } + + }); + + if (this.acceptBlockHeaders) + socket.node.on("head/hash", async (h) => { + + try { + + // height + + await this.blockchain.sleep(15+Math.random()*20); + + if (typeof h !== 'number' || this.blockchain.blocks.length <= h) { + socket.node.sendRequest("head/hash", null); + return; + } + + let block = this.blockchain.blocks[h]; + if (block === undefined) socket.node.sendRequest("head/hash", null); + + socket.node.sendRequest("head/hash/" + h, {hash: block.hash}); + + } catch (exception){ + + } + + }); + + + if (this.acceptBlocks) + + socket.node.on("blockchain/blocks/request-block-by-height", async (data) => { + + // data.height + // data.onlyHeader + + try { + + if (typeof data.height !== 'number') + throw {message: "data.height is not defined"}; + + if (this.blockchain.blocks.length <= data.height) + throw {message: "data.height is higher than I have ", blockchainLength:this.blockchain.blocks.length, clientHeight:data.height}; + + let block = this.blockchain.blocks[data.height]; + + if (block === undefined) + throw {message: "block is empty", height: data.height}; + + await this.blockchain.sleep( 15 + Math.random() * 20 ); + + socket.node.sendRequest("blockchain/blocks/request-block-by-height/" + (data.height || 0), { + result: true, + block: block.serializeBlock(data.onlyHeader || false) + }); + + } catch (exception) { + + console.error("Socket Error - blockchain/blocks/request-block-by-height ", exception); + socket.node.sendRequest("blockchain/blocks/request-block-by-height/" + data.height || 0, { + result: false, + message: exception, + }); + + } + + + }); + + if (this.blockchain.agent.consensus) + this.askBlockchain(socket); + + } + + _uninitializeSocket(nodesListObject) { + + let socket = nodesListObject.socket; + + } + + async askBlockchain(socket){ + + try { + + let data = await socket.node.sendRequestWaitOnce("head/last-block", undefined, "a"); + + if (data === null) return false; + + await this.blockchain.sleep(15+Math.random()*20); + + return await this.forksManager.newForkTip(socket, data.l, data.s, data.h, data.p, data.W); + + } catch (exception){ + + console.error("Error asking for Blockchain", exception); + return false; + } + + } + +} + + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceBlockchainProtocol); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 145 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process) { +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(805); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (window.console && (console.firebug || (console.exception && console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs() { + var args = arguments; + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return args; + + var c = 'color: ' + this.color; + args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); + return args; +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + return exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (typeof process !== 'undefined' && 'env' in process) { + return Object({"MINING_POOL_STATUS":undefined}).DEBUG; + } +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage(){ + try { + return window.localStorage; + } catch (e) {} +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32))) + +/***/ }), +/* 146 */ +/***/ (function(module, exports) { + + +module.exports = function(a, b){ + var fn = function(){}; + fn.prototype = b.prototype; + a.prototype = new fn; + a.prototype.constructor = a; +}; + +/***/ }), +/* 147 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process) { +/** + * This is the web browser implementation of `debug()`. + * + * Expose `debug()` as the module. + */ + +exports = module.exports = __webpack_require__(827); +exports.log = log; +exports.formatArgs = formatArgs; +exports.save = save; +exports.load = load; +exports.useColors = useColors; +exports.storage = 'undefined' != typeof chrome + && 'undefined' != typeof chrome.storage + ? chrome.storage.local + : localstorage(); + +/** + * Colors. + */ + +exports.colors = [ + 'lightseagreen', + 'forestgreen', + 'goldenrod', + 'dodgerblue', + 'darkorchid', + 'crimson' +]; + +/** + * Currently only WebKit-based Web Inspectors, Firefox >= v31, + * and the Firebug extension (any Firefox version) are known + * to support "%c" CSS customizations. + * + * TODO: add a `localStorage` variable to explicitly enable/disable colors + */ + +function useColors() { + // is webkit? http://stackoverflow.com/a/16459606/376773 + // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 + return (typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style) || + // is firebug? http://stackoverflow.com/a/398120/376773 + (window.console && (console.firebug || (console.exception && console.table))) || + // is firefox >= v31? + // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages + (navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31); +} + +/** + * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. + */ + +exports.formatters.j = function(v) { + try { + return JSON.stringify(v); + } catch (err) { + return '[UnexpectedJSONParseError]: ' + err.message; + } +}; + + +/** + * Colorize log arguments if enabled. + * + * @api public + */ + +function formatArgs() { + var args = arguments; + var useColors = this.useColors; + + args[0] = (useColors ? '%c' : '') + + this.namespace + + (useColors ? ' %c' : ' ') + + args[0] + + (useColors ? '%c ' : ' ') + + '+' + exports.humanize(this.diff); + + if (!useColors) return args; + + var c = 'color: ' + this.color; + args = [args[0], c, 'color: inherit'].concat(Array.prototype.slice.call(args, 1)); + + // the final "%c" is somewhat tricky, because there could be other + // arguments passed either before or after the %c, so we need to + // figure out the correct index to insert the CSS into + var index = 0; + var lastC = 0; + args[0].replace(/%[a-z%]/g, function(match) { + if ('%%' === match) return; + index++; + if ('%c' === match) { + // we only are interested in the *last* %c + // (the user may have provided their own) + lastC = index; + } + }); + + args.splice(lastC, 0, c); + return args; +} + +/** + * Invokes `console.log()` when available. + * No-op when `console.log` is not a "function". + * + * @api public + */ + +function log() { + // this hackery is required for IE8/9, where + // the `console.log` function doesn't have 'apply' + return 'object' === typeof console + && console.log + && Function.prototype.apply.call(console.log, console, arguments); +} + +/** + * Save `namespaces`. + * + * @param {String} namespaces + * @api private + */ + +function save(namespaces) { + try { + if (null == namespaces) { + exports.storage.removeItem('debug'); + } else { + exports.storage.debug = namespaces; + } + } catch(e) {} +} + +/** + * Load `namespaces`. + * + * @return {String} returns the previously persisted debug modes + * @api private + */ + +function load() { + var r; + try { + return exports.storage.debug; + } catch(e) {} + + // If debug isn't set in LS, and we're in Electron, try to load $DEBUG + if (typeof process !== 'undefined' && 'env' in process) { + return Object({"MINING_POOL_STATUS":undefined}).DEBUG; + } +} + +/** + * Enable namespaces listed in `localStorage.debug` initially. + */ + +exports.enable(load()); + +/** + * Localstorage attempts to return the localstorage. + * + * This is necessary because safari throws + * when a user disables cookies/localstorage + * and you attempt to access it. + * + * @return {LocalStorage} + * @api private + */ + +function localstorage(){ + try { + return window.localStorage; + } catch (e) {} +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32))) + +/***/ }), +/* 148 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(14); +var document = __webpack_require__(10).document; +// typeof document.createElement is 'object' in old IE +var is = isObject(document) && isObject(document.createElement); +module.exports = function (it) { + return is ? document.createElement(it) : {}; +}; + + +/***/ }), +/* 149 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(10); +var core = __webpack_require__(50); +var LIBRARY = __webpack_require__(66); +var wksExt = __webpack_require__(224); +var defineProperty = __webpack_require__(19).f; +module.exports = function (name) { + var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); + if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) }); +}; + + +/***/ }), +/* 150 */ +/***/ (function(module, exports, __webpack_require__) { + +var shared = __webpack_require__(118)('keys'); +var uid = __webpack_require__(74); +module.exports = function (key) { + return shared[key] || (shared[key] = uid(key)); +}; + + +/***/ }), +/* 151 */ +/***/ (function(module, exports) { + +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); + + +/***/ }), +/* 152 */ +/***/ (function(module, exports, __webpack_require__) { + +var document = __webpack_require__(10).document; +module.exports = document && document.documentElement; + + +/***/ }), +/* 153 */ +/***/ (function(module, exports, __webpack_require__) { + +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = __webpack_require__(14); +var anObject = __webpack_require__(9); +var check = function (O, proto) { + anObject(O); + if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function (test, buggy, set) { + try { + set = __webpack_require__(51)(Function.call, __webpack_require__(44).f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch (e) { buggy = true; } + return function setPrototypeOf(O, proto) { + check(O, proto); + if (buggy) O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; + + +/***/ }), +/* 154 */ +/***/ (function(module, exports) { + +module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; + + +/***/ }), +/* 155 */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(14); +var setPrototypeOf = __webpack_require__(153).set; +module.exports = function (that, target, C) { + var S = target.constructor; + var P; + if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) { + setPrototypeOf(that, P); + } return that; +}; + + +/***/ }), +/* 156 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var toInteger = __webpack_require__(56); +var defined = __webpack_require__(55); + +module.exports = function repeat(count) { + var str = String(defined(this)); + var res = ''; + var n = toInteger(count); + if (n < 0 || n == Infinity) throw RangeError("Count can't be negative"); + for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str; + return res; +}; + + +/***/ }), +/* 157 */ +/***/ (function(module, exports) { + +// 20.2.2.28 Math.sign(x) +module.exports = Math.sign || function sign(x) { + // eslint-disable-next-line no-self-compare + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; +}; + + +/***/ }), +/* 158 */ +/***/ (function(module, exports) { + +// 20.2.2.14 Math.expm1(x) +var $expm1 = Math.expm1; +module.exports = (!$expm1 + // Old FF bug + || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 + // Tor Browser bug + || $expm1(-2e-17) != -2e-17 +) ? function expm1(x) { + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; +} : $expm1; + + +/***/ }), +/* 159 */ +/***/ (function(module, exports, __webpack_require__) { + +var toInteger = __webpack_require__(56); +var defined = __webpack_require__(55); +// true -> String#at +// false -> String#codePointAt +module.exports = function (TO_STRING) { + return function (that, pos) { + var s = String(defined(that)); + var i = toInteger(pos); + var l = s.length; + var a, b; + if (i < 0 || i >= l) return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; + + +/***/ }), +/* 160 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var LIBRARY = __webpack_require__(66); +var $export = __webpack_require__(0); +var redefine = __webpack_require__(39); +var hide = __webpack_require__(38); +var Iterators = __webpack_require__(90); +var $iterCreate = __webpack_require__(161); +var setToStringTag = __webpack_require__(88); +var getPrototypeOf = __webpack_require__(45); +var ITERATOR = __webpack_require__(15)('iterator'); +var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next` +var FF_ITERATOR = '@@iterator'; +var KEYS = 'keys'; +var VALUES = 'values'; + +var returnThis = function () { return this; }; + +module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) { + $iterCreate(Constructor, NAME, next); + var getMethod = function (kind) { + if (!BUGGY && kind in proto) return proto[kind]; + switch (kind) { + case KEYS: return function keys() { return new Constructor(this, kind); }; + case VALUES: return function values() { return new Constructor(this, kind); }; + } return function entries() { return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator'; + var DEF_VALUES = DEFAULT == VALUES; + var VALUES_BUG = false; + var proto = Base.prototype; + var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]; + var $default = $native || getMethod(DEFAULT); + var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined; + var $anyNative = NAME == 'Array' ? proto.entries || $native : $native; + var methods, key, IteratorPrototype; + // Fix native + if ($anyNative) { + IteratorPrototype = getPrototypeOf($anyNative.call(new Base())); + if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) { + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if (DEF_VALUES && $native && $native.name !== VALUES) { + VALUES_BUG = true; + $default = function values() { return $native.call(this); }; + } + // Define iterator + if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) { + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if (DEFAULT) { + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if (FORCED) for (key in methods) { + if (!(key in proto)) redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; + + +/***/ }), +/* 161 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var create = __webpack_require__(77); +var descriptor = __webpack_require__(73); +var setToStringTag = __webpack_require__(88); +var IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +__webpack_require__(38)(IteratorPrototype, __webpack_require__(15)('iterator'), function () { return this; }); + +module.exports = function (Constructor, NAME, next) { + Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) }); + setToStringTag(Constructor, NAME + ' Iterator'); +}; + + +/***/ }), +/* 162 */ +/***/ (function(module, exports, __webpack_require__) { + +// helper for String#{startsWith, endsWith, includes} +var isRegExp = __webpack_require__(122); +var defined = __webpack_require__(55); + +module.exports = function (that, searchString, NAME) { + if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!"); + return String(defined(that)); +}; + + +/***/ }), +/* 163 */ +/***/ (function(module, exports, __webpack_require__) { + +var MATCH = __webpack_require__(15)('match'); +module.exports = function (KEY) { + var re = /./; + try { + '/./'[KEY](re); + } catch (e) { + try { + re[MATCH] = false; + return !'/./'[KEY](re); + } catch (f) { /* empty */ } + } return true; +}; + + +/***/ }), +/* 164 */ +/***/ (function(module, exports, __webpack_require__) { + +// check on default Array iterator +var Iterators = __webpack_require__(90); +var ITERATOR = __webpack_require__(15)('iterator'); +var ArrayProto = Array.prototype; + +module.exports = function (it) { + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; + + +/***/ }), +/* 165 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var $defineProperty = __webpack_require__(19); +var createDesc = __webpack_require__(73); + +module.exports = function (object, index, value) { + if (index in object) $defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; + + +/***/ }), +/* 166 */ +/***/ (function(module, exports, __webpack_require__) { + +var classof = __webpack_require__(101); +var ITERATOR = __webpack_require__(15)('iterator'); +var Iterators = __webpack_require__(90); +module.exports = __webpack_require__(50).getIteratorMethod = function (it) { + if (it != undefined) return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; + + +/***/ }), +/* 167 */ +/***/ (function(module, exports, __webpack_require__) { + +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = __webpack_require__(457); + +module.exports = function (original, length) { + return new (speciesConstructor(original))(length); +}; + + +/***/ }), +/* 168 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) + +var toObject = __webpack_require__(24); +var toAbsoluteIndex = __webpack_require__(76); +var toLength = __webpack_require__(20); +module.exports = function fill(value /* , start = 0, end = @length */) { + var O = toObject(this); + var length = toLength(O.length); + var aLen = arguments.length; + var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length); + var end = aLen > 2 ? arguments[2] : undefined; + var endPos = end === undefined ? length : toAbsoluteIndex(end, length); + while (endPos > index) O[index++] = value; + return O; +}; + + +/***/ }), +/* 169 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var addToUnscopables = __webpack_require__(67); +var step = __webpack_require__(240); +var Iterators = __webpack_require__(90); +var toIObject = __webpack_require__(43); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = __webpack_require__(160)(Array, 'Array', function (iterated, kind) { + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function () { + var O = this._t; + var kind = this._k; + var index = this._i++; + if (!O || index >= O.length) { + this._t = undefined; + return step(1); + } + if (kind == 'keys') return step(0, index); + if (kind == 'values') return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); + + +/***/ }), +/* 170 */ +/***/ (function(module, exports, __webpack_require__) { + +var ctx = __webpack_require__(51); +var invoke = __webpack_require__(230); +var html = __webpack_require__(152); +var cel = __webpack_require__(148); +var global = __webpack_require__(10); +var process = global.process; +var setTask = global.setImmediate; +var clearTask = global.clearImmediate; +var MessageChannel = global.MessageChannel; +var Dispatch = global.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; +var run = function () { + var id = +this; + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listener = function (event) { + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if (!setTask || !clearTask) { + setTask = function setImmediate(fn) { + var args = []; + var i = 1; + while (arguments.length > i) args.push(arguments[i++]); + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id) { + delete queue[id]; + }; + // Node.js 0.8- + if (__webpack_require__(52)(process) == 'process') { + defer = function (id) { + process.nextTick(ctx(run, id, 1)); + }; + // Sphere (JS game engine) Dispatch API + } else if (Dispatch && Dispatch.now) { + defer = function (id) { + Dispatch.now(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if (MessageChannel) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) { + defer = function (id) { + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listener, false); + // IE8- + } else if (ONREADYSTATECHANGE in cel('script')) { + defer = function (id) { + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function (id) { + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; + + +/***/ }), +/* 171 */ +/***/ (function(module, exports, __webpack_require__) { + +var global = __webpack_require__(10); +var macrotask = __webpack_require__(170).set; +var Observer = global.MutationObserver || global.WebKitMutationObserver; +var process = global.process; +var Promise = global.Promise; +var isNode = __webpack_require__(52)(process) == 'process'; + +module.exports = function () { + var head, last, notify; + + var flush = function () { + var parent, fn; + if (isNode && (parent = process.domain)) parent.exit(); + while (head) { + fn = head.fn; + head = head.next; + try { + fn(); + } catch (e) { + if (head) notify(); + else last = undefined; + throw e; + } + } last = undefined; + if (parent) parent.enter(); + }; + + // Node.js + if (isNode) { + notify = function () { + process.nextTick(flush); + }; + // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339 + } else if (Observer && !(global.navigator && global.navigator.standalone)) { + var toggle = true; + var node = document.createTextNode(''); + new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new + notify = function () { + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if (Promise && Promise.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + var promise = Promise.resolve(undefined); + notify = function () { + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function () { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } + + return function (fn) { + var task = { fn: fn, next: undefined }; + if (last) last.next = task; + if (!head) { + head = task; + notify(); + } last = task; + }; +}; + + +/***/ }), +/* 172 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 25.4.1.5 NewPromiseCapability(C) +var aFunction = __webpack_require__(30); + +function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +} + +module.exports.f = function (C) { + return new PromiseCapability(C); +}; + + +/***/ }), +/* 173 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var global = __webpack_require__(10); +var DESCRIPTORS = __webpack_require__(18); +var LIBRARY = __webpack_require__(66); +var $typed = __webpack_require__(129); +var hide = __webpack_require__(38); +var redefineAll = __webpack_require__(82); +var fails = __webpack_require__(13); +var anInstance = __webpack_require__(80); +var toInteger = __webpack_require__(56); +var toLength = __webpack_require__(20); +var toIndex = __webpack_require__(249); +var gOPN = __webpack_require__(78).f; +var dP = __webpack_require__(19).f; +var arrayFill = __webpack_require__(168); +var setToStringTag = __webpack_require__(88); +var ARRAY_BUFFER = 'ArrayBuffer'; +var DATA_VIEW = 'DataView'; +var PROTOTYPE = 'prototype'; +var WRONG_LENGTH = 'Wrong length!'; +var WRONG_INDEX = 'Wrong index!'; +var $ArrayBuffer = global[ARRAY_BUFFER]; +var $DataView = global[DATA_VIEW]; +var Math = global.Math; +var RangeError = global.RangeError; +// eslint-disable-next-line no-shadow-restricted-names +var Infinity = global.Infinity; +var BaseBuffer = $ArrayBuffer; +var abs = Math.abs; +var pow = Math.pow; +var floor = Math.floor; +var log = Math.log; +var LN2 = Math.LN2; +var BUFFER = 'buffer'; +var BYTE_LENGTH = 'byteLength'; +var BYTE_OFFSET = 'byteOffset'; +var $BUFFER = DESCRIPTORS ? '_b' : BUFFER; +var $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH; +var $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET; + +// IEEE754 conversions based on https://github.com/feross/ieee754 +function packIEEE754(value, mLen, nBytes) { + var buffer = new Array(nBytes); + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0; + var i = 0; + var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; + var e, m, c; + value = abs(value); + // eslint-disable-next-line no-self-compare + if (value != value || value === Infinity) { + // eslint-disable-next-line no-self-compare + m = value != value ? 1 : 0; + e = eMax; + } else { + e = floor(log(value) / LN2); + if (value * (c = pow(2, -e)) < 1) { + e--; + c *= 2; + } + if (e + eBias >= 1) { + value += rt / c; + } else { + value += rt * pow(2, 1 - eBias); + } + if (value * c >= 2) { + e++; + c /= 2; + } + if (e + eBias >= eMax) { + m = 0; + e = eMax; + } else if (e + eBias >= 1) { + m = (value * c - 1) * pow(2, mLen); + e = e + eBias; + } else { + m = value * pow(2, eBias - 1) * pow(2, mLen); + e = 0; + } + } + for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8); + e = e << mLen | m; + eLen += mLen; + for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8); + buffer[--i] |= s * 128; + return buffer; +} +function unpackIEEE754(buffer, mLen, nBytes) { + var eLen = nBytes * 8 - mLen - 1; + var eMax = (1 << eLen) - 1; + var eBias = eMax >> 1; + var nBits = eLen - 7; + var i = nBytes - 1; + var s = buffer[i--]; + var e = s & 127; + var m; + s >>= 7; + for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8); + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8); + if (e === 0) { + e = 1 - eBias; + } else if (e === eMax) { + return m ? NaN : s ? -Infinity : Infinity; + } else { + m = m + pow(2, mLen); + e = e - eBias; + } return (s ? -1 : 1) * m * pow(2, e - mLen); +} + +function unpackI32(bytes) { + return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0]; +} +function packI8(it) { + return [it & 0xff]; +} +function packI16(it) { + return [it & 0xff, it >> 8 & 0xff]; +} +function packI32(it) { + return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff]; +} +function packF64(it) { + return packIEEE754(it, 52, 8); +} +function packF32(it) { + return packIEEE754(it, 23, 4); +} + +function addGetter(C, key, internal) { + dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } }); +} + +function get(view, bytes, index, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = store.slice(start, start + bytes); + return isLittleEndian ? pack : pack.reverse(); +} +function set(view, bytes, index, conversion, value, isLittleEndian) { + var numIndex = +index; + var intIndex = toIndex(numIndex); + if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b; + var start = intIndex + view[$OFFSET]; + var pack = conversion(+value); + for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1]; +} + +if (!$typed.ABV) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer, ARRAY_BUFFER); + var byteLength = toIndex(length); + this._b = arrayFill.call(new Array(byteLength), 0); + this[$LENGTH] = byteLength; + }; + + $DataView = function DataView(buffer, byteOffset, byteLength) { + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = buffer[$LENGTH]; + var offset = toInteger(byteOffset); + if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH); + this[$BUFFER] = buffer; + this[$OFFSET] = offset; + this[$LENGTH] = byteLength; + }; + + if (DESCRIPTORS) { + addGetter($ArrayBuffer, BYTE_LENGTH, '_l'); + addGetter($DataView, BUFFER, '_b'); + addGetter($DataView, BYTE_LENGTH, '_l'); + addGetter($DataView, BYTE_OFFSET, '_o'); + } + + redefineAll($DataView[PROTOTYPE], { + getInt8: function getInt8(byteOffset) { + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset) { + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /* , littleEndian */) { + var bytes = get(this, 2, byteOffset, arguments[1]); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])); + }, + getUint32: function getUint32(byteOffset /* , littleEndian */) { + return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4); + }, + getFloat64: function getFloat64(byteOffset /* , littleEndian */) { + return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8); + }, + setInt8: function setInt8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setUint8: function setUint8(byteOffset, value) { + set(this, 1, byteOffset, packI8, value); + }, + setInt16: function setInt16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setUint16: function setUint16(byteOffset, value /* , littleEndian */) { + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setInt32: function setInt32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setUint32: function setUint32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) { + set(this, 4, byteOffset, packF32, value, arguments[2]); + }, + setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) { + set(this, 8, byteOffset, packF64, value, arguments[2]); + } + }); +} else { + if (!fails(function () { + $ArrayBuffer(1); + }) || !fails(function () { + new $ArrayBuffer(-1); // eslint-disable-line no-new + }) || fails(function () { + new $ArrayBuffer(); // eslint-disable-line no-new + new $ArrayBuffer(1.5); // eslint-disable-line no-new + new $ArrayBuffer(NaN); // eslint-disable-line no-new + return $ArrayBuffer.name != ARRAY_BUFFER; + })) { + $ArrayBuffer = function ArrayBuffer(length) { + anInstance(this, $ArrayBuffer); + return new BaseBuffer(toIndex(length)); + }; + var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE]; + for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) { + if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]); + } + if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer; + } + // iOS Safari 7.x bug + var view = new $DataView(new $ArrayBuffer(2)); + var $setInt8 = $DataView[PROTOTYPE].setInt8; + view.setInt8(0, 2147483648); + view.setInt8(1, 2147483649); + if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], { + setInt8: function setInt8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value) { + $setInt8.call(this, byteOffset, value << 24 >> 24); + } + }, true); +} +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); +hide($DataView[PROTOTYPE], $typed.VIEW, true); +exports[ARRAY_BUFFER] = $ArrayBuffer; +exports[DATA_VIEW] = $DataView; + + +/***/ }), +/* 174 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = __webpack_require__(83) +exports.createHash = exports.Hash = __webpack_require__(84) +exports.createHmac = exports.Hmac = __webpack_require__(135) + +var algos = __webpack_require__(594) +var algoKeys = Object.keys(algos) +var hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys) +exports.getHashes = function () { + return hashes +} + +var p = __webpack_require__(272) +exports.pbkdf2 = p.pbkdf2 +exports.pbkdf2Sync = p.pbkdf2Sync + +var aes = __webpack_require__(596) + +exports.Cipher = aes.Cipher +exports.createCipher = aes.createCipher +exports.Cipheriv = aes.Cipheriv +exports.createCipheriv = aes.createCipheriv +exports.Decipher = aes.Decipher +exports.createDecipher = aes.createDecipher +exports.Decipheriv = aes.Decipheriv +exports.createDecipheriv = aes.createDecipheriv +exports.getCiphers = aes.getCiphers +exports.listCiphers = aes.listCiphers + +var dh = __webpack_require__(613) + +exports.DiffieHellmanGroup = dh.DiffieHellmanGroup +exports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup +exports.getDiffieHellman = dh.getDiffieHellman +exports.createDiffieHellman = dh.createDiffieHellman +exports.DiffieHellman = dh.DiffieHellman + +var sign = __webpack_require__(618) + +exports.createSign = sign.createSign +exports.Sign = sign.Sign +exports.createVerify = sign.createVerify +exports.Verify = sign.Verify + +exports.createECDH = __webpack_require__(655) + +var publicEncrypt = __webpack_require__(656) + +exports.publicEncrypt = publicEncrypt.publicEncrypt +exports.privateEncrypt = publicEncrypt.privateEncrypt +exports.publicDecrypt = publicEncrypt.publicDecrypt +exports.privateDecrypt = publicEncrypt.privateDecrypt + +// the least I can do is make error messages for the rest of the node.js/crypto api. +// ;[ +// 'createCredentials' +// ].forEach(function (name) { +// exports[name] = function () { +// throw new Error([ +// 'sorry, ' + name + ' is not implemented yet', +// 'we accept pull requests', +// 'https://github.com/crypto-browserify/crypto-browserify' +// ].join('\n')) +// } +// }) + +var rf = __webpack_require__(659) + +exports.randomFill = rf.randomFill +exports.randomFillSync = rf.randomFillSync + +exports.createCredentials = function () { + throw new Error([ + 'sorry, createCredentials is not implemented yet', + 'we accept pull requests', + 'https://github.com/crypto-browserify/crypto-browserify' + ].join('\n')) +} + +exports.constants = { + 'DH_CHECK_P_NOT_SAFE_PRIME': 2, + 'DH_CHECK_P_NOT_PRIME': 1, + 'DH_UNABLE_TO_CHECK_GENERATOR': 4, + 'DH_NOT_SUITABLE_GENERATOR': 8, + 'NPN_ENABLED': 1, + 'ALPN_ENABLED': 1, + 'RSA_PKCS1_PADDING': 1, + 'RSA_SSLV23_PADDING': 2, + 'RSA_NO_PADDING': 3, + 'RSA_PKCS1_OAEP_PADDING': 4, + 'RSA_X931_PADDING': 5, + 'RSA_PKCS1_PSS_PADDING': 6, + 'POINT_CONVERSION_COMPRESSED': 2, + 'POINT_CONVERSION_UNCOMPRESSED': 4, + 'POINT_CONVERSION_HYBRID': 6 +} + + +/***/ }), +/* 175 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) { +var inherits = __webpack_require__(7) +var HashBase = __webpack_require__(263) + +var ARRAY16 = new Array(16) + +function MD5 () { + HashBase.call(this, 64) + + // state + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 +} + +inherits(MD5, HashBase) + +MD5.prototype._update = function () { + var M = ARRAY16 + for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4) + + var a = this._a + var b = this._b + var c = this._c + var d = this._d + + a = fnF(a, b, c, d, M[0], 0xd76aa478, 7) + d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12) + c = fnF(c, d, a, b, M[2], 0x242070db, 17) + b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22) + a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7) + d = fnF(d, a, b, c, M[5], 0x4787c62a, 12) + c = fnF(c, d, a, b, M[6], 0xa8304613, 17) + b = fnF(b, c, d, a, M[7], 0xfd469501, 22) + a = fnF(a, b, c, d, M[8], 0x698098d8, 7) + d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12) + c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17) + b = fnF(b, c, d, a, M[11], 0x895cd7be, 22) + a = fnF(a, b, c, d, M[12], 0x6b901122, 7) + d = fnF(d, a, b, c, M[13], 0xfd987193, 12) + c = fnF(c, d, a, b, M[14], 0xa679438e, 17) + b = fnF(b, c, d, a, M[15], 0x49b40821, 22) + + a = fnG(a, b, c, d, M[1], 0xf61e2562, 5) + d = fnG(d, a, b, c, M[6], 0xc040b340, 9) + c = fnG(c, d, a, b, M[11], 0x265e5a51, 14) + b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20) + a = fnG(a, b, c, d, M[5], 0xd62f105d, 5) + d = fnG(d, a, b, c, M[10], 0x02441453, 9) + c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14) + b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20) + a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5) + d = fnG(d, a, b, c, M[14], 0xc33707d6, 9) + c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14) + b = fnG(b, c, d, a, M[8], 0x455a14ed, 20) + a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5) + d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9) + c = fnG(c, d, a, b, M[7], 0x676f02d9, 14) + b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20) + + a = fnH(a, b, c, d, M[5], 0xfffa3942, 4) + d = fnH(d, a, b, c, M[8], 0x8771f681, 11) + c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16) + b = fnH(b, c, d, a, M[14], 0xfde5380c, 23) + a = fnH(a, b, c, d, M[1], 0xa4beea44, 4) + d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11) + c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16) + b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23) + a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4) + d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11) + c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16) + b = fnH(b, c, d, a, M[6], 0x04881d05, 23) + a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4) + d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11) + c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16) + b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23) + + a = fnI(a, b, c, d, M[0], 0xf4292244, 6) + d = fnI(d, a, b, c, M[7], 0x432aff97, 10) + c = fnI(c, d, a, b, M[14], 0xab9423a7, 15) + b = fnI(b, c, d, a, M[5], 0xfc93a039, 21) + a = fnI(a, b, c, d, M[12], 0x655b59c3, 6) + d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10) + c = fnI(c, d, a, b, M[10], 0xffeff47d, 15) + b = fnI(b, c, d, a, M[1], 0x85845dd1, 21) + a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6) + d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10) + c = fnI(c, d, a, b, M[6], 0xa3014314, 15) + b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21) + a = fnI(a, b, c, d, M[4], 0xf7537e82, 6) + d = fnI(d, a, b, c, M[11], 0xbd3af235, 10) + c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15) + b = fnI(b, c, d, a, M[9], 0xeb86d391, 21) + + this._a = (this._a + a) | 0 + this._b = (this._b + b) | 0 + this._c = (this._c + c) | 0 + this._d = (this._d + d) | 0 +} + +MD5.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80 + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64) + this._update() + this._blockOffset = 0 + } + + this._block.fill(0, this._blockOffset, 56) + this._block.writeUInt32LE(this._length[0], 56) + this._block.writeUInt32LE(this._length[1], 60) + this._update() + + // produce result + var buffer = new Buffer(16) + buffer.writeInt32LE(this._a, 0) + buffer.writeInt32LE(this._b, 4) + buffer.writeInt32LE(this._c, 8) + buffer.writeInt32LE(this._d, 12) + return buffer +} + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fnF (a, b, c, d, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0 +} + +function fnG (a, b, c, d, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0 +} + +function fnH (a, b, c, d, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0 +} + +function fnI (a, b, c, d, m, k, s) { + return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0 +} + +module.exports = MD5 + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 176 */ +/***/ (function(module, exports, __webpack_require__) { + +exports = module.exports = __webpack_require__(264); +exports.Stream = exports; +exports.Readable = exports; +exports.Writable = __webpack_require__(177); +exports.Duplex = __webpack_require__(85); +exports.Transform = __webpack_require__(267); +exports.PassThrough = __webpack_require__(584); + + +/***/ }), +/* 177 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process, setImmediate, global) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// A bit simpler than readable streams. +// Implement an async ._write(chunk, encoding, cb), and it'll handle all +// the drain event emission and buffering. + + + +/**/ + +var pna = __webpack_require__(134); +/**/ + +module.exports = Writable; + +/* */ +function WriteReq(chunk, encoding, cb) { + this.chunk = chunk; + this.encoding = encoding; + this.callback = cb; + this.next = null; +} + +// It seems a linked list but it is not +// there will be only 2 of these for each stream +function CorkedRequest(state) { + var _this = this; + + this.next = null; + this.entry = null; + this.finish = function () { + onCorkedFinish(_this, state); + }; +} +/* */ + +/**/ +var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick; +/**/ + +/**/ +var Duplex; +/**/ + +Writable.WritableState = WritableState; + +/**/ +var util = __webpack_require__(102); +util.inherits = __webpack_require__(7); +/**/ + +/**/ +var internalUtil = { + deprecate: __webpack_require__(583) +}; +/**/ + +/**/ +var Stream = __webpack_require__(265); +/**/ + +/**/ + +var Buffer = __webpack_require__(4).Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +var destroyImpl = __webpack_require__(266); + +util.inherits(Writable, Stream); + +function nop() {} + +function WritableState(options, stream) { + Duplex = Duplex || __webpack_require__(85); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag to indicate whether or not this stream + // contains buffers or objects. + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false + // Note: 0 is a valid value, means that we always return false if + // the entire buffer is not flushed immediately on write() + var hwm = options.highWaterMark; + var writableHwm = options.writableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // if _final has been called + this.finalCalled = false; + + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; + + // has it been destroyed + this.destroyed = false; + + // should we decode strings into buffers before passing to _write? + // this is here so that some node-core streams can optimize string + // handling at a lower level. + var noDecode = options.decodeStrings === false; + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // not an actual buffer we keep track of, but a measurement + // of how much we're waiting to get pushed to some underlying + // socket or file. + this.length = 0; + + // a flag to see when we're in the middle of a write. + this.writing = false; + + // when true all writes will be buffered until .uncork() call + this.corked = 0; + + // a flag to be able to tell if the onwrite cb is called immediately, + // or on a later tick. We set this to true at first, because any + // actions that shouldn't happen until "later" should generally also + // not happen before the first write call. + this.sync = true; + + // a flag to know if we're processing previously buffered items, which + // may call the _write() callback in the same tick, so that we don't + // end up in an overlapped onwrite situation. + this.bufferProcessing = false; + + // the callback that's passed to _write(chunk,cb) + this.onwrite = function (er) { + onwrite(stream, er); + }; + + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + + // the amount that is being written when _write is called. + this.writelen = 0; + + this.bufferedRequest = null; + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks + // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; + + // emit prefinish if the only thing we're waiting for is _write cbs + // This is relevant for synchronous Transform streams + this.prefinished = false; + + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; + + // count buffered requests + this.bufferedRequestCount = 0; + + // allocate the first CorkedRequest, there is always + // one allocated and free to use, and we maintain at most two + this.corkedRequestsFree = new CorkedRequest(this); +} + +WritableState.prototype.getBuffer = function getBuffer() { + var current = this.bufferedRequest; + var out = []; + while (current) { + out.push(current); + current = current.next; + } + return out; +}; + +(function () { + try { + Object.defineProperty(WritableState.prototype, 'buffer', { + get: internalUtil.deprecate(function () { + return this.getBuffer(); + }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') + }); + } catch (_) {} +})(); + +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. +var realHasInstance; +if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { + realHasInstance = Function.prototype[Symbol.hasInstance]; + Object.defineProperty(Writable, Symbol.hasInstance, { + value: function (object) { + if (realHasInstance.call(this, object)) return true; + if (this !== Writable) return false; + + return object && object._writableState instanceof WritableState; + } + }); +} else { + realHasInstance = function (object) { + return object instanceof this; + }; +} + +function Writable(options) { + Duplex = Duplex || __webpack_require__(85); + + // Writable ctor is applied to Duplexes, too. + // `realHasInstance` is necessary because using plain `instanceof` + // would return false, as no `_writableState` property is attached. + + // Trying to use the custom `instanceof` for Writable here will also break the + // Node.js LazyTransform implementation, which has a non-trivial getter for + // `_writableState` that would lead to infinite recursion. + if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) { + return new Writable(options); + } + + this._writableState = new WritableState(options, this); + + // legacy. + this.writable = true; + + if (options) { + if (typeof options.write === 'function') this._write = options.write; + + if (typeof options.writev === 'function') this._writev = options.writev; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + + if (typeof options.final === 'function') this._final = options.final; + } + + Stream.call(this); +} + +// Otherwise people can pipe Writable streams, which is just wrong. +Writable.prototype.pipe = function () { + this.emit('error', new Error('Cannot pipe, not readable')); +}; + +function writeAfterEnd(stream, cb) { + var er = new Error('write after end'); + // TODO: defer error events consistently everywhere, not just the cb + stream.emit('error', er); + pna.nextTick(cb, er); +} + +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. +function validChunk(stream, state, chunk, cb) { + var valid = true; + var er = false; + + if (chunk === null) { + er = new TypeError('May not write null values to stream'); + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + if (er) { + stream.emit('error', er); + pna.nextTick(cb, er); + valid = false; + } + return valid; +} + +Writable.prototype.write = function (chunk, encoding, cb) { + var state = this._writableState; + var ret = false; + var isBuf = !state.objectMode && _isUint8Array(chunk); + + if (isBuf && !Buffer.isBuffer(chunk)) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + + if (typeof cb !== 'function') cb = nop; + + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { + state.pendingcb++; + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); + } + + return ret; +}; + +Writable.prototype.cork = function () { + var state = this._writableState; + + state.corked++; +}; + +Writable.prototype.uncork = function () { + var state = this._writableState; + + if (state.corked) { + state.corked--; + + if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); + } +}; + +Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { + // node::ParseEncoding() requires lower case. + if (typeof encoding === 'string') encoding = encoding.toLowerCase(); + if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); + this._writableState.defaultEncoding = encoding; + return this; +}; + +function decodeChunk(state, chunk, encoding) { + if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { + chunk = Buffer.from(chunk, encoding); + } + return chunk; +} + +Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._writableState.highWaterMark; + } +}); + +// if we're already writing something, then just put this +// in the queue, and wait our turn. Otherwise, call _write +// If we return false, then we need a drain event, so set that flag. +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + var newChunk = decodeChunk(state, chunk, encoding); + if (chunk !== newChunk) { + isBuf = true; + encoding = 'buffer'; + chunk = newChunk; + } + } + var len = state.objectMode ? 1 : chunk.length; + + state.length += len; + + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. + if (!ret) state.needDrain = true; + + if (state.writing || state.corked) { + var last = state.lastBufferedRequest; + state.lastBufferedRequest = { + chunk: chunk, + encoding: encoding, + isBuf: isBuf, + callback: cb, + next: null + }; + if (last) { + last.next = state.lastBufferedRequest; + } else { + state.bufferedRequest = state.lastBufferedRequest; + } + state.bufferedRequestCount += 1; + } else { + doWrite(stream, state, false, len, chunk, encoding, cb); + } + + return ret; +} + +function doWrite(stream, state, writev, len, chunk, encoding, cb) { + state.writelen = len; + state.writecb = cb; + state.writing = true; + state.sync = true; + if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); + state.sync = false; +} + +function onwriteError(stream, state, sync, er, cb) { + --state.pendingcb; + + if (sync) { + // defer the callback if we are being called synchronously + // to avoid piling up things on the stack + pna.nextTick(cb, er); + // this can emit finish, and it will always happen + // after error + pna.nextTick(finishMaybe, stream, state); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + } else { + // the caller expect this to happen before if + // it is async + cb(er); + stream._writableState.errorEmitted = true; + stream.emit('error', er); + // this can emit finish, but finish must + // always follow error + finishMaybe(stream, state); + } +} + +function onwriteStateUpdate(state) { + state.writing = false; + state.writecb = null; + state.length -= state.writelen; + state.writelen = 0; +} + +function onwrite(stream, er) { + var state = stream._writableState; + var sync = state.sync; + var cb = state.writecb; + + onwriteStateUpdate(state); + + if (er) onwriteError(stream, state, sync, er, cb);else { + // Check if we're actually ready to finish, but don't emit yet + var finished = needFinish(state); + + if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { + clearBuffer(stream, state); + } + + if (sync) { + /**/ + asyncWrite(afterWrite, stream, state, finished, cb); + /**/ + } else { + afterWrite(stream, state, finished, cb); + } + } +} + +function afterWrite(stream, state, finished, cb) { + if (!finished) onwriteDrain(stream, state); + state.pendingcb--; + cb(); + finishMaybe(stream, state); +} + +// Must force callback to be called on nextTick, so that we don't +// emit 'drain' before the write() consumer gets the 'false' return +// value, and has a chance to attach a 'drain' listener. +function onwriteDrain(stream, state) { + if (state.length === 0 && state.needDrain) { + state.needDrain = false; + stream.emit('drain'); + } +} + +// if there's something in the buffer waiting, then process it +function clearBuffer(stream, state) { + state.bufferProcessing = true; + var entry = state.bufferedRequest; + + if (stream._writev && entry && entry.next) { + // Fast case, write everything using _writev() + var l = state.bufferedRequestCount; + var buffer = new Array(l); + var holder = state.corkedRequestsFree; + holder.entry = entry; + + var count = 0; + var allBuffers = true; + while (entry) { + buffer[count] = entry; + if (!entry.isBuf) allBuffers = false; + entry = entry.next; + count += 1; + } + buffer.allBuffers = allBuffers; + + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite + state.pendingcb++; + state.lastBufferedRequest = null; + if (holder.next) { + state.corkedRequestsFree = holder.next; + holder.next = null; + } else { + state.corkedRequestsFree = new CorkedRequest(state); + } + state.bufferedRequestCount = 0; + } else { + // Slow case, write chunks one-by-one + while (entry) { + var chunk = entry.chunk; + var encoding = entry.encoding; + var cb = entry.callback; + var len = state.objectMode ? 1 : chunk.length; + + doWrite(stream, state, false, len, chunk, encoding, cb); + entry = entry.next; + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then + // it means that we need to wait until it does. + // also, that means that the chunk and cb are currently + // being processed, so move the buffer counter past them. + if (state.writing) { + break; + } + } + + if (entry === null) state.lastBufferedRequest = null; + } + + state.bufferedRequest = entry; + state.bufferProcessing = false; +} + +Writable.prototype._write = function (chunk, encoding, cb) { + cb(new Error('_write() is not implemented')); +}; + +Writable.prototype._writev = null; + +Writable.prototype.end = function (chunk, encoding, cb) { + var state = this._writableState; + + if (typeof chunk === 'function') { + cb = chunk; + chunk = null; + encoding = null; + } else if (typeof encoding === 'function') { + cb = encoding; + encoding = null; + } + + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); + + // .end() fully uncorks + if (state.corked) { + state.corked = 1; + this.uncork(); + } + + // ignore unnecessary end() calls. + if (!state.ending && !state.finished) endWritable(this, state, cb); +}; + +function needFinish(state) { + return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; +} +function callFinal(stream, state) { + stream._final(function (err) { + state.pendingcb--; + if (err) { + stream.emit('error', err); + } + state.prefinished = true; + stream.emit('prefinish'); + finishMaybe(stream, state); + }); +} +function prefinish(stream, state) { + if (!state.prefinished && !state.finalCalled) { + if (typeof stream._final === 'function') { + state.pendingcb++; + state.finalCalled = true; + pna.nextTick(callFinal, stream, state); + } else { + state.prefinished = true; + stream.emit('prefinish'); + } + } +} + +function finishMaybe(stream, state) { + var need = needFinish(state); + if (need) { + prefinish(stream, state); + if (state.pendingcb === 0) { + state.finished = true; + stream.emit('finish'); + } + } + return need; +} + +function endWritable(stream, state, cb) { + state.ending = true; + finishMaybe(stream, state); + if (cb) { + if (state.finished) pna.nextTick(cb);else stream.once('finish', cb); + } + state.ended = true; + stream.writable = false; +} + +function onCorkedFinish(corkReq, state, err) { + var entry = corkReq.entry; + corkReq.entry = null; + while (entry) { + var cb = entry.callback; + state.pendingcb--; + cb(err); + entry = entry.next; + } + if (state.corkedRequestsFree) { + state.corkedRequestsFree.next = corkReq; + } else { + state.corkedRequestsFree = corkReq; + } +} + +Object.defineProperty(Writable.prototype, 'destroyed', { + get: function () { + if (this._writableState === undefined) { + return false; + } + return this._writableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._writableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._writableState.destroyed = value; + } +}); + +Writable.prototype.destroy = destroyImpl.destroy; +Writable.prototype._undestroy = destroyImpl.undestroy; +Writable.prototype._destroy = function (err, cb) { + this.end(); + cb(err); +}; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32), __webpack_require__(581).setImmediate, __webpack_require__(11))) + +/***/ }), +/* 178 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var Buffer = __webpack_require__(4).Buffer; +/**/ + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = Buffer.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. If an invalid byte is detected, -2 is returned. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return byte >> 6 === 0x02 ? -1 : -2; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i || nb === -2) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'; + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'; + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'; + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character is added when ending on a partial +// character. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'; + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} + +/***/ }), +/* 179 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var Buffer = __webpack_require__(1).Buffer +var inherits = __webpack_require__(7) +var HashBase = __webpack_require__(263) + +var ARRAY16 = new Array(16) + +var zl = [ + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, + 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, + 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, + 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13 +] + +var zr = [ + 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, + 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, + 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, + 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, + 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11 +] + +var sl = [ + 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, + 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, + 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, + 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, + 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6 +] + +var sr = [ + 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, + 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, + 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, + 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, + 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 +] + +var hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e] +var hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000] + +function RIPEMD160 () { + HashBase.call(this, 64) + + // state + this._a = 0x67452301 + this._b = 0xefcdab89 + this._c = 0x98badcfe + this._d = 0x10325476 + this._e = 0xc3d2e1f0 +} + +inherits(RIPEMD160, HashBase) + +RIPEMD160.prototype._update = function () { + var words = ARRAY16 + for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4) + + var al = this._a | 0 + var bl = this._b | 0 + var cl = this._c | 0 + var dl = this._d | 0 + var el = this._e | 0 + + var ar = this._a | 0 + var br = this._b | 0 + var cr = this._c | 0 + var dr = this._d | 0 + var er = this._e | 0 + + // computation + for (var i = 0; i < 80; i += 1) { + var tl + var tr + if (i < 16) { + tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i]) + tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i]) + } else if (i < 32) { + tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i]) + tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i]) + } else if (i < 48) { + tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i]) + tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i]) + } else if (i < 64) { + tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i]) + tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i]) + } else { // if (i<80) { + tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i]) + tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i]) + } + + al = el + el = dl + dl = rotl(cl, 10) + cl = bl + bl = tl + + ar = er + er = dr + dr = rotl(cr, 10) + cr = br + br = tr + } + + // update state + var t = (this._b + cl + dr) | 0 + this._b = (this._c + dl + er) | 0 + this._c = (this._d + el + ar) | 0 + this._d = (this._e + al + br) | 0 + this._e = (this._a + bl + cr) | 0 + this._a = t +} + +RIPEMD160.prototype._digest = function () { + // create padding and handle blocks + this._block[this._blockOffset++] = 0x80 + if (this._blockOffset > 56) { + this._block.fill(0, this._blockOffset, 64) + this._update() + this._blockOffset = 0 + } + + this._block.fill(0, this._blockOffset, 56) + this._block.writeUInt32LE(this._length[0], 56) + this._block.writeUInt32LE(this._length[1], 60) + this._update() + + // produce result + var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20) + buffer.writeInt32LE(this._a, 0) + buffer.writeInt32LE(this._b, 4) + buffer.writeInt32LE(this._c, 8) + buffer.writeInt32LE(this._d, 12) + buffer.writeInt32LE(this._e, 16) + return buffer +} + +function rotl (x, n) { + return (x << n) | (x >>> (32 - n)) +} + +function fn1 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn2 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0 +} + +function fn3 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0 +} + +function fn4 (a, b, c, d, e, m, k, s) { + return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0 +} + +function fn5 (a, b, c, d, e, m, k, s) { + return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0 +} + +module.exports = RIPEMD160 + + +/***/ }), +/* 180 */ +/***/ (function(module, exports, __webpack_require__) { + +var exports = module.exports = function SHA (algorithm) { + algorithm = algorithm.toLowerCase() + + var Algorithm = exports[algorithm] + if (!Algorithm) throw new Error(algorithm + ' is not supported (we accept pull requests)') + + return new Algorithm() +} + +exports.sha = __webpack_require__(589) +exports.sha1 = __webpack_require__(590) +exports.sha224 = __webpack_require__(591) +exports.sha256 = __webpack_require__(268) +exports.sha384 = __webpack_require__(592) +exports.sha512 = __webpack_require__(269) + + +/***/ }), +/* 181 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +exports.utils = __webpack_require__(598); +exports.Cipher = __webpack_require__(599); +exports.DES = __webpack_require__(600); +exports.CBC = __webpack_require__(601); +exports.EDE = __webpack_require__(602); + + +/***/ }), +/* 182 */ +/***/ (function(module, exports, __webpack_require__) { + +var ciphers = __webpack_require__(603) +var deciphers = __webpack_require__(611) +var modes = __webpack_require__(278) + +function getCiphers () { + return Object.keys(modes) +} + +exports.createCipher = exports.Cipher = ciphers.createCipher +exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv +exports.createDecipher = exports.Decipher = deciphers.createDecipher +exports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv +exports.listCiphers = exports.getCiphers = getCiphers + + +/***/ }), +/* 183 */ +/***/ (function(module, exports, __webpack_require__) { + +var modeModules = { + ECB: __webpack_require__(604), + CBC: __webpack_require__(605), + CFB: __webpack_require__(606), + CFB8: __webpack_require__(607), + CFB1: __webpack_require__(608), + OFB: __webpack_require__(609), + CTR: __webpack_require__(276), + GCM: __webpack_require__(276) +} + +var modes = __webpack_require__(278) + +for (var key in modes) { + modes[key].module = modeModules[modes[key].mode] +} + +module.exports = modes + + +/***/ }), +/* 184 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(22); +var randomBytes = __webpack_require__(83); +module.exports = crt; +function blind(priv) { + var r = getr(priv); + var blinder = r.toRed(bn.mont(priv.modulus)) + .redPow(new bn(priv.publicExponent)).fromRed(); + return { + blinder: blinder, + unblinder:r.invm(priv.modulus) + }; +} +function crt(msg, priv) { + var blinds = blind(priv); + var len = priv.modulus.byteLength(); + var mod = bn.mont(priv.modulus); + var blinded = new bn(msg).mul(blinds.blinder).umod(priv.modulus); + var c1 = blinded.toRed(bn.mont(priv.prime1)); + var c2 = blinded.toRed(bn.mont(priv.prime2)); + var qinv = priv.coefficient; + var p = priv.prime1; + var q = priv.prime2; + var m1 = c1.redPow(priv.exponent1); + var m2 = c2.redPow(priv.exponent2); + m1 = m1.fromRed(); + m2 = m2.fromRed(); + var h = m1.isub(m2).imul(qinv).umod(p); + h.imul(q); + m2.iadd(h); + return new Buffer(m2.imul(blinds.unblinder).umod(priv.modulus).toArray(false, len)); +} +crt.getr = getr; +function getr(priv) { + var len = priv.modulus.byteLength(); + var r = new bn(randomBytes(len)); + while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2)) { + r = new bn(randomBytes(len)); + } + return r; +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 185 */ +/***/ (function(module, exports, __webpack_require__) { + +var hash = exports; + +hash.utils = __webpack_require__(59); +hash.common = __webpack_require__(104); +hash.sha = __webpack_require__(627); +hash.ripemd = __webpack_require__(631); +hash.hmac = __webpack_require__(632); + +// Proxy hash functions to the main object +hash.sha1 = hash.sha.sha1; +hash.sha256 = hash.sha.sha256; +hash.sha224 = hash.sha.sha224; +hash.sha384 = hash.sha.sha384; +hash.sha512 = hash.sha.sha512; +hash.ripemd160 = hash.ripemd.ripemd160; + + +/***/ }), +/* 186 */ +/***/ (function(module, exports) { + + +var indexOf = [].indexOf; + +module.exports = function(arr, obj){ + if (indexOf) return arr.indexOf(obj); + for (var i = 0; i < arr.length; ++i) { + if (arr[i] === obj) return i; + } + return -1; +}; + +/***/ }), +/* 187 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +const EventEmitter = __webpack_require__(46); + +class AdvancedEmitter{ + + constructor(maxListeners = 100){ + + this._emitter = new EventEmitter(); + this._emitter.setMaxListeners(maxListeners); + + this._events = this._emitter._events; + + this.emit = this._emitter.emit.bind(this._emitter); + + this.emitter = this._emitter; + + } + + on(a, call){ + + this._emitter.on(a, call); + + return ()=>{ this._emitter.removeListener(a, call); }; + } + + once(a, call){ + + this._emitter.once(a, call); + + return ()=>{ this._emitter.removeListener(a, call); }; + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (AdvancedEmitter); + +/***/ }), +/* 188 */ +/***/ (function(module, exports) { + +var types = { + Array: function (value) { return value !== null && value !== undefined && value.constructor === Array }, + Boolean: function (value) { return typeof value === 'boolean' }, + Function: function (value) { return typeof value === 'function' }, + Nil: function (value) { return value === undefined || value === null }, + Number: function (value) { return typeof value === 'number' }, + Object: function (value) { return typeof value === 'object' }, + String: function (value) { return typeof value === 'string' }, + '': function () { return true } +} + +// TODO: deprecate +types.Null = types.Nil + +for (var typeName in types) { + types[typeName].toJSON = function (t) { + return t + }.bind(null, typeName) +} + +module.exports = types + + +/***/ }), +/* 189 */ +/***/ (function(module, exports, __webpack_require__) { + +var decompile = __webpack_require__(23).decompile +var multisig = __webpack_require__(190) +var nullData = __webpack_require__(689) +var pubKey = __webpack_require__(191) +var pubKeyHash = __webpack_require__(192) +var scriptHash = __webpack_require__(694) +var witnessPubKeyHash = __webpack_require__(697) +var witnessScriptHash = __webpack_require__(699) +var witnessCommitment = __webpack_require__(701) + +var types = { + MULTISIG: 'multisig', + NONSTANDARD: 'nonstandard', + NULLDATA: 'nulldata', + P2PK: 'pubkey', + P2PKH: 'pubkeyhash', + P2SH: 'scripthash', + P2WPKH: 'witnesspubkeyhash', + P2WSH: 'witnessscripthash', + WITNESS_COMMITMENT: 'witnesscommitment' +} + +function classifyOutput (script) { + if (witnessPubKeyHash.output.check(script)) return types.P2WPKH + if (witnessScriptHash.output.check(script)) return types.P2WSH + if (pubKeyHash.output.check(script)) return types.P2PKH + if (scriptHash.output.check(script)) return types.P2SH + + // XXX: optimization, below functions .decompile before use + var chunks = decompile(script) + if (multisig.output.check(chunks)) return types.MULTISIG + if (pubKey.output.check(chunks)) return types.P2PK + if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT + if (nullData.output.check(chunks)) return types.NULLDATA + + return types.NONSTANDARD +} + +function classifyInput (script, allowIncomplete) { + // XXX: optimization, below functions .decompile before use + var chunks = decompile(script) + + if (pubKeyHash.input.check(chunks)) return types.P2PKH + if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH + if (multisig.input.check(chunks, allowIncomplete)) return types.MULTISIG + if (pubKey.input.check(chunks)) return types.P2PK + + return types.NONSTANDARD +} + +function classifyWitness (script, allowIncomplete) { + // XXX: optimization, below functions .decompile before use + var chunks = decompile(script) + + if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH + if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH + + return types.NONSTANDARD +} + +module.exports = { + classifyInput: classifyInput, + classifyOutput: classifyOutput, + classifyWitness: classifyWitness, + multisig: multisig, + nullData: nullData, + pubKey: pubKey, + pubKeyHash: pubKeyHash, + scriptHash: scriptHash, + witnessPubKeyHash: witnessPubKeyHash, + witnessScriptHash: witnessScriptHash, + witnessCommitment: witnessCommitment, + types: types +} + + +/***/ }), +/* 190 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { + input: __webpack_require__(688), + output: __webpack_require__(305) +} + + +/***/ }), +/* 191 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { + input: __webpack_require__(690), + output: __webpack_require__(691) +} + + +/***/ }), +/* 192 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { + input: __webpack_require__(692), + output: __webpack_require__(693) +} + + +/***/ }), +/* 193 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var Buffer = __webpack_require__(4).Buffer + +// Number.MAX_SAFE_INTEGER +var MAX_SAFE_INTEGER = 9007199254740991 + +function checkUInt53 (n) { + if (n < 0 || n > MAX_SAFE_INTEGER || n % 1 !== 0) throw new RangeError('value out of range') +} + +function encode (number, buffer, offset) { + checkUInt53(number) + + if (!buffer) buffer = Buffer.allocUnsafe(encodingLength(number)) + if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance') + if (!offset) offset = 0 + + // 8 bit + if (number < 0xfd) { + buffer.writeUInt8(number, offset) + encode.bytes = 1 + + // 16 bit + } else if (number <= 0xffff) { + buffer.writeUInt8(0xfd, offset) + buffer.writeUInt16LE(number, offset + 1) + encode.bytes = 3 + + // 32 bit + } else if (number <= 0xffffffff) { + buffer.writeUInt8(0xfe, offset) + buffer.writeUInt32LE(number, offset + 1) + encode.bytes = 5 + + // 64 bit + } else { + buffer.writeUInt8(0xff, offset) + buffer.writeUInt32LE(number >>> 0, offset + 1) + buffer.writeUInt32LE((number / 0x100000000) | 0, offset + 5) + encode.bytes = 9 + } + + return buffer +} + +function decode (buffer, offset) { + if (!Buffer.isBuffer(buffer)) throw new TypeError('buffer must be a Buffer instance') + if (!offset) offset = 0 + + var first = buffer.readUInt8(offset) + + // 8 bit + if (first < 0xfd) { + decode.bytes = 1 + return first + + // 16 bit + } else if (first === 0xfd) { + decode.bytes = 3 + return buffer.readUInt16LE(offset + 1) + + // 32 bit + } else if (first === 0xfe) { + decode.bytes = 5 + return buffer.readUInt32LE(offset + 1) + + // 64 bit + } else { + decode.bytes = 9 + var lo = buffer.readUInt32LE(offset + 1) + var hi = buffer.readUInt32LE(offset + 5) + var number = hi * 0x0100000000 + lo + checkUInt53(number) + + return number + } +} + +function encodingLength (number) { + checkUInt53(number) + + return ( + number < 0xfd ? 1 + : number <= 0xffff ? 3 + : number <= 0xffffffff ? 5 + : 9 + ) +} + +module.exports = { encode: encode, decode: decode, encodingLength: encodingLength } + + +/***/ }), +/* 194 */ +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__(4).Buffer +var bcrypto = __webpack_require__(94) +var bscript = __webpack_require__(23) +var bufferutils = __webpack_require__(308) +var opcodes = __webpack_require__(33) +var typeforce = __webpack_require__(16) +var types = __webpack_require__(27) +var varuint = __webpack_require__(193) + +function varSliceSize (someScript) { + var length = someScript.length + + return varuint.encodingLength(length) + length +} + +function vectorSize (someVector) { + var length = someVector.length + + return varuint.encodingLength(length) + someVector.reduce(function (sum, witness) { + return sum + varSliceSize(witness) + }, 0) +} + +function Transaction () { + this.version = 1 + this.locktime = 0 + this.ins = [] + this.outs = [] +} + +Transaction.DEFAULT_SEQUENCE = 0xffffffff +Transaction.SIGHASH_ALL = 0x01 +Transaction.SIGHASH_NONE = 0x02 +Transaction.SIGHASH_SINGLE = 0x03 +Transaction.SIGHASH_ANYONECANPAY = 0x80 +Transaction.ADVANCED_TRANSACTION_MARKER = 0x00 +Transaction.ADVANCED_TRANSACTION_FLAG = 0x01 + +var EMPTY_SCRIPT = Buffer.allocUnsafe(0) +var EMPTY_WITNESS = [] +var ZERO = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex') +var ONE = Buffer.from('0000000000000000000000000000000000000000000000000000000000000001', 'hex') +var VALUE_UINT64_MAX = Buffer.from('ffffffffffffffff', 'hex') +var BLANK_OUTPUT = { + script: EMPTY_SCRIPT, + valueBuffer: VALUE_UINT64_MAX +} + +Transaction.fromBuffer = function (buffer, __noStrict) { + var offset = 0 + function readSlice (n) { + offset += n + return buffer.slice(offset - n, offset) + } + + function readUInt32 () { + var i = buffer.readUInt32LE(offset) + offset += 4 + return i + } + + function readInt32 () { + var i = buffer.readInt32LE(offset) + offset += 4 + return i + } + + function readUInt64 () { + var i = bufferutils.readUInt64LE(buffer, offset) + offset += 8 + return i + } + + function readVarInt () { + var vi = varuint.decode(buffer, offset) + offset += varuint.decode.bytes + return vi + } + + function readVarSlice () { + return readSlice(readVarInt()) + } + + function readVector () { + var count = readVarInt() + var vector = [] + for (var i = 0; i < count; i++) vector.push(readVarSlice()) + return vector + } + + var tx = new Transaction() + tx.version = readInt32() + + var marker = buffer.readUInt8(offset) + var flag = buffer.readUInt8(offset + 1) + + var hasWitnesses = false + if (marker === Transaction.ADVANCED_TRANSACTION_MARKER && + flag === Transaction.ADVANCED_TRANSACTION_FLAG) { + offset += 2 + hasWitnesses = true + } + + var vinLen = readVarInt() + for (var i = 0; i < vinLen; ++i) { + tx.ins.push({ + hash: readSlice(32), + index: readUInt32(), + script: readVarSlice(), + sequence: readUInt32(), + witness: EMPTY_WITNESS + }) + } + + var voutLen = readVarInt() + for (i = 0; i < voutLen; ++i) { + tx.outs.push({ + value: readUInt64(), + script: readVarSlice() + }) + } + + if (hasWitnesses) { + for (i = 0; i < vinLen; ++i) { + tx.ins[i].witness = readVector() + } + + // was this pointless? + if (!tx.hasWitnesses()) throw new Error('Transaction has superfluous witness data') + } + + tx.locktime = readUInt32() + + if (__noStrict) return tx + if (offset !== buffer.length) throw new Error('Transaction has unexpected data') + + return tx +} + +Transaction.fromHex = function (hex) { + return Transaction.fromBuffer(Buffer.from(hex, 'hex')) +} + +Transaction.isCoinbaseHash = function (buffer) { + typeforce(types.Hash256bit, buffer) + for (var i = 0; i < 32; ++i) { + if (buffer[i] !== 0) return false + } + return true +} + +Transaction.prototype.isCoinbase = function () { + return this.ins.length === 1 && Transaction.isCoinbaseHash(this.ins[0].hash) +} + +Transaction.prototype.addInput = function (hash, index, sequence, scriptSig) { + typeforce(types.tuple( + types.Hash256bit, + types.UInt32, + types.maybe(types.UInt32), + types.maybe(types.Buffer) + ), arguments) + + if (types.Null(sequence)) { + sequence = Transaction.DEFAULT_SEQUENCE + } + + // Add the input and return the input's index + return (this.ins.push({ + hash: hash, + index: index, + script: scriptSig || EMPTY_SCRIPT, + sequence: sequence, + witness: EMPTY_WITNESS + }) - 1) +} + +Transaction.prototype.addOutput = function (scriptPubKey, value) { + typeforce(types.tuple(types.Buffer, types.Satoshi), arguments) + + // Add the output and return the output's index + return (this.outs.push({ + script: scriptPubKey, + value: value + }) - 1) +} + +Transaction.prototype.hasWitnesses = function () { + return this.ins.some(function (x) { + return x.witness.length !== 0 + }) +} + +Transaction.prototype.weight = function () { + var base = this.__byteLength(false) + var total = this.__byteLength(true) + return base * 3 + total +} + +Transaction.prototype.virtualSize = function () { + return Math.ceil(this.weight() / 4) +} + +Transaction.prototype.byteLength = function () { + return this.__byteLength(true) +} + +Transaction.prototype.__byteLength = function (__allowWitness) { + var hasWitnesses = __allowWitness && this.hasWitnesses() + + return ( + (hasWitnesses ? 10 : 8) + + varuint.encodingLength(this.ins.length) + + varuint.encodingLength(this.outs.length) + + this.ins.reduce(function (sum, input) { return sum + 40 + varSliceSize(input.script) }, 0) + + this.outs.reduce(function (sum, output) { return sum + 8 + varSliceSize(output.script) }, 0) + + (hasWitnesses ? this.ins.reduce(function (sum, input) { return sum + vectorSize(input.witness) }, 0) : 0) + ) +} + +Transaction.prototype.clone = function () { + var newTx = new Transaction() + newTx.version = this.version + newTx.locktime = this.locktime + + newTx.ins = this.ins.map(function (txIn) { + return { + hash: txIn.hash, + index: txIn.index, + script: txIn.script, + sequence: txIn.sequence, + witness: txIn.witness + } + }) + + newTx.outs = this.outs.map(function (txOut) { + return { + script: txOut.script, + value: txOut.value + } + }) + + return newTx +} + +/** + * Hash transaction for signing a specific input. + * + * Bitcoin uses a different hash for each signed transaction input. + * This method copies the transaction, makes the necessary changes based on the + * hashType, and then hashes the result. + * This hash can then be used to sign the provided transaction input. + */ +Transaction.prototype.hashForSignature = function (inIndex, prevOutScript, hashType) { + typeforce(types.tuple(types.UInt32, types.Buffer, /* types.UInt8 */ types.Number), arguments) + + // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L29 + if (inIndex >= this.ins.length) return ONE + + // ignore OP_CODESEPARATOR + var ourScript = bscript.compile(bscript.decompile(prevOutScript).filter(function (x) { + return x !== opcodes.OP_CODESEPARATOR + })) + + var txTmp = this.clone() + + // SIGHASH_NONE: ignore all outputs? (wildcard payee) + if ((hashType & 0x1f) === Transaction.SIGHASH_NONE) { + txTmp.outs = [] + + // ignore sequence numbers (except at inIndex) + txTmp.ins.forEach(function (input, i) { + if (i === inIndex) return + + input.sequence = 0 + }) + + // SIGHASH_SINGLE: ignore all outputs, except at the same index? + } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE) { + // https://github.com/bitcoin/bitcoin/blob/master/src/test/sighash_tests.cpp#L60 + if (inIndex >= this.outs.length) return ONE + + // truncate outputs after + txTmp.outs.length = inIndex + 1 + + // "blank" outputs before + for (var i = 0; i < inIndex; i++) { + txTmp.outs[i] = BLANK_OUTPUT + } + + // ignore sequence numbers (except at inIndex) + txTmp.ins.forEach(function (input, y) { + if (y === inIndex) return + + input.sequence = 0 + }) + } + + // SIGHASH_ANYONECANPAY: ignore inputs entirely? + if (hashType & Transaction.SIGHASH_ANYONECANPAY) { + txTmp.ins = [txTmp.ins[inIndex]] + txTmp.ins[0].script = ourScript + + // SIGHASH_ALL: only ignore input scripts + } else { + // "blank" others input scripts + txTmp.ins.forEach(function (input) { input.script = EMPTY_SCRIPT }) + txTmp.ins[inIndex].script = ourScript + } + + // serialize and hash + var buffer = Buffer.allocUnsafe(txTmp.__byteLength(false) + 4) + buffer.writeInt32LE(hashType, buffer.length - 4) + txTmp.__toBuffer(buffer, 0, false) + + return bcrypto.hash256(buffer) +} + +Transaction.prototype.hashForWitnessV0 = function (inIndex, prevOutScript, value, hashType) { + typeforce(types.tuple(types.UInt32, types.Buffer, types.Satoshi, types.UInt32), arguments) + + var tbuffer, toffset + function writeSlice (slice) { toffset += slice.copy(tbuffer, toffset) } + function writeUInt32 (i) { toffset = tbuffer.writeUInt32LE(i, toffset) } + function writeUInt64 (i) { toffset = bufferutils.writeUInt64LE(tbuffer, i, toffset) } + function writeVarInt (i) { + varuint.encode(i, tbuffer, toffset) + toffset += varuint.encode.bytes + } + function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) } + + var hashOutputs = ZERO + var hashPrevouts = ZERO + var hashSequence = ZERO + + if (!(hashType & Transaction.SIGHASH_ANYONECANPAY)) { + tbuffer = Buffer.allocUnsafe(36 * this.ins.length) + toffset = 0 + + this.ins.forEach(function (txIn) { + writeSlice(txIn.hash) + writeUInt32(txIn.index) + }) + + hashPrevouts = bcrypto.hash256(tbuffer) + } + + if (!(hashType & Transaction.SIGHASH_ANYONECANPAY) && + (hashType & 0x1f) !== Transaction.SIGHASH_SINGLE && + (hashType & 0x1f) !== Transaction.SIGHASH_NONE) { + tbuffer = Buffer.allocUnsafe(4 * this.ins.length) + toffset = 0 + + this.ins.forEach(function (txIn) { + writeUInt32(txIn.sequence) + }) + + hashSequence = bcrypto.hash256(tbuffer) + } + + if ((hashType & 0x1f) !== Transaction.SIGHASH_SINGLE && + (hashType & 0x1f) !== Transaction.SIGHASH_NONE) { + var txOutsSize = this.outs.reduce(function (sum, output) { + return sum + 8 + varSliceSize(output.script) + }, 0) + + tbuffer = Buffer.allocUnsafe(txOutsSize) + toffset = 0 + + this.outs.forEach(function (out) { + writeUInt64(out.value) + writeVarSlice(out.script) + }) + + hashOutputs = bcrypto.hash256(tbuffer) + } else if ((hashType & 0x1f) === Transaction.SIGHASH_SINGLE && inIndex < this.outs.length) { + var output = this.outs[inIndex] + + tbuffer = Buffer.allocUnsafe(8 + varSliceSize(output.script)) + toffset = 0 + writeUInt64(output.value) + writeVarSlice(output.script) + + hashOutputs = bcrypto.hash256(tbuffer) + } + + tbuffer = Buffer.allocUnsafe(156 + varSliceSize(prevOutScript)) + toffset = 0 + + var input = this.ins[inIndex] + writeUInt32(this.version) + writeSlice(hashPrevouts) + writeSlice(hashSequence) + writeSlice(input.hash) + writeUInt32(input.index) + writeVarSlice(prevOutScript) + writeUInt64(value) + writeUInt32(input.sequence) + writeSlice(hashOutputs) + writeUInt32(this.locktime) + writeUInt32(hashType) + return bcrypto.hash256(tbuffer) +} + +Transaction.prototype.getHash = function () { + return bcrypto.hash256(this.__toBuffer(undefined, undefined, false)) +} + +Transaction.prototype.getId = function () { + // transaction hash's are displayed in reverse order + return this.getHash().reverse().toString('hex') +} + +Transaction.prototype.toBuffer = function (buffer, initialOffset) { + return this.__toBuffer(buffer, initialOffset, true) +} + +Transaction.prototype.__toBuffer = function (buffer, initialOffset, __allowWitness) { + if (!buffer) buffer = Buffer.allocUnsafe(this.__byteLength(__allowWitness)) + + var offset = initialOffset || 0 + function writeSlice (slice) { offset += slice.copy(buffer, offset) } + function writeUInt8 (i) { offset = buffer.writeUInt8(i, offset) } + function writeUInt32 (i) { offset = buffer.writeUInt32LE(i, offset) } + function writeInt32 (i) { offset = buffer.writeInt32LE(i, offset) } + function writeUInt64 (i) { offset = bufferutils.writeUInt64LE(buffer, i, offset) } + function writeVarInt (i) { + varuint.encode(i, buffer, offset) + offset += varuint.encode.bytes + } + function writeVarSlice (slice) { writeVarInt(slice.length); writeSlice(slice) } + function writeVector (vector) { writeVarInt(vector.length); vector.forEach(writeVarSlice) } + + writeInt32(this.version) + + var hasWitnesses = __allowWitness && this.hasWitnesses() + + if (hasWitnesses) { + writeUInt8(Transaction.ADVANCED_TRANSACTION_MARKER) + writeUInt8(Transaction.ADVANCED_TRANSACTION_FLAG) + } + + writeVarInt(this.ins.length) + + this.ins.forEach(function (txIn) { + writeSlice(txIn.hash) + writeUInt32(txIn.index) + writeVarSlice(txIn.script) + writeUInt32(txIn.sequence) + }) + + writeVarInt(this.outs.length) + this.outs.forEach(function (txOut) { + if (!txOut.valueBuffer) { + writeUInt64(txOut.value) + } else { + writeSlice(txOut.valueBuffer) + } + + writeVarSlice(txOut.script) + }) + + if (hasWitnesses) { + this.ins.forEach(function (input) { + writeVector(input.witness) + }) + } + + writeUInt32(this.locktime) + + // avoid slicing unless necessary + if (initialOffset !== undefined) return buffer.slice(initialOffset, offset) + return buffer +} + +Transaction.prototype.toHex = function () { + return this.toBuffer().toString('hex') +} + +Transaction.prototype.setInputScript = function (index, scriptSig) { + typeforce(types.tuple(types.Number, types.Buffer), arguments) + + this.ins[index].script = scriptSig +} + +Transaction.prototype.setWitness = function (index, witness) { + typeforce(types.tuple(types.Number, [types.Buffer]), arguments) + + this.ins[index].witness = witness +} + +module.exports = Transaction + + +/***/ }), +/* 195 */ +/***/ (function(module, exports, __webpack_require__) { + +var baddress = __webpack_require__(196) +var bcrypto = __webpack_require__(94) +var ecdsa = __webpack_require__(707) +var randomBytes = __webpack_require__(83) +var typeforce = __webpack_require__(16) +var types = __webpack_require__(27) +var wif = __webpack_require__(713) + +var NETWORKS = __webpack_require__(107) +var BigInteger = __webpack_require__(72) + +var ecurve = __webpack_require__(199) +var secp256k1 = ecdsa.__curve + +function ECPair (d, Q, options) { + if (options) { + typeforce({ + compressed: types.maybe(types.Boolean), + network: types.maybe(types.Network) + }, options) + } + + options = options || {} + + if (d) { + if (d.signum() <= 0) throw new Error('Private key must be greater than 0') + if (d.compareTo(secp256k1.n) >= 0) throw new Error('Private key must be less than the curve order') + if (Q) throw new TypeError('Unexpected publicKey parameter') + + this.d = d + } else { + typeforce(types.ECPoint, Q) + + this.__Q = Q + } + + this.compressed = options.compressed === undefined ? true : options.compressed + this.network = options.network || NETWORKS.bitcoin +} + +Object.defineProperty(ECPair.prototype, 'Q', { + get: function () { + if (!this.__Q && this.d) { + this.__Q = secp256k1.G.multiply(this.d) + } + + return this.__Q + } +}) + +ECPair.fromPublicKeyBuffer = function (buffer, network) { + var Q = ecurve.Point.decodeFrom(secp256k1, buffer) + + return new ECPair(null, Q, { + compressed: Q.compressed, + network: network + }) +} + +ECPair.fromWIF = function (string, network) { + var decoded = wif.decode(string) + var version = decoded.version + + // list of networks? + if (types.Array(network)) { + network = network.filter(function (x) { + return version === x.wif + }).pop() + + if (!network) throw new Error('Unknown network version') + + // otherwise, assume a network object (or default to bitcoin) + } else { + network = network || NETWORKS.bitcoin + + if (version !== network.wif) throw new Error('Invalid network version') + } + + var d = BigInteger.fromBuffer(decoded.privateKey) + + return new ECPair(d, null, { + compressed: decoded.compressed, + network: network + }) +} + +ECPair.makeRandom = function (options) { + options = options || {} + + var rng = options.rng || randomBytes + + var d + do { + var buffer = rng(32) + typeforce(types.Buffer256bit, buffer) + + d = BigInteger.fromBuffer(buffer) + } while (d.signum() <= 0 || d.compareTo(secp256k1.n) >= 0) + + return new ECPair(d, null, options) +} + +ECPair.prototype.getAddress = function () { + return baddress.toBase58Check(bcrypto.hash160(this.getPublicKeyBuffer()), this.getNetwork().pubKeyHash) +} + +ECPair.prototype.getNetwork = function () { + return this.network +} + +ECPair.prototype.getPublicKeyBuffer = function () { + return this.Q.getEncoded(this.compressed) +} + +ECPair.prototype.sign = function (hash) { + if (!this.d) throw new Error('Missing private key') + + return ecdsa.sign(hash, this.d) +} + +ECPair.prototype.toWIF = function () { + if (!this.d) throw new Error('Missing private key') + + return wif.encode(this.network.wif, this.d.toBuffer(32), this.compressed) +} + +ECPair.prototype.verify = function (hash, signature) { + return ecdsa.verify(hash, signature, this.Q) +} + +module.exports = ECPair + + +/***/ }), +/* 196 */ +/***/ (function(module, exports, __webpack_require__) { + +var Buffer = __webpack_require__(4).Buffer +var bech32 = __webpack_require__(705) +var bs58check = __webpack_require__(197) +var bscript = __webpack_require__(23) +var btemplates = __webpack_require__(189) +var networks = __webpack_require__(107) +var typeforce = __webpack_require__(16) +var types = __webpack_require__(27) + +function fromBase58Check (address) { + var payload = bs58check.decode(address) + + // TODO: 4.0.0, move to "toOutputScript" + if (payload.length < 21) throw new TypeError(address + ' is too short') + if (payload.length > 21) throw new TypeError(address + ' is too long') + + var version = payload.readUInt8(0) + var hash = payload.slice(1) + + return { version: version, hash: hash } +} + +function fromBech32 (address) { + var result = bech32.decode(address) + var data = bech32.fromWords(result.words.slice(1)) + + return { + version: result.words[0], + prefix: result.prefix, + data: Buffer.from(data) + } +} + +function toBase58Check (hash, version) { + typeforce(types.tuple(types.Hash160bit, types.UInt8), arguments) + + var payload = Buffer.allocUnsafe(21) + payload.writeUInt8(version, 0) + hash.copy(payload, 1) + + return bs58check.encode(payload) +} + +function toBech32 (data, version, prefix) { + var words = bech32.toWords(data) + words.unshift(version) + + return bech32.encode(prefix, words) +} + +function fromOutputScript (outputScript, network) { + network = network || networks.bitcoin + + if (btemplates.pubKeyHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(3, 23), network.pubKeyHash) + if (btemplates.scriptHash.output.check(outputScript)) return toBase58Check(bscript.compile(outputScript).slice(2, 22), network.scriptHash) + if (btemplates.witnessPubKeyHash.output.check(outputScript)) return toBech32(bscript.compile(outputScript).slice(2, 22), 0, network.bech32) + if (btemplates.witnessScriptHash.output.check(outputScript)) return toBech32(bscript.compile(outputScript).slice(2, 34), 0, network.bech32) + + throw new Error(bscript.toASM(outputScript) + ' has no matching Address') +} + +function toOutputScript (address, network) { + network = network || networks.bitcoin + + var decode + try { + decode = fromBase58Check(address) + } catch (e) {} + + if (decode) { + if (decode.version === network.pubKeyHash) return btemplates.pubKeyHash.output.encode(decode.hash) + if (decode.version === network.scriptHash) return btemplates.scriptHash.output.encode(decode.hash) + } else { + try { + decode = fromBech32(address) + } catch (e) {} + + if (decode) { + if (decode.prefix !== network.bech32) throw new Error(address + ' has an invalid prefix') + if (decode.version === 0) { + if (decode.data.length === 20) return btemplates.witnessPubKeyHash.output.encode(decode.data) + if (decode.data.length === 32) return btemplates.witnessScriptHash.output.encode(decode.data) + } + } + } + + throw new Error(address + ' has no matching Script') +} + +module.exports = { + fromBase58Check: fromBase58Check, + fromBech32: fromBech32, + fromOutputScript: fromOutputScript, + toBase58Check: toBase58Check, + toBech32: toBech32, + toOutputScript: toOutputScript +} + + +/***/ }), +/* 197 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var createHash = __webpack_require__(84) +var bs58checkBase = __webpack_require__(706) + +// SHA256(SHA256(buffer)) +function sha256x2 (buffer) { + var tmp = createHash('sha256').update(buffer).digest() + return createHash('sha256').update(tmp).digest() +} + +module.exports = bs58checkBase(sha256x2) + + +/***/ }), +/* 198 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var bip66 = __webpack_require__(301) +var typeforce = __webpack_require__(16) +var types = __webpack_require__(27) + +var BigInteger = __webpack_require__(72) + +function ECSignature (r, s) { + typeforce(types.tuple(types.BigInt, types.BigInt), arguments) + + this.r = r + this.s = s +} + +ECSignature.parseCompact = function (buffer) { + typeforce(types.BufferN(65), buffer) + + var flagByte = buffer.readUInt8(0) - 27 + if (flagByte !== (flagByte & 7)) throw new Error('Invalid signature parameter') + + var compressed = !!(flagByte & 4) + var recoveryParam = flagByte & 3 + var signature = ECSignature.fromRSBuffer(buffer.slice(1)) + + return { + compressed: compressed, + i: recoveryParam, + signature: signature + } +} + +ECSignature.fromRSBuffer = function (buffer) { + typeforce(types.BufferN(64), buffer) + + var r = BigInteger.fromBuffer(buffer.slice(0, 32)) + var s = BigInteger.fromBuffer(buffer.slice(32, 64)) + return new ECSignature(r, s) +} + +ECSignature.fromDER = function (buffer) { + var decode = bip66.decode(buffer) + var r = BigInteger.fromDERInteger(decode.r) + var s = BigInteger.fromDERInteger(decode.s) + + return new ECSignature(r, s) +} + +// BIP62: 1 byte hashType flag (only 0x01, 0x02, 0x03, 0x81, 0x82 and 0x83 are allowed) +ECSignature.parseScriptSignature = function (buffer) { + var hashType = buffer.readUInt8(buffer.length - 1) + var hashTypeMod = hashType & ~0x80 + + if (hashTypeMod <= 0x00 || hashTypeMod >= 0x04) throw new Error('Invalid hashType ' + hashType) + + return { + signature: ECSignature.fromDER(buffer.slice(0, -1)), + hashType: hashType + } +} + +ECSignature.prototype.toCompact = function (i, compressed) { + if (compressed) { + i += 4 + } + + i += 27 + + var buffer = Buffer.alloc(65) + buffer.writeUInt8(i, 0) + this.toRSBuffer(buffer, 1) + return buffer +} + +ECSignature.prototype.toDER = function () { + var r = Buffer.from(this.r.toDERInteger()) + var s = Buffer.from(this.s.toDERInteger()) + + return bip66.encode(r, s) +} + +ECSignature.prototype.toRSBuffer = function (buffer, offset) { + buffer = buffer || Buffer.alloc(64) + this.r.toBuffer(32).copy(buffer, offset) + this.s.toBuffer(32).copy(buffer, offset + 32) + return buffer +} + +ECSignature.prototype.toScriptSignature = function (hashType) { + var hashTypeMod = hashType & ~0x80 + if (hashTypeMod <= 0 || hashTypeMod >= 4) throw new Error('Invalid hashType ' + hashType) + + var hashTypeBuffer = Buffer.alloc(1) + hashTypeBuffer.writeUInt8(hashType, 0) + + return Buffer.concat([this.toDER(), hashTypeBuffer]) +} + +module.exports = ECSignature + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 199 */ +/***/ (function(module, exports, __webpack_require__) { + +var Point = __webpack_require__(311) +var Curve = __webpack_require__(312) + +var getCurveByName = __webpack_require__(711) + +module.exports = { + Curve: Curve, + Point: Point, + getCurveByName: getCurveByName +} + + +/***/ }), +/* 200 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__GeoLocation_Address_Object_js__ = __webpack_require__(737); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_sockets_protocol_extend_socket_Socket_Address__ = __webpack_require__(64); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_node_lists_geolocation_lists_geo_helpers_geo_helper__ = __webpack_require__(202); +const axios = __webpack_require__(140); +const ipaddr = __webpack_require__(141); + + + + +class GeoLocationLists { + + /* + geoLocationContinentsLists = {} + countGeoLocationContinentsLists = 0 + */ + + constructor(){ + + console.log("GeoLocations constructor"); + + this.geoLocationContinentsLists = {}; + this.geoLocationLists = []; + + this.countGeoLocationContinentsLists = 0; + + + this._pendingLocationLists = []; + + setTimeout( this._processGeoLocationPendingList.bind(this), true ? 500 : 5000 ); + } + + async _processGeoLocationPendingList(){ + + if (this._pendingLocationLists.length > 0) { + + let data = this._pendingLocationLists[0]; + this._pendingLocationLists.splice(0,1); + + let location = await __WEBPACK_IMPORTED_MODULE_2_node_lists_geolocation_lists_geo_helpers_geo_helper__["a" /* default */].getLocationFromAddress( data.address ); + + if (location === null || location === undefined) { + + //console.warn("LOCATION was not been able to get"); + return null; + + } + + location.continent = location.continent || '--'; + + this._addGeoLocationContinentByAddress( data.address, location ); + + try { + + data.resolver(location); + + } catch (exception){ + + + + } + + } + + + setTimeout(this._processGeoLocationPendingList.bind(this), true ? 500 : 5000); + + } + + _includeAddress(sckAddress, port){ + + sckAddress = __WEBPACK_IMPORTED_MODULE_1_common_sockets_protocol_extend_socket_Socket_Address__["a" /* default */].createSocketAddress(sckAddress, port); + + for (let i=0; i= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32))) + +/***/ }), +/* 202 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__data_continents_js__ = __webpack_require__(738); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__data_continents_js___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__data_continents_js__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_sockets_protocol_extend_socket_Socket_Address__ = __webpack_require__(64); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_utils_helpers_Download_Helper__ = __webpack_require__(322); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_common_utils_helpers_Utils__ = __webpack_require__(61); +const ipaddr = __webpack_require__(141); + + + + + + + +class GeoHelper { + + async getLocationFromAddress(address, skipSocketAddress){ + + + if ( skipSocketAddress === undefined) skipSocketAddress = false; + + let sckAddress = null; + + if (!skipSocketAddress) { + + sckAddress = __WEBPACK_IMPORTED_MODULE_1_common_sockets_protocol_extend_socket_Socket_Address__["a" /* default */].createSocketAddress(address); + address = sckAddress.getAddress(false); + + if ( sckAddress._geoLocation.isFulfilled() ) + return sckAddress._geoLocation; + } + + try{ + + let localIP = false; + if (address.indexOf("192.168") === 0){ // local ip - private network + address = ""; + localIP = true; + } + + let list = []; + list.push("https://geoip.tools/v1/json/?q="+address); + // list.push ( ["https://geoip-db.com/json/"+address, ]); //don't support domains + + let data = await __WEBPACK_IMPORTED_MODULE_2_common_utils_helpers_Download_Helper__["a" /* default */].downloadMultipleFiles( list, 20000 ); + + if (data !== null && data !== undefined){ + + let countryCode = ''; + let country = ''; + let continent = '--'; + + //console.log("location data", address, data); + + if (data.country !== undefined) country = data.country; + if (data.country_name !== undefined) country = data.country_name; + + if (data.countryCode !== undefined) countryCode = data.countryCode; + if (data.country_code !== undefined) countryCode = data.country_code; + + if (address === '') + if (data.query !== undefined) address = address || data.query; + + if (countryCode !== '') + continent = Object(__WEBPACK_IMPORTED_MODULE_0__data_continents_js__["getContinentFromCountry"])(countryCode); + + let geoLocation = { + country: country, + countryCode: countryCode, + city: data.city||'', + state: data.state||'', + region: data.regionname||data.region_name||'', + regionCode: data.regioncode||data.region_code||'', + + lat: (data.latitude||data.lat||22.2120780) + (localIP ? 0.05* (-1 + 2*Math.random() ) : 0), + lng: (data.longitude||data.lng||data.lon||-40.1109744) + (localIP ? 0.05*(-1 + 2*Math.random()) : 0), + isp: data.isp, + timezone: data.timezone||data.time_zone||'', + + continent: continent, + address: address, + }; + + if (!skipSocketAddress) + sckAddress._geoLocationResolver( geoLocation ); + + + return geoLocation; + + } else throw {message: "error downloading data"}; + + } + catch(Exception){ + console.error("GeoHelper getLocationFromAddress raised an error ",Exception); + + return { + country: '', + countryCode: '', + city: '', + state: '', + region: '', + regionCode: '', + + lat: (22.2120780), + lng: (-40.1109744), + isp: '', + timezone: '', + + continent: '', + address: address, + }; + } + + } + + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new GeoHelper()); + +/***/ }), +/* 203 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Interface_Blockchain_Transaction_From__ = __webpack_require__(327); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Interface_Blockchain_Transaction_To__ = __webpack_require__(328); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_crypto_WebDollar_Crypto__ = __webpack_require__(25); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_common_crypto_WebDollar_Crypto_Data__ = __webpack_require__(86); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__ = __webpack_require__(8); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_common_utils_coins_WebDollar_Coins__ = __webpack_require__(29); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__wizard_Interface_Blockchain_Transactions_Wizard__ = __webpack_require__(204); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9__addresses_Interface_Blockchain_Address_Helper__ = __webpack_require__(17); + + + + + + + + + + + + + +class InterfaceBlockchainTransaction{ + + + /** + * Transaction Class enables to create a new Transaction + * @param from must be an Array[ object {address: object , publicKey: object } ] + * @param to must be an Array [ object {address: object , amount, currency } } + * @param nonce - usually null + * @param txId - usually null + */ + + constructor( blockchain, from, to, nonce, timeLock, version, txId, validateFrom=true, validateTo=true){ + + this.blockchain = blockchain; + this.from = null; + this.to = null; + + this._confirmed = false; + + if (timeLock === undefined) + this.timeLock = blockchain.blocks.length-1; + else + this.timeLock = timeLock; + + if (version === undefined){ + + if (this.timeLock < __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_BUG_2_BYTES ) version = 0x00; + else + if (this.timeLock >= __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_BUG_2_BYTES && this.timeLock < __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_OPTIMIZATION ) version = 0x01; + else version = 0x02; + + } + + this.version = version; //version + + try { + + if (!(from instanceof __WEBPACK_IMPORTED_MODULE_0__Interface_Blockchain_Transaction_From__["a" /* default */])) + from = this._createTransactionFrom(from); + + this.from = from; + + } catch (exception){ + + console.error("Transaction From Error", exception); + throw typeof exception === "string" ? "Transaction From Error " + exception : exception; + + } + + try{ + + if (! (to instanceof __WEBPACK_IMPORTED_MODULE_1__Interface_Blockchain_Transaction_To__["a" /* default */]) ) + to = this._createTransactionTo(to); + + this.to = to; + + } catch (exception){ + + console.error("Transaction To Error", exception); + throw typeof exception === "string" ? "Transaction To Error " + exception : exception; + } + + + + try { + + if (validateFrom) + this.from.validateFrom(); + + } catch (exception){ + console.error("Transaction From Error 2", exception); + throw typeof exception === "string" ? "Transaction From Error " + exception : exception; + + } + + + try { + if (validateTo) + this.to.validateTo(); + } catch (exception){ + + console.error("Transaction To Error2", exception); + throw typeof exception === "string" ? "Transaction To Error " + exception : exception; + + } + + + if (nonce === undefined || nonce === null) + nonce = this._computeNonce(); + + if (version === 0x00) nonce = nonce % 0x100; + else if (version >= 0x01) nonce = nonce % 0X10000; + + this.nonce = nonce; //1 bytes + + if (txId === undefined || txId === null) + txId = this._computeTxId(); + + this.txId = txId; + + this._serializated = undefined; + } + + destroyTransaction(){ + this.blockchain = undefined; + } + + _createTransactionFrom(from){ + return new __WEBPACK_IMPORTED_MODULE_0__Interface_Blockchain_Transaction_From__["a" /* default */](this, from); + } + + _createTransactionTo(to){ + return new __WEBPACK_IMPORTED_MODULE_1__Interface_Blockchain_Transaction_To__["a" /* default */](this, to); + } + + _computeNonce(){ + //it will be replaced by MiniBlockchain + return Math.floor(Math.random() * 0xFF); + } + + _computeTxId(){ + return __WEBPACK_IMPORTED_MODULE_2_common_crypto_WebDollar_Crypto__["a" /* default */].SHA256( __WEBPACK_IMPORTED_MODULE_2_common_crypto_WebDollar_Crypto__["a" /* default */].SHA256( this.serializeTransaction() )); + } + + recalculateTxId(){ + this.txId = this._computeTxId(); + } + + /** + * + * @param address requires .publicKey and .address + * @param currency + */ + setTransactionAddressFrom(address, currency){ + //validate the ballance of from.address + this.from = this.from.setFrom(address, currency); + } + + setTransactionAddressesTo( addresses, fee ){ + //validate addresses + this.to = this.to.setTo( addresses, fee ); + } + + + /** + * Validate the Transaction + * @param silent + * @returns {*} + */ + validateTransactionOnce( blockHeight, blockValidationType = {} ){ + + if (blockHeight === undefined) blockHeight = this.blockchain.blocks.length-1; + + if (typeof this.nonce !== 'number') throw {message: 'nonce is empty', nonce: this.nonce}; + if (typeof this.version !== "number") throw {message: 'version is empty', version:this.version}; + if (typeof this.timeLock !== "number") throw {message: 'timeLock is empty', timeLock:this.timeLock}; + + if (this.timeLock < __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_BUG_2_BYTES && this.version !== 0x00) throw {message: "version is invalid", version: this.version}; + if (this.timeLock >= __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_BUG_2_BYTES && this.timeLock < __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_OPTIMIZATION && this.version !== 0x01) throw {message: "version is invalid", version: this.version}; + if (this.timeLock >= __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_OPTIMIZATION && this.version !== 0x02) throw {message: "version is invalid", version: this.version}; + + if (blockHeight < __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_BUG_2_BYTES && this.version !== 0x00) throw {message: "version is invalid", version: this.version}; + if (blockHeight >= __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_BUG_2_BYTES && this.timeLock < __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_OPTIMIZATION && this.version !== 0x01) throw {message: "version is invalid", version: this.version}; + if (blockHeight >= __WEBPACK_IMPORTED_MODULE_6_consts_const_global__["a" /* default */].BLOCKCHAIN.HARD_FORKS.TRANSACTIONS_OPTIMIZATION && this.version !== 0x02) throw {message: "version is invalid", version: this.version}; + + if (this.nonce > 0xFFFF) throw {message: "nonce is invalid", nonce : this.nonce}; + if (this.timeLock > 0xFFFFFF || this.timeLock < 0) throw {message: "version is invalid", version: this.version}; + + if ( blockHeight !== -1){ + if (this.timeLock !== 0 && blockHeight < this.timeLock ) throw {message: "blockHeight < timeLock", timeLock:this.timeLock, blockHeight: blockHeight }; + if (this.timeLock - blockHeight > 100) throw { message: "timelock - blockHeight < 100", timeLock : this.timeLock }; + } + + let txId = this._computeTxId(); + if (! __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__["a" /* default */].safeCompare(txId, this.txId ) ) throw {message: "txid don't match"}; + + if (!this.from) + throw { message: 'Transaction Validation Invalid: From was not specified', from: this.from }; + + if (!this.to) + throw { message: 'Transaction Validation Invalid: To was not specified', to: this.to }; + + this.from.validateFrom(); + this.to.validateTo(); + + if (!this.validateIdenticalAddresses(this.from.addresses)) return false; + if (!this.validateIdenticalAddresses(this.to.addresses)) return false; + + //validate amount + let inputSum = this.from.calculateInputSum(); + let outputSum = this.to.calculateOutputSum(); + + if (!__WEBPACK_IMPORTED_MODULE_7_common_utils_coins_WebDollar_Coins__["a" /* default */].validateCoinsNumber(inputSum)) + throw {message: "Transaction inputSum is invalid", inputSum: inputSum}; + + if (!__WEBPACK_IMPORTED_MODULE_7_common_utils_coins_WebDollar_Coins__["a" /* default */].validateCoinsNumber(outputSum)) + throw {message: "Transaction outputSum is invalid", inputSum: outputSum}; + + if (inputSum < outputSum) + throw {message: "Transaction Validation Input is smaller than Output", input: inputSum, output: outputSum}; + + if (!this.validateTransactionEveryTime(blockHeight, blockValidationType)) + return false; + + return true; + } + + validateTransactionEveryTime( blockHeight , blockValidationType = {}){ + + if (this.blockchain === undefined) throw {message: "blockchain is empty"}; + + if (blockHeight === undefined) blockHeight = this.blockchain.blocks.length-1; + + if (this.timeLock !== 0 && blockHeight < this.timeLock) throw {message: "blockHeight < timeLock", timeLock: this.timeLock}; + + if (blockValidationType === undefined || !blockValidationType['skip-validation-transactions-from-values']){ + + if (! this._validateNonce(blockValidationType) ) throw {message: "Nonce is invalid" }; + + return this.from.validateFromEnoughMoney(blockValidationType); + } + + return true; + } + + + isTransactionOK(avoidValidatingSignature = false, showDebug=true){ + + if (!avoidValidatingSignature) + this.validateTransactionOnce(undefined, { 'skip-validation-transactions-from-values': true } ); + + try { + let blockValidationType = { + "take-transactions-list-in-consideration": { + validation: true + } + }; + this.validateTransactionEveryTime(undefined, blockValidationType ); + + } catch (exception){ + + if (showDebug) + console.warn ("Transaction Problem", exception); + + return false; + } + + return true; + } + + serializeFromForSigning(unencodedAddress){ + return this.from.serializeForSigning( unencodedAddress ); + } + + serializeTransaction(rewrite = false){ + + if ( !this._serializated || rewrite ) + this._serializated = this._serializeTransaction(); + + return this._serializated; + + } + + _serializeTransaction(){ + + let array = [ + + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber1Byte( this.version ), + + this.version === 0x00 ? __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber1Byte( this.nonce ) : __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber2Bytes( this.nonce ), + + __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].serializeNumber3Bytes( this.timeLock ), //16777216 it should be to 4 bytes afterwards + + this.from.serializeFrom(), + this.to.serializeTo(), + + ]; + + return Buffer.concat (array); + } + + serializeTransactionId(){ + return this.txId; + } + + deserializeTransaction(buffer, offset){ + + offset = offset || 0; + + if (!Buffer.isBuffer(buffer)) + buffer = __WEBPACK_IMPORTED_MODULE_3_common_crypto_WebDollar_Crypto_Data__["a" /* default */].createWebDollarCryptoData(buffer).buffer; + + try{ + + this.version = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].deserializeNumber1Bytes( buffer, offset ); + offset += 1; + + //hard fork + if (this.version === 0x00){ + this.nonce = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].deserializeNumber1Bytes( buffer, offset); + offset += 1; + } else if (this.version >= 0x01){ + this.nonce = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].deserializeNumber2Bytes( buffer, offset); + offset += 2; + } + + this.timeLock = __WEBPACK_IMPORTED_MODULE_4_common_utils_Serialization__["a" /* default */].deserializeNumber3Bytes( buffer, offset ); + offset += 3; + + offset = this.from.deserializeFrom(buffer, offset); + offset = this.to.deserializeTo(buffer, offset); + + } catch (exception){ + + console.error("error deserializing a transaction ", exception); + throw exception; + + } + + this.recalculateTxId(); + + return offset; + + } + + toString(){ + + } + + toJSON(dontIncludeTxId){ + + let result = { + from: this.from.toJSON(), + to: this.to.toJSON(), //address, + nonce: this.nonce, + version: this.version, + timeLock: this.timeLock, + confirmed: this.confirmed, + }; + + if (!dontIncludeTxId ) + result.txId = this.txId.toString("hex"); + + return result; + } + + /** + * It will update the Accountant Tree + */ + + _preProcessTransaction(multiplicationFactor = 1 , revertActions, showUpdate){ + return true; + } + + processTransaction(multiplicationFactor = 1 , minerAddress, revertActions, showUpdate){ + + if ( multiplicationFactor === 1 ) { // adding transaction + + //nonce + if (!this._preProcessTransaction(multiplicationFactor, revertActions, showUpdate)) return false; + + if (!this.from.processTransactionFrom(multiplicationFactor, revertActions, showUpdate)) return false; + if (!this.to.processTransactionTo(multiplicationFactor, revertActions, showUpdate)) return false; + + if (this._processTransactionFees(multiplicationFactor, minerAddress, revertActions, showUpdate) === null) return false; + + } else if (multiplicationFactor === -1) { // removing transaction + + //nonce + if (this._processTransactionFees(multiplicationFactor, minerAddress, revertActions, showUpdate) === null) return false; + + if (!this.to.processTransactionTo(multiplicationFactor, revertActions, showUpdate)) return false; + if (!this.from.processTransactionFrom(multiplicationFactor, revertActions, showUpdate)) return false; + + if (!this._preProcessTransaction(multiplicationFactor, revertActions, showUpdate)) return false; + + + }else + throw {message: "multiplicationFactor is illegal"}; + + return true; + } + + _processTransactionFees(){ + + let inputSum = this.from.calculateInputSum(); + let outputSum = this.to.calculateOutputSum(); + + let diffInFees = inputSum - outputSum; + + if (!__WEBPACK_IMPORTED_MODULE_7_common_utils_coins_WebDollar_Coins__["a" /* default */].validateCoinsNumber(diffInFees)) + throw {message:"Fees are invalid"}; + + if (diffInFees < 0) throw {message: "Fee is illegal"}; + + return {fees: diffInFees, currencyTokenId: this.from.currencyTokenId}; + } + + _validateNonce(blockValidation){ + return true; + } + + get confirmed(){ + return this._confirmed; + } + + set confirmed(newValue){ + + if (this._confirmed !== newValue) + this._confirmed = newValue; + + this.blockchain.transactions.emitTransactionChangeEvent(this); + + } + + get fee(){ + //validate amount + let inputSum = this.from.calculateInputSum(); + let outputSum = this.to.calculateOutputSum(); + + return inputSum - outputSum; + } + + + validateIdenticalAddresses(addresses){ + + for (let i=0; i= 0 && i2 >= 0) { + + const block1 = proofs1.blocks[i1]; + const block2 = proofs2.blocks[i2]; + + if (block1.hash.equals( block2.hash )) + return block1; + else if (block1.height > block2.height) + i1--; + else + i2--; + } + + return null; + } + + + + /** + * Definition 5 (Locally good superchain). + * @param µ-superchain C' + * @param underlyingChain C + * @param miu + * @returns {boolean} + * @private + */ + _localGood(superLength, underlyingLength, miu){ + + //local-goodδ (C', C, µ), if |C0| > (1 − δ) 2^−µ * |C|. + + //using big Number + if ( new BigNumber(superLength).isGreaterThan( (new BigNumber(1).minus(__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].POPOW_PARAMS.d)).multipliedBy( new BigNumber(2).pow( - miu )).multipliedBy(underlyingLength) )) + return true; + else + return false; + } + + /** + * Definition 6 (Superchain quality). + * @param underlyingChain C + * @param µ-superchain C' + * @param miu + * @param m + * @returns {boolean} + * @private + */ + _superchainQuality( underlyingChain, superChain, miu){ + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].POPOW_PARAMS.m < 1) + throw {message: 'superchainQuality is not good'}; + + if (superChain.blocks.length <= __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].POPOW_PARAMS.m) + return false; + + //m ∈ N states that for all m' ≥ m + + /** + * upperChain and downChain are calculated only once based on miu + */ + + //uuperChain and down is calculated only once + // C↑µ [−m':] + let upperChain = underlyingChain.blocksGreaterLevel(miu); + + // downChain C'↓ C is defined as C[ C'[0] : C'[−1] ]. simply write C'↓ + let downChain = upperChain.downSuperChainGetUnderlyingChain(underlyingChain, ); + + + + // local-good δ (C↑ µ [−m' :], C↑µ [−m' :]↓ , µ). + let mP = __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].POPOW_PARAMS.m; + while (mP >= __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].POPOW_PARAMS.m && mP < underlyingChain.blocks.length){ + + if (! this._localGood( Math.min( upperChain.blocks.length, mP ), Math.min( downChain.blocks.length, mP ) , miu) ) + return false; + + mP++; + } + + return true; + } + + /** + * Definition 7 (Multilevel quality) + * @param underlyingChain C + * @param µ-superchain C' + * @param miu + * @returns {boolean} + * @private + */ + _multilevelQuality(underlyingChain, superChain, miu){ + + //from badness, we have this + //C∗ ← C'↓↑µ'−1 + for (let miu1 = miu; miu1 >= 1; miu1 --){ + + let CStar = superChain.downSuperChainGetUnderlyingChain(underlyingChain); + CStar = CStar.blocksGreaterLevel(miu1 - 1); + + if (CStar === null) continue; + + //|C∗↑µ'| + let upperChain = CStar.blocksGreaterLevel(miu1); + + //| C∗↑µ' | ≥ k1 + if (upperChain.blocks.length >= __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].POPOW_PARAMS.k1) + + if ( ! (CStar.blocksGreaterLevel(miu).blocks.length >= (1 - __WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].POPOW_PARAMS.d ) * new BigInteger(2).pow(miu - miu1) * upperChain.blocks.length ) ) + return false; + + } + + return true; + } + + /** + * Definition 8 (Good superchain) + * if it has both superquality and multilevel quality with parameters (δ, m) + * @param underlyingChain C + * @param µ-superchain C' + * @param miu + * @returns {boolean} + */ + good( underlyingChain, superChain, miu){ + + if (this._superchainQuality(underlyingChain, superChain, miu) === false) + return false; + + + // if (this._multilevelQuality(underlyingChain, superChain, miu) === false) + // return false; + + return true; + } + + + + + + +} + +/* harmony default export */ __webpack_exports__["a"] = (new PPoWHelper()); + +/***/ }), +/* 209 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Interface_Blockchain_Agent__ = __webpack_require__(210); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Interface_Blockchain_Agent_Miner_Pool__ = __webpack_require__(359); + + + + +class InterfaceBlockchainAgentFullNode extends __WEBPACK_IMPORTED_MODULE_2__Interface_Blockchain_Agent_Miner_Pool__["a" /* default */]{ + + constructor(blockchain) { + + super(blockchain); + + } + + _initializeProtocol(){ + + this.protocol.initialize(["acceptBlockHeaders", "acceptBlocks" ]); + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceBlockchainAgentFullNode); + +/***/ }), +/* 210 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__protocol_Interface_Blockchain_Protocol__ = __webpack_require__(144); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_common_blockchain_interface_blockchain_blockchain_forks_Interface_Blockchain_Fork__ = __webpack_require__(112); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_common_utils_helpers_Version_Checker_Helper__ = __webpack_require__(212); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_node_lists_types_Connection_Type__ = __webpack_require__(37); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_main_blockchain_Blockchain__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__Agent_Status__ = __webpack_require__(115); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__Interface_Blockchain_Agent_Basic__ = __webpack_require__(800); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_9_node_lists_types_Node_Type__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_10_node_lists_waitlist_Nodes_Waitlist_Connecting__ = __webpack_require__(343); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_11_common_utils_logging_Log__ = __webpack_require__(21); + + + + + + + + + + + + + +let NodeExpress; + +if (false) { + NodeExpress = require('node/sockets/node-server/express/Node-Express').default; +} + +/** + * + * Agent 47 - The place I was raised, they didn't give us names. They gave us numbers. Mine was 47. + * + * + * An Agent is a class that force your machine to synchronize to the network based on the protocol you use it + */ + +class InterfaceBlockchainAgent extends __WEBPACK_IMPORTED_MODULE_8__Interface_Blockchain_Agent_Basic__["a" /* default */]{ + + constructor( blockchain ){ + + super(blockchain); + + if (__WEBPACK_IMPORTED_MODULE_3_common_utils_helpers_Version_Checker_Helper__["a" /* default */].detectMobileAndTablet()) + this.AGENT_TIME_OUT = 140*1000; + else + this.AGENT_TIME_OUT = 120*1000; + + this.AGENT_TIME_INTERVAL = 500; + + this._startAgentTimeOut = undefined; + this._startAgentInterval = undefined; + + this._newProtocol(); + + } + + + newFork(){ + let fork = new __WEBPACK_IMPORTED_MODULE_2_common_blockchain_interface_blockchain_blockchain_forks_Interface_Blockchain_Fork__["a" /* default */](); + __WEBPACK_IMPORTED_MODULE_2_common_blockchain_interface_blockchain_blockchain_forks_Interface_Blockchain_Fork__["a" /* default */].prototype.initializeConstructor.apply(fork, arguments); + + return fork; + } + + _newProtocol(){ + this.protocol = new __WEBPACK_IMPORTED_MODULE_1__protocol_Interface_Blockchain_Protocol__["a" /* default */](this.blockchain, this); + } + + _initializeProtocol(){ + this.protocol.initialize(["acceptBlockHeaders"]); + } + + initializeAgentPromise(){ + + clearTimeout(this._startAgentTimeOut); + this._startAgentTimeOut = undefined; + + clearInterval(this._startAgentInterval); + this._startAgentInterval = undefined; + + this._setStartAgentInterval(); + this._setStartAgentTimeOut(); + } + + initializeStartAgentOnce(){ + + this._initializeProtocol(); + + __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].emitter.on("nodes-list/connected", async (result) => { + + //AGENT_STATUS.AGENT_STATUS_SYNCHRONIZED_SLAVES will desync from fallback nodes + + // if ( this._determineSynchronizedSlaves() ){ + // + // this.status = AGENT_STATUS.AGENT_STATUS_SYNCHRONIZED_SLAVES; + // NodesList.disconnectFromFallbacks(); + // + // } + + }); + + } + + _determineSynchronizedSlaves(){ + + return !this.light && !NodeExpress.SSL && !NodeExpress.amIFallback() && __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].countNodesByType(__WEBPACK_IMPORTED_MODULE_9_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL) > __WEBPACK_IMPORTED_MODULE_7_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.TERMINAL.SERVER.TERMINAL_CONNECTIONS_REQUIRED_TO_DISCONNECT_FROM_FALLBACK; + + } + + async startAgent(firsTime, synchronizeComplete=false){ + + console.warn("startAgent was started"); + this.status = __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_NOT_SYNCHRONIZED; + + this.initializeAgentPromise(); + return await this.waitSynchronizationStatus(); + + } + + _agentConfirmationIntervalFunction(){ + + if (this.blockchain.blocks.length <= 0) return false; + if ( __WEBPACK_IMPORTED_MODULE_0_node_lists_Nodes_List__["a" /* default */].countNodesByConnectionType(__WEBPACK_IMPORTED_MODULE_4_node_lists_types_Connection_Type__["a" /* default */].CONNECTION_CLIENT_SOCKET) <= 0 ) return false; + + + if (this.light) { + if (this.blockchain.proofPi !== undefined && this.blockchain.proofPi.blocks.length > 0 && this.blockchain.proofPi.blocks[this.blockchain.proofPi.blocks.length-1] !== undefined && this.blockchain.blocks.length >= this.blockchain.proofPi.blocks[this.blockchain.proofPi.blocks.length-1].height + __WEBPACK_IMPORTED_MODULE_7_consts_const_global__["a" /* default */].POPOW_PARAMS.k ) + this.status = __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED; + } + else { //terminal + + //let's check if we downloaded blocks in the last 2 minutes + + let set = true; + + // if (this.lastTimeChecked !== undefined ){ + // + // let diffBlocks = this.blockchain.blocks.length - this.lastTimeChecked.blocks; + // let shouldItStart = false; + // if ( NodesList.nodes.length > 0 && diffBlocks >= 0 && diffBlocks < consts.SETTINGS.PARAMS.CONNECTIONS.FORKS.MAXIMUM_BLOCKS_TO_DOWNLOAD && + // NodesList.nodes.length >= NodesWaitlistConnecting.connectingMaximum.minimum_fallbacks + NodesWaitlistConnecting.connectingMaximum.minimum_waitlist) { + // shouldItStart = true; + // } + // + // let difference = Math.max(0, Math.floor( ( 1*60*1000 - (new Date().getTime() - this.lastTimeChecked.date ))/1000 )); + // + // if (Math.random() < 0.1){ + // + // Log.warn("", Log.LOG_TYPE.BLOCKCHAIN); + // Log.warn(shouldItStart ? ("Synchronization probably starts in: " + difference + ' seconds ') : 'Synchronizing', Log.LOG_TYPE.BLOCKCHAIN); + // Log.warn("", Log.LOG_TYPE.BLOCKCHAIN); + // + // } + // + // if ( difference <= 0) { + // + // if (shouldItStart) + // this.status = AGENT_STATUS.AGENT_STATUS_SYNCHRONIZED; + // + // } else set = false; + // + // } + // + // + // if (set) + // this.lastTimeChecked ={ + // + // date: new Date().getTime(), + // blocks: this.blockchain.blocks.length, + // + // } + + this.status = __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED; + + } + + } + + _setStartAgentInterval(){ + + if (this._startAgentInterval !== undefined) return; + + this._startAgentInterval = setInterval( this._agentConfirmationIntervalFunction.bind(this) , this.AGENT_TIME_INTERVAL ); + + } + + _setStartAgentTimeOut(factor = 1){ + + if (this._startAgentTimeOut !== undefined) return; + + this._startAgentTimeOut = setTimeout( () => { + + + this._startAgentTimeOut = undefined; + + this.status = __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_NOT_SYNCHRONIZED; + + }, this.AGENT_TIME_OUT); + } + + + + + waitSynchronizationStatus(){ + + return new Promise((resolve)=>{ + + this._eventEmitter.once('agent/synchronized',(answer)=>{ + resolve(answer); + }); + + }); + + } + + set status(newValue){ + + if (this._status === newValue) + return; + + this._status = newValue; + + if ( [__WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED, __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_NOT_SYNCHRONIZED, __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED_SLAVES, __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED_POOL].indexOf(newValue) >= 0){ + + clearTimeout(this._startAgentTimeOut); + this._startAgentTimeOut = undefined; + + clearInterval(this._startAgentInterval); + this._startAgentInterval = undefined; + + } + + if ( [__WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED, __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED_SLAVES, __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_SYNCHRONIZED_POOL].indexOf(newValue) >= 0) + + this._eventEmitter.emit('agent/synchronized', { + result: true, + message: "Start Agent worked successfully", + }); + + else if ( __WEBPACK_IMPORTED_MODULE_6__Agent_Status__["a" /* default */].AGENT_STATUS_NOT_SYNCHRONIZED === newValue) + + this._eventEmitter.emit('agent/synchronized', { + result: false, + message: "Start Agent Timeout", + }); + + + } + + get status(){ + return this._status; + } + + + + +} + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceBlockchainAgent); + +/***/ }), +/* 211 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__blockchain_forks_Interface_Blockchain_Fork__ = __webpack_require__(112); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_blockchain_global_Blockchain_Mining_Reward__ = __webpack_require__(48); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_consts_global__ = __webpack_require__(36); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_common_events_Status_Events__ = __webpack_require__(12); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_common_utils_BufferExtended__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_common_utils_bans_BansList__ = __webpack_require__(114); + + + + + + + + +/** + * Blockchain Protocol Fork Solver - that solves the fork of a new blockchain + */ +class InterfaceBlockchainProtocolForkSolver{ + + constructor(blockchain, protocol){ + + this.blockchain = blockchain; + this.protocol = protocol; + + } + + async _discoverForkBinarySearch(socket, initialLeft, left, right){ + + let answer; + + try { + + let mid = Math.trunc((left + right) / 2); + + answer = await socket.node.sendRequestWaitOnce("head/hash", mid, mid, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.TIMEOUT.WAIT_ASYNC_DISCOVERY_TIMEOUT); + + console.log("_discoverForkBinarySearch", initialLeft, "left", left, "right ", right); + + if (left < 0 || answer === null || !Buffer.isBuffer(answer.hash) ) // timeout + return {position: null, header: answer }; + + //i have finished the binary search + if (left >= right) { + + //it the block actually is the same + if (answer.hash.equals( this.blockchain.getHashPrev( mid+1 ) ) ) + return {position: mid, header: answer.hash }; + else { + + //it is not a match, but it was previously a match + if (mid-1 >= 0 && initialLeft <= mid-1 && initialLeft < left){ + + answer = await socket.node.sendRequestWaitOnce("head/hash", mid-1, mid-1, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.TIMEOUT.WAIT_ASYNC_DISCOVERY_TIMEOUT ); + + if (answer === null || !Buffer.isBuffer(answer.hash)) + return {position: null, header: answer }; // timeout + + if (answer.hash.equals( this.blockchain.getHashPrev(mid-1 +1) ) ) // it is a match + return {position: mid-1, header: answer.hash }; + + } + + return {position: -1, header: answer.hash} + } + + } + + //was not not found, search left because it must be there + if (! answer.hash.equals( this.blockchain.getHashPrev(mid+1) ) ) + return await this._discoverForkBinarySearch(socket, initialLeft, left, mid); + else + //was found, search right because the fork must be there + return await this._discoverForkBinarySearch(socket, initialLeft, mid + 1, right); + + } catch (exception){ + + console.error("_discoverForkBinarySearch raised an exception" , exception, answer); + + return {position: null, header: null}; + + } + + } + + async _calculateForkBinarySearch(socket, forkChainStartingPoint, forkChainLength, currentBlockchainLength){ + + if (forkChainStartingPoint > currentBlockchainLength-1 || currentBlockchainLength === 0) + return {position: -1, header: null}; + else { + let binarySearchResult = await this._discoverForkBinarySearch(socket, forkChainStartingPoint, forkChainStartingPoint, currentBlockchainLength - 1); + + //forcing the binary search for download the next unmatching element + if (binarySearchResult.position !== -1 && binarySearchResult.position+1 < forkChainLength) + binarySearchResult.position++; + + return binarySearchResult; + } + + + + } + + + /* + may the fork be with you Otto + */ + + async discoverFork(socket, forkChainLength, forkChainStartingPoint, forkLastBlockHash, forkProof, forkChainWork ){ + + let binarySearchResult = {position: -1, header: null }; + let currentBlockchainLength = this.blockchain.blocks.length; + + let fork, forkFound; + + try { + + let answer = this.blockchain.forksAdministrator.findFork(socket, forkLastBlockHash, forkProof); + if (answer !== null) return answer; + + fork = await this.blockchain.forksAdministrator.createNewFork( socket, undefined, undefined, undefined, undefined, [ forkLastBlockHash ], false ); + + //veify last n elements + const count = 6; + + if ( currentBlockchainLength >= count && ( forkChainLength >= currentBlockchainLength || (this.blockchain.agent.light && forkProof) ) ) + for (let i = currentBlockchainLength-1; i >= currentBlockchainLength-1-count; i--){ + + if (i === forkChainLength-1 && forkLastBlockHash !== undefined && forkLastBlockHash !== undefined) { + answer = { hash: forkLastBlockHash }; + } else { + answer = await socket.node.sendRequestWaitOnce( "head/hash", i, i, __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.TIMEOUT.WAIT_ASYNC_DISCOVERY_TIMEOUT ); + if (answer === null || answer === undefined || answer.hash === undefined) + continue; + } + + forkFound = this.blockchain.forksAdministrator._findForkyByHeader( answer.hash ); + + if (forkFound !== null && forkFound !== fork) { + if (Math.random() < 0.01) console.error("discoverAndProcessFork - fork already found by n-2"); + + forkFound.pushHeaders( fork.forkHeaders ); //this lead to a new fork + forkFound.pushSocket(socket, forkProof); + + this.blockchain.forksAdministrator.deleteFork(fork); //destroy fork + + return {result: true, fork: forkFound}; + } + + fork.pushHeader(answer.hash); + + if (this.blockchain.blocks[i].hash.equals(answer.hash)){ + + binarySearchResult = { + position: (i === currentBlockchainLength-1) ? currentBlockchainLength : i+1, + header: answer.hash, + }; + + + break; + + } + + } + + + // in case it was you solved previously && there is something in the blockchain + + //Binary Search to detect the Fork Position + if ( binarySearchResult.position === -1 ) { + + if (this.blockchain.agent.light) { + if (forkChainLength - forkChainStartingPoint > __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.LIGHT.VALIDATE_LAST_BLOCKS) { + console.warn("LIGHT CHANGES from ", forkChainStartingPoint, " to ", forkChainLength - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.LIGHT.VALIDATE_LAST_BLOCKS - 1); + forkChainStartingPoint = forkChainLength - __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].BLOCKCHAIN.LIGHT.VALIDATE_LAST_BLOCKS - 1; + } + } + + console.warn("discoverFork 6666" + forkChainStartingPoint); + + binarySearchResult = await this._calculateForkBinarySearch(socket, forkChainStartingPoint, forkChainLength, currentBlockchainLength ); + + if (binarySearchResult.position === null) + throw {message: "connection dropped discoverForkBinarySearch"}; + + forkFound = this.blockchain.forksAdministrator._findForkyByHeader(binarySearchResult.header); + + if ( forkFound !== null && forkFound !== fork ){ + + if (Math.random() < 0.01) console.error("discoverAndProcessFork - fork already found by hash after binary search"); + + forkFound.pushHeader( forkLastBlockHash ); + forkFound.pushSocket( socket, forkProof ); + + this.blockchain.forksAdministrator.deleteFork(fork); //destroy fork + + return {result: true, fork: forkFound}; + } + + fork.pushHeader(binarySearchResult.header); + + } + + //process light and NiPoPow + await this.optionalProcess(socket, binarySearchResult, currentBlockchainLength, forkChainLength, forkChainStartingPoint); + + //its a fork... starting from position + console.log("fork position", binarySearchResult.position, "forkChainStartingPoint", forkChainStartingPoint, "forkChainLength", forkChainLength); + + if (binarySearchResult.position === -1 || (binarySearchResult.position > 0 && binarySearchResult.header !== undefined && binarySearchResult.header !== null) ){ + + if (binarySearchResult.position === -1) + binarySearchResult.position = 0; + + //maximum blocks to download + if ( !this.blockchain.agent.light && forkChainLength >= this.blockchain.blocks.length + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.FORKS.MAXIMUM_BLOCKS_TO_DOWNLOAD){ + fork.downloadAllBlocks = true; + forkChainLength = Math.min(forkChainLength, this.blockchain.blocks.length + __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.FORKS.MAXIMUM_BLOCKS_TO_DOWNLOAD); + } + + if ( (forkChainLength - binarySearchResult.position) >= __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONNECTIONS.FORKS.MAXIMUM_BLOCKS_TO_DOWNLOAD_TO_USE_SLEEP){ + fork.downloadBlocksSleep = true; + } + + fork.forkStartingHeight = binarySearchResult.position; + fork.forkStartingHeightDownloading = binarySearchResult.position; + fork.forkChainStartingPoint = forkChainStartingPoint; + fork.forkChainLength = forkChainLength; + fork.forkChainWork = forkChainWork; + + if ( fork.forkStartingHeight > fork.forkChainLength-1 ) + throw {message: "FORK is empty"}; + + await fork.initializeFork(); //download the requirements and make it ready + + if (!fork.forkReady) + throw {message:" FORK IS NOT READY "}; + + } else { + //it is a totally new blockchain (maybe genesis was mined) + console.log("fork is something new"); + throw {message: "fork is something new", binarySearchResult:binarySearchResult, forkChainStartingPoint:forkChainStartingPoint, forkChainLength:forkChainLength} ; + } + + + + return {result: true, fork:fork }; + + } catch ( exception ){ + + this.blockchain.forksAdministrator.deleteFork(fork); + + console.error("discoverAndProcessFork", exception ); + + let bIncludeBan = true; + + if (this.blockchain.agent.light) + if ([ "FORK is empty", "fork is something new", + "discoverAndProcessFork - fork already found by socket", + "same proof, but your blockchain is smaller than mine", "Your proof is worst than mine because you have the same block", "fork proof was already downloaded" ].indexOf( exception.message ) >= 0) + bIncludeBan = false; + + if (bIncludeBan) { + console.warn("BANNNNNNNNNNNNNNNNN", socket.node.sckAddress.toString(), exception.message); + __WEBPACK_IMPORTED_MODULE_6_common_utils_bans_BansList__["a" /* default */].addBan(socket, 60000, exception.message); + } + + await this.blockchain.sleep(10); + + return { result:false, error: exception }; + + } + + } + + async optionalProcess(socket, binarySearchResult, currentBlockchainLength, forkChainLength, forkChainStartingPoint){ + + } + + /** + * Solve Fork by Downloading the blocks required in the fork + * @param fork + * @returns {Promise.} + */ + async _solveFork(fork) { + + __WEBPACK_IMPORTED_MODULE_4_common_events_Status_Events__["a" /* default */].emit( "agent/status", {message: "Collecting Blockchain", blockHeight: fork.forkStartingHeight } ); + + if (fork === null || fork === undefined || typeof fork !== "object" ) + throw {message: 'fork is null'}; + + let nextBlockHeight = fork.forkStartingHeightDownloading; + + //maybe it was deleted before + if (fork.sockets.length === 0 || !fork.forkReady) + return false; + + console.log(" < fork.forkChainLength", fork.forkChainLength, "fork.forkBlocks.length", fork.forkBlocks.length); + + while (( fork.forkStartingHeight + fork.forkBlocks.length < fork.forkChainLength) && !__WEBPACK_IMPORTED_MODULE_2_consts_global__["a" /* default */].TERMINATED ) { + + let socketListOptimized = fork.sockets.sort((a,b) => {return (a.latency > b.latency) ? 1 : ((b.latency > a.latency ) ? -1 : 0);} ); + + __WEBPACK_IMPORTED_MODULE_4_common_events_Status_Events__["a" /* default */].emit( "agent/status", {message: "Synchronizing - Downloading Block", blockHeight: nextBlockHeight, blockHeightMax: fork.forkChainLength } ); + + let onlyHeader; + + if (this.protocol.acceptBlocks) + onlyHeader = false; + else + if (this.protocol.acceptBlockHeaders) + onlyHeader = true; + + let answer; + + let howManyBlocks = Math.min( fork.forkChainLength - (fork.forkStartingHeight + fork.forkBlocks.length), __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.CONCURRENCY_BLOCK_DOWNLOAD_MINERS_NUMBER); + let downloadingList = []; + let trialsList = []; + let alreadyDownloaded = 0; + + let finished = new Promise((resolve)=>{ + + let timeout; + let processing = ()=>{ + + for (let i=0, socketOffset = 0; i < howManyBlocks; i++) + if (downloadingList[i] === undefined) { + + if (trialsList[i] > 5){ + clearTimeout(timeout); + resolve(false); + return; + } + + trialsList[i] ++ ; + + if ( socketOffset >= socketListOptimized.length) + socketOffset=0; + + if (socketListOptimized.length === 0){ + clearTimeout(timeout); + resolve(false); + continue; + } + + if ( !socketListOptimized[socketOffset].connected ) { + socketListOptimized.splice(socketOffset, 1); + continue; + } + + + let socket = socketListOptimized[socketOffset]; + let waitingTime = socket.latency===0 ? __WEBPACK_IMPORTED_MODULE_3_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_ALLOWED_LATENCY : socket.latency; + + answer = socket.node.sendRequestWaitOnce("blockchain/blocks/request-block-by-height", {height: nextBlockHeight+i}, nextBlockHeight+i, waitingTime + Math.random()*2000 ); + downloadingList[i] = answer; + + answer.then(async (result)=>{ + + if (result === undefined || result === null) + downloadingList[i] = undefined; + else { + alreadyDownloaded++; + downloadingList[i] = result; + } + + }); + + socketOffset++ + + } + + if ( (alreadyDownloaded === howManyBlocks) || __WEBPACK_IMPORTED_MODULE_2_consts_global__["a" /* default */].TERMINATED ){ + clearTimeout(timeout); + resolve(true); + } else + setTimeout(processing, 200); + + }; + + setTimeout(processing, 200); + + }); + + await finished; + + //verify if all blocks were downloaded + + let blockValidation; + let block; + + for(let i=0; i= fork.forkChainLength ) { + + if (await fork.saveFork()) + return true; + else + throw {message: "Save Fork couldn't be saved"}; + + } + + + } + + _deserializeForkBlock( fork, blockData, blockHeight, validationBlock){ + + let block = undefined; + + try { + + block = this.blockchain.blockCreator.createEmptyBlock(blockHeight, validationBlock); + + if (!this.protocol.acceptBlocks && this.protocol.acceptBlockHeaders) + block.data._onlyHeader = true; //avoiding to store the transactions + + block.deserializeBlock( blockData, blockHeight, undefined, fork.getForkDifficultyTarget(block.height) ); + + } catch (Exception) { + console.error("Error deserializing blocks ", Exception, blockData); + return false; + } + + return block; + } + +} + + +/* harmony default export */ __webpack_exports__["a"] = (InterfaceBlockchainProtocolForkSolver); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 212 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +class VersionCheckerHelper{ + + detectMobile(){ + + if (typeof window === "undefined") return false; + + let check = false; + (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); + return check; + + } + + detectMobileAndTablet(){ + + if (typeof window === "undefined") return false; + + let check = false; + + (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) check = true;})(navigator.userAgent||navigator.vendor||window.opera); + return check; + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new VersionCheckerHelper()); + +/***/ }), +/* 213 */ +/***/ (function(module, exports, __webpack_require__) { + + +/** + * Module dependencies. + */ + +var debug = __webpack_require__(807)('socket.io-parser'); +var json = __webpack_require__(810); +var Emitter = __webpack_require__(812); +var binary = __webpack_require__(813); +var isBuf = __webpack_require__(345); + +/** + * Protocol version. + * + * @api public + */ + +exports.protocol = 4; + +/** + * Packet types. + * + * @api public + */ + +exports.types = [ + 'CONNECT', + 'DISCONNECT', + 'EVENT', + 'ACK', + 'ERROR', + 'BINARY_EVENT', + 'BINARY_ACK' +]; + +/** + * Packet type `connect`. + * + * @api public + */ + +exports.CONNECT = 0; + +/** + * Packet type `disconnect`. + * + * @api public + */ + +exports.DISCONNECT = 1; + +/** + * Packet type `event`. + * + * @api public + */ + +exports.EVENT = 2; + +/** + * Packet type `ack`. + * + * @api public + */ + +exports.ACK = 3; + +/** + * Packet type `error`. + * + * @api public + */ + +exports.ERROR = 4; + +/** + * Packet type 'binary event' + * + * @api public + */ + +exports.BINARY_EVENT = 5; + +/** + * Packet type `binary ack`. For acks with binary arguments. + * + * @api public + */ + +exports.BINARY_ACK = 6; + +/** + * Encoder constructor. + * + * @api public + */ + +exports.Encoder = Encoder; + +/** + * Decoder constructor. + * + * @api public + */ + +exports.Decoder = Decoder; + +/** + * A socket.io Encoder instance + * + * @api public + */ + +function Encoder() {} + +/** + * Encode a packet as a single string if non-binary, or as a + * buffer sequence, depending on packet type. + * + * @param {Object} obj - packet object + * @param {Function} callback - function to handle encodings (likely engine.write) + * @return Calls callback with Array of encodings + * @api public + */ + +Encoder.prototype.encode = function(obj, callback){ + debug('encoding packet %j', obj); + + if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) { + encodeAsBinary(obj, callback); + } + else { + var encoding = encodeAsString(obj); + callback([encoding]); + } +}; + +/** + * Encode packet as string. + * + * @param {Object} packet + * @return {String} encoded + * @api private + */ + +function encodeAsString(obj) { + var str = ''; + var nsp = false; + + // first is type + str += obj.type; + + // attachments if we have them + if (exports.BINARY_EVENT == obj.type || exports.BINARY_ACK == obj.type) { + str += obj.attachments; + str += '-'; + } + + // if we have a namespace other than `/` + // we append it followed by a comma `,` + if (obj.nsp && '/' != obj.nsp) { + nsp = true; + str += obj.nsp; + } + + // immediately followed by the id + if (null != obj.id) { + if (nsp) { + str += ','; + nsp = false; + } + str += obj.id; + } + + // json data + if (null != obj.data) { + if (nsp) str += ','; + str += json.stringify(obj.data); + } + + debug('encoded %j as %s', obj, str); + return str; +} + +/** + * Encode packet as 'buffer sequence' by removing blobs, and + * deconstructing packet into object with placeholders and + * a list of buffers. + * + * @param {Object} packet + * @return {Buffer} encoded + * @api private + */ + +function encodeAsBinary(obj, callback) { + + function writeEncoding(bloblessData) { + var deconstruction = binary.deconstructPacket(bloblessData); + var pack = encodeAsString(deconstruction.packet); + var buffers = deconstruction.buffers; + + buffers.unshift(pack); // add packet info to beginning of data list + callback(buffers); // write all the buffers + } + + binary.removeBlobs(obj, writeEncoding); +} + +/** + * A socket.io Decoder instance + * + * @return {Object} decoder + * @api public + */ + +function Decoder() { + this.reconstructor = null; +} + +/** + * Mix in `Emitter` with Decoder. + */ + +Emitter(Decoder.prototype); + +/** + * Decodes an ecoded packet string into packet JSON. + * + * @param {String} obj - encoded packet + * @return {Object} packet + * @api public + */ + +Decoder.prototype.add = function(obj) { + var packet; + if ('string' == typeof obj) { + packet = decodeString(obj); + if (exports.BINARY_EVENT == packet.type || exports.BINARY_ACK == packet.type) { // binary packet's json + this.reconstructor = new BinaryReconstructor(packet); + + // no attachments, labeled binary but no binary data to follow + if (this.reconstructor.reconPack.attachments === 0) { + this.emit('decoded', packet); + } + } else { // non-binary full packet + this.emit('decoded', packet); + } + } + else if (isBuf(obj) || obj.base64) { // raw binary data + if (!this.reconstructor) { + throw new Error('got binary data when not reconstructing a packet'); + } else { + packet = this.reconstructor.takeBinaryData(obj); + if (packet) { // received final buffer + this.reconstructor = null; + this.emit('decoded', packet); + } + } + } + else { + throw new Error('Unknown type: ' + obj); + } +}; + +/** + * Decode a packet String (JSON data) + * + * @param {String} str + * @return {Object} packet + * @api private + */ + +function decodeString(str) { + var p = {}; + var i = 0; + + // look up type + p.type = Number(str.charAt(0)); + if (null == exports.types[p.type]) return error(); + + // look up attachments if type binary + if (exports.BINARY_EVENT == p.type || exports.BINARY_ACK == p.type) { + var buf = ''; + while (str.charAt(++i) != '-') { + buf += str.charAt(i); + if (i == str.length) break; + } + if (buf != Number(buf) || str.charAt(i) != '-') { + throw new Error('Illegal attachments'); + } + p.attachments = Number(buf); + } + + // look up namespace (if any) + if ('/' == str.charAt(i + 1)) { + p.nsp = ''; + while (++i) { + var c = str.charAt(i); + if (',' == c) break; + p.nsp += c; + if (i == str.length) break; + } + } else { + p.nsp = '/'; + } + + // look up id + var next = str.charAt(i + 1); + if ('' !== next && Number(next) == next) { + p.id = ''; + while (++i) { + var c = str.charAt(i); + if (null == c || Number(c) != c) { + --i; + break; + } + p.id += str.charAt(i); + if (i == str.length) break; + } + p.id = Number(p.id); + } + + // look up json data + if (str.charAt(++i)) { + p = tryParse(p, str.substr(i)); + } + + debug('decoded %s as %j', str, p); + return p; +} + +function tryParse(p, str) { + try { + p.data = json.parse(str); + } catch(e){ + return error(); + } + return p; +}; + +/** + * Deallocates a parser's resources + * + * @api public + */ + +Decoder.prototype.destroy = function() { + if (this.reconstructor) { + this.reconstructor.finishedReconstruction(); + } +}; + +/** + * A manager of a binary event's 'buffer sequence'. Should + * be constructed whenever a packet of type BINARY_EVENT is + * decoded. + * + * @param {Object} packet + * @return {BinaryReconstructor} initialized reconstructor + * @api private + */ + +function BinaryReconstructor(packet) { + this.reconPack = packet; + this.buffers = []; +} + +/** + * Method to be called when binary data received from connection + * after a BINARY_EVENT packet. + * + * @param {Buffer | ArrayBuffer} binData - the raw binary data received + * @return {null | Object} returns null if more binary data is expected or + * a reconstructed packet object if all buffers have been received. + * @api private + */ + +BinaryReconstructor.prototype.takeBinaryData = function(binData) { + this.buffers.push(binData); + if (this.buffers.length == this.reconPack.attachments) { // done with buffer list + var packet = binary.reconstructPacket(this.reconPack, this.buffers); + this.finishedReconstruction(); + return packet; + } + return null; +}; + +/** + * Cleans up binary packet reconstruction variables. + * + * @api private + */ + +BinaryReconstructor.prototype.finishedReconstruction = function() { + this.reconPack = null; + this.buffers = []; +}; + +function error(data){ + return { + type: exports.ERROR, + data: 'parser error' + }; +} + + +/***/ }), +/* 214 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {// browser shim for xmlhttprequest module + +var hasCORS = __webpack_require__(818); + +module.exports = function (opts) { + var xdomain = opts.xdomain; + + // scheme must be same when usign XDomainRequest + // http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx + var xscheme = opts.xscheme; + + // XDomainRequest has a flow of not sending cookie, therefore it should be disabled as a default. + // https://github.com/Automattic/engine.io-client/pull/217 + var enablesXDR = opts.enablesXDR; + + // XMLHttpRequest can be disabled on IE + try { + if ('undefined' !== typeof XMLHttpRequest && (!xdomain || hasCORS)) { + return new XMLHttpRequest(); + } + } catch (e) { } + + // Use XDomainRequest for IE8 if enablesXDR is true + // because loading bar keeps flashing when using jsonp-polling + // https://github.com/yujiosaka/socke.io-ie8-loading-example + try { + if ('undefined' !== typeof XDomainRequest && !xscheme && enablesXDR) { + return new XDomainRequest(); + } + } catch (e) { } + + if (!xdomain) { + try { + return new global[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP'); + } catch (e) { } + } +}; + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11))) + +/***/ }), +/* 215 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Module dependencies. + */ + +var parser = __webpack_require__(97); +var Emitter = __webpack_require__(116); + +/** + * Module exports. + */ + +module.exports = Transport; + +/** + * Transport abstract constructor. + * + * @param {Object} options. + * @api private + */ + +function Transport (opts) { + this.path = opts.path; + this.hostname = opts.hostname; + this.port = opts.port; + this.secure = opts.secure; + this.query = opts.query; + this.timestampParam = opts.timestampParam; + this.timestampRequests = opts.timestampRequests; + this.readyState = ''; + this.agent = opts.agent || false; + this.socket = opts.socket; + this.enablesXDR = opts.enablesXDR; + + // SSL options for Node.js client + this.pfx = opts.pfx; + this.key = opts.key; + this.passphrase = opts.passphrase; + this.cert = opts.cert; + this.ca = opts.ca; + this.ciphers = opts.ciphers; + this.rejectUnauthorized = opts.rejectUnauthorized; + this.forceNode = opts.forceNode; + + // other options for Node.js client + this.extraHeaders = opts.extraHeaders; + this.localAddress = opts.localAddress; +} + +/** + * Mix in `Emitter`. + */ + +Emitter(Transport.prototype); + +/** + * Emits an error. + * + * @param {String} str + * @return {Transport} for chaining + * @api public + */ + +Transport.prototype.onError = function (msg, desc) { + var err = new Error(msg); + err.type = 'TransportError'; + err.description = desc; + this.emit('error', err); + return this; +}; + +/** + * Opens the transport. + * + * @api public + */ + +Transport.prototype.open = function () { + if ('closed' === this.readyState || '' === this.readyState) { + this.readyState = 'opening'; + this.doOpen(); + } + + return this; +}; + +/** + * Closes the transport. + * + * @api private + */ + +Transport.prototype.close = function () { + if ('opening' === this.readyState || 'open' === this.readyState) { + this.doClose(); + this.onClose(); + } + + return this; +}; + +/** + * Sends multiple packets. + * + * @param {Array} packets + * @api private + */ + +Transport.prototype.send = function (packets) { + if ('open' === this.readyState) { + this.write(packets); + } else { + throw new Error('Transport not open'); + } +}; + +/** + * Called upon open + * + * @api private + */ + +Transport.prototype.onOpen = function () { + this.readyState = 'open'; + this.writable = true; + this.emit('open'); +}; + +/** + * Called with data. + * + * @param {String} data + * @api private + */ + +Transport.prototype.onData = function (data) { + var packet = parser.decodePacket(data, this.socket.binaryType); + this.onPacket(packet); +}; + +/** + * Called with a decoded packet. + */ + +Transport.prototype.onPacket = function (packet) { + this.emit('packet', packet); +}; + +/** + * Called upon close. + * + * @api private + */ + +Transport.prototype.onClose = function () { + this.readyState = 'closed'; + this.emit('close'); +}; + + +/***/ }), +/* 216 */ +/***/ (function(module, exports) { + +/** + * Compiles a querystring + * Returns string representation of the object + * + * @param {Object} + * @api private + */ + +exports.encode = function (obj) { + var str = ''; + + for (var i in obj) { + if (obj.hasOwnProperty(i)) { + if (str.length) str += '&'; + str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]); + } + } + + return str; +}; + +/** + * Parses a simple querystring into an object + * + * @param {String} qs + * @api private + */ + +exports.decode = function(qs){ + var qry = {}; + var pairs = qs.split('&'); + for (var i = 0, l = pairs.length; i < l; i++) { + var pair = pairs[i].split('='); + qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + return qry; +}; + + +/***/ }), +/* 217 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_node_lists_types_Node_Consensus_Type__ = __webpack_require__(34); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__ = __webpack_require__(28); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__ = __webpack_require__(26); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_common_sockets_protocol_extend_socket_Node_Protocol__ = __webpack_require__(111); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_main_blockchain_Blockchain__ = __webpack_require__(5); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_common_sockets_protocol_Node_Propagation_List__ = __webpack_require__(835); + + + + + + + + + +const MAX_WAITLIST_QUEUE_LENGTH = 1000; +const DOWNLOAD_WAITLIST_COUNT = 20; + +class NodePropagationProtocol { + + constructor(){ + + + this._newFullNodesWaitList = {length: 0}; //for key-value + this._newLightNodesWaitList = {length: 0}; //for key-value + + + this._waitlistProccessed = {}; + + setTimeout( this._processNewWaitlistInterval.bind(this), 5000 + Math.random()*2000 ); + + } + + async _processList(list, nodeType){ + + for (let key in list){ + + if (key === "length") continue; + if (!list.hasOwnProperty(key)) continue; + + let answer = await __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].addNewNodeToWaitlist( key, undefined, list[key].t, list[key].ct||__WEBPACK_IMPORTED_MODULE_0_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_PEER, list[key].c, list[key].sock.node.level + 1, list[key].sock ); + + //downloading the next elements + if ( list[key].next !== undefined && list[key].next > 0 ) + list[key].sock.node.sendRequest( (nodeType === __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL ? "propagation/request-all-wait-list/full-nodes" : "propagation/request-all-wait-list/light-nodes"), { index: list[key].next, count: this.count(list[key].sock) }); + + delete list[key]; + list.length--; + + if (answer.result ){ + this._waitlistProccessed[key] = true; + return; + } + + } + + + } + + async _processNewWaitlistInterval(){ + + await this._processList(this._newFullNodesWaitList, __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL); + await this._processList(this._newLightNodesWaitList, __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER); + + + setTimeout( async ()=>{ await this._processNewWaitlistInterval() } , 1500 + Math.floor( Math.random() * 200 ) ); + + } + + + initializePropagationProtocol(){ + + __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].emitter.once("nodes-list/connected", nodeListObject => { this._newNodeConnected( nodeListObject ) } ); + __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].emitter.once("nodes-list/disconnected", nodeListObject => { this._nodeDisconnected( nodeListObject) }); + + __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].emitter.on("waitlist/new-node", nodeWaitListObject => { this._newNodeConnected( nodeWaitListObject) } ); + __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].emitter.on("waitlist/delete-node", nodeWaitListObject => { this._nodeDisconnected( nodeWaitListObject) }); + + } + + initializeSocketForPropagation(socket){ + + //avoiding download the list from + + this.initializeNodesPropagation(socket); + + + setTimeout( ()=>{ + + if ([__WEBPACK_IMPORTED_MODULE_0_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_MINER_POOL].indexOf( socket.node.protocol.nodeConsensusType ) === 0 ) + socket.node.sendRequest("propagation/request-all-wait-list/full-nodes", { index: 0, count: this.count(socket) }); + + socket.node.sendRequest("propagation/request-all-wait-list/light-nodes", { index:0, count: this.count(socket) }); + + }, 500 + Math.floor( Math.random()*3000)); + + } + + initializeNodesSimpleWaitlist(socket){ + + if (socket.propagationSet === true) return; + socket.propagationSet = true; + + socket.on("propagation/simple-waitlist-nodes", async ( data, callback )=>{ + + + await this._processNodesList(data, socket); + + callback("received",{ }); + + }); + + } + + async _processNodesList(response, socket){ + + try { + + let addresses = response.addresses || []; + if (typeof addresses === "string") addresses = [addresses]; + + if (!Array.isArray(addresses)) throw { message: "addresses is not an array" }; + + if (addresses.length > 50) addresses.splice(50); //only the first 50 nodes + + let op = response.op || ''; + + switch (op) { + + case "new-full-nodes": + case "new-light-nodes": + + let list, type; + + if (op === "new-full-nodes") { + list = this._newFullNodesWaitList; + type = __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_TERMINAL + } else { + list = this._newLightNodesWaitList; + type = __WEBPACK_IMPORTED_MODULE_3_node_lists_types_Node_Type__["a" /* default */].NODE_WEB_PEER; + } + + if (list.length > MAX_WAITLIST_QUEUE_LENGTH) + break; + + let lastWaitlist = undefined; + + for (let i = 0; i < addresses.length; i++){ + + if ( typeof addresses[ i ].a === "string" && list[ addresses[ i ].a ] === undefined && addresses[ i ].a !== "length"){ + + list[ addresses[ i ].a ] = { + a: addresses[i].a, + t: addresses[i].t, + c: addresses[i].c, + sock: socket, + }; + + lastWaitlist = list[ addresses[ i ].a ]; + + list.length++; + + if (list.length > MAX_WAITLIST_QUEUE_LENGTH) + break; + + } + + } + + if (lastWaitlist !== undefined && response.next !== undefined && response.next > 0 ) + lastWaitlist.next = response.next ; + + break; + + //TODO remove addresses from list + + case "disconnected-light-nodes": + case "disconnected-full-nodes": + + // for (let i = 0; i < addresses.length; i++) { + // + // let answer = NodesWaitlist._searchNodesWaitlist(addresses[i].addr, undefined, addresses[i].nodeType); + // if (answer.waitlist !== null) + // answer.removeBackedBy(socket.node.sckAddress); + // + // if (i%20 === 0) + // await Blockchain.blockchain.sleep(50); + // + // } + + break; + + default: + throw {message: "Op is invalid"}; + + } + + } + catch (exception){ + + } + + } + + initializeNodesPropagation(socket){ + + socket.on("propagation/nodes", async data => { await this._processNodesList(data, socket )}, ); + + socket.node.on("propagation/request-all-wait-list/full-nodes", response =>{ + + let answer = this._getWaitlist( response, __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].waitListFullNodes ); + + if (answer !== null && answer.list.length > 0) + socket.node.sendRequest("propagation/nodes", {"op": "new-full-nodes", addresses: answer.list, next: answer.next}); + + }); + + socket.node.on("propagation/request-all-wait-list/light-nodes", response =>{ + + let answer = this._getWaitlist( response, __WEBPACK_IMPORTED_MODULE_1_node_lists_waitlist_Nodes_Waitlist__["a" /* default */].waitListLightNodes ); + + if (answer !== null && answer.list.length > 0) + socket.node.sendRequest("propagation/nodes", {"op": "new-light-nodes", addresses: answer.list, next: answer.next}); + + }); + + this.initializeNodesSimpleWaitlist(socket); + + } + + _getWaitlist(response, list){ + + try { + let index = response.index || 0; + let count = response.count || 50; + count = Math.min(count, 50); + count = Math.max(count, 5); + + let answer = []; + for (let i = index * count; i < (index + 1) * count && i < list.length; i++) + answer.push(list[i].toJSON()); + + return {list: answer, next: ( (index+1) * count < list.length ) ? (index+1) : 0 } + + } catch (exception){ + + return null; + } + + } + + _newNodeConnected( nodeWaitListObject ){ + + // if (nodeWaitListObject.nodeType === NODE_TYPE.NODE_TERMINAL) NodeProtocol.broadcastRequest("propagation/nodes", {op: "new-full-nodes", addresses: [nodeWaitListObject.toJSON() ]}, undefined, nodeWaitListObject.socket); + // else if(nodeWaitListObject.nodeType === NODE_TYPE.NODE_WEB_PEER) NodeProtocol.broadcastRequest("propagation/nodes", {op: "new-light-nodes", addresses: [nodeWaitListObject.toJSON() ]}, undefined, nodeWaitListObject.socket); + + } + + _nodeDisconnected(nodeWaitListObject){ + + // if (nodeWaitListObject.nodeType === NODE_TYPE.NODE_TERMINAL) NodeProtocol.broadcastRequest("propagation/nodes", {op: "disconnected-full-nodes", addresses: [nodeWaitListObject.toJSON() ]}, undefined, nodeWaitListObject.socket); + // else if(nodeWaitListObject.nodeType === NODE_TYPE.NODE_WEB_PEER) NodeProtocol.broadcastRequest("propagation/nodes", {op: "disconnected-light-nodes", addresses: [nodeWaitListObject.toJSON() ]} , undefined, nodeWaitListObject.socket ); + + } + + + count(socket){ + return [__WEBPACK_IMPORTED_MODULE_0_node_lists_types_Node_Consensus_Type__["a" /* default */].NODE_CONSENSUS_MINER_POOL].indexOf( socket.node.protocol.nodeConsensusType ) ? 15 : DOWNLOAD_WAITLIST_COUNT; + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new NodePropagationProtocol()); + + +/***/ }), +/* 218 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__ = __webpack_require__(219); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__signaling_client_service_Node_Signaling_Client_Service__ = __webpack_require__(358); + + + + + + +class NodeSignalingClientProtocol { + + constructor(){ + + console.log("NodeSignalingClientProtocol constructor"); + } + + _initializeSimpleProtocol(socket){ + + + } + + /* + Signaling Server Service + */ + + //initiator + _initializeSignalingClientService1(socket){ + + //TODO protocol to request to connect me with somebody + + socket.node.on("signals/client/initiator/generate-initiator-signal", async (data) => { + + try{ + + if ( data.remoteUUID === undefined || data.remoteUUID === null) + throw {message: "remoteUUID was not specified"}; + + //search if the new protocol was already connected in the past + if ( __WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].searchNodeSocketByAddress(data.remoteUUID, 'all', ["uuid"] ) !== null) //already connected in the past + throw {message: "Already connected"}; + + if ( __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].searchWebPeerSignalingClientList(undefined, undefined, data.remoteUUID) !== null) + throw {message: "Already connected"}; + + if ( __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].countConnectedByType("initiator") > __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].computeMaxWebPeersConnected( data.remoteUUID ) ) + throw {message: "I can't accept WebPeers anymore" }; + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DEBUG) console.warn("WEBRTC# 1 Generate Initiator Signal"); + + let webPeerSignalingClientListObject = __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].registerWebPeerSignalingClientListBySignal(undefined, undefined, data.remoteUUID, "initiator"); + let webPeer = webPeerSignalingClientListObject.webPeer; + + if (webPeer.peer === null) + await webPeer.createPeer(true, socket, data.connectionId, (iceCandidate) => { this.sendInitiatorIceCandidate(socket, data.connectionId, iceCandidate) }, data.remoteAddress, data.remoteUUID, socket.level+1); + + + let answer = await webPeer.createSignalInitiator(); + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DEBUG) + console.log("###################### signals/client/initiator/generate-initiator-signal/answer" + data.connectionId, answer, webPeer.peer, typeof answer); + + if (answer.signal === undefined) + console.error("WEBRTC 1 is not supported !!!! being the initiator"); + + if (!answer.result ) + throw {message: "Failed to Get a initiatorSignal: " +answer.message}; + + socket.node.sendRequest("signals/client/initiator/generate-initiator-signal/answer", {connectionId: data.connectionId, accepted: true, initiatorSignal: answer.signal}); + + } catch (exception){ + + if (exception.message !== "Already connected" && exception.message !== "I can't accept WebPeers anymore") + console.error("signals/client/initiator/generate-initiator-signal/answer", exception); + + socket.node.sendRequest("signals/client/initiator/generate-initiator-signal/answer", {connectionId: data.connectionId, accepted:false, initiatorSignal: undefined, message: exception.message }); + } + + }); + + socket.node.on("signals/client/initiator/join-answer-signal", async (data) => { + + try { + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DEBUG) console.warn("WEBRTC# 1_2"); + + if (data.remoteUUID === undefined || data.remoteUUID === null) throw { message: "remoteUUID was not specified" }; + + let webPeerSignalingClientListObject = __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].searchWebPeerSignalingClientList(data.initiatorSignal, undefined, data.remoteUUID); + + if (webPeerSignalingClientListObject === null) throw { message: "WebRTC Client was not found"}; + + let answer = await webPeerSignalingClientListObject.webPeer.joinAnswer(data.answerSignal); + + if (!answer.result) + throw {message: answer.message}; + + socket.node.sendRequest("signals/client/initiator/join-answer-signal/answer", {connectionId: data.connectionId, established: true, remoteUUID: data.remoteUUID }); + + } catch (exception){ + + if (exception.message !== "Already connected" && exception.message !== "I can't accept WebPeers anymore") + console.error("signals/client/initiator/join-answer-signal", data.connectionId, exception); + + socket.node.sendRequest("signals/client/initiator/join-answer-signal/answer", {connectionId: data.connectionId, established: false, message: exception.message }); + } + + }); + + socket.node.on("signals/client/initiator/receive-ice-candidate", async (data) => { + + try { + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DEBUG) console.warn("WEBRTC# 1_3"); + + if (data.remoteUUID === undefined || data.remoteUUID === null) + throw {message: "data.remoteUUID 4 was not specified"}; + + if (data.iceCandidate === undefined) + throw {message: "data.iceCandidate 4 was not specified"}; + + let webPeerSignalingClientListObject = __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].searchWebPeerSignalingClientList(data.initiatorSignal, undefined, data.remoteUUID); + + if ( webPeerSignalingClientListObject === null ) throw { message: "WebRTC Client was not found"}; + + let answer = await webPeerSignalingClientListObject.webPeer.createSignal(data.iceCandidate); + + if (!answer.result ) + throw {message: answer.message}; + + socket.node.sendRequest("signals/client/initiator/receive-ice-candidate"+"/answer", { connectionId: data.connectionId, accepted: true, answerSignal: answer.signal} ); + + } catch (exception){ + + if (exception.message !== "Already connected" && exception.message !== "I can't accept WebPeers anymore") + console.error("signals/client/initiator/receive-ice-candidate/" + data.connectionId, exception); + + socket.node.sendRequest("signals/client/initiator/receive-ice-candidate"+"/answer", { connectionId: data.connectionId, accepted: false, message: exception.message }); + } + + }); + + } + + //answer + _initializeSignalingClientService2(socket){ + + socket.node.on("signals/client/answer/receive-initiator-signal", async (data) => { + + try { + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DEBUG) console.warn("WEBRTC# 2"); + + if (data.remoteUUID === undefined || data.remoteUUID === null) + throw {message: "data.remoteUUID 2 was not specified"} + + //search if the new protocol was already connected in the past + if (__WEBPACK_IMPORTED_MODULE_2_node_lists_Nodes_List__["a" /* default */].searchNodeSocketByAddress(data.remoteUUID, 'all', ["uuid"]) !== null) //already connected in the past + throw {message: "Already connected"}; + + if (__WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].searchWebPeerSignalingClientList(data.initiatorSignal, undefined, data.remoteUUID) !== null) + throw {message: "Already connected"}; + + let webPeer = await this._searchWebPeerSignalingClientList2(socket, data); + + let answer = await webPeer.createSignal(data.initiatorSignal); + + if (answer.signal === undefined) + console.log("WEBRTC 2 is not supported !!!!", answer); + + if (!answer.result ) + throw {message: answer.message }; + + socket.node.sendRequest("signals/client/answer/receive-initiator-signal/answer" , {connectionId: data.connectionId , accepted: true, answerSignal: answer.signal} ); + + } catch (exception){ + + if (exception.message !== "Already connected" && exception.message !== "I can't accept WebPeers anymore") + console.error("signals/client/answer/receive-initiator-signal/answer", exception); + + socket.node.sendRequest("signals/client/answer/receive-initiator-signal/answer", {connectionId:data.connectionId, accepted:false, answerSignal: undefined }); + } + + }); + + socket.node.on("signals/client/answer/receive-ice-candidate", async (data) => { + + try{ + + if (__WEBPACK_IMPORTED_MODULE_0_consts_const_global__["a" /* default */].DEBUG) console.warn("WEBRTC# 2_2"); + + if (data.remoteUUID === undefined || data.remoteUUID === null) + throw {message: "data.remoteUUID 3 is empty"}; + + let webPeer = await this._searchWebPeerSignalingClientList2(socket, data); + + let answer = await webPeer.createSignal(data.iceCandidate); + + if (!answer.result ) + throw {message: answer.message}; + + socket.node.sendRequest("signals/client/answer/receive-ice-candidate"+"/answer", { connectionId: data.connectionId, accepted: true, answerSignal: answer.signal} ); + + } catch (exception){ + + if (exception.message !== "Already connected" && exception.message !== "I can't accept WebPeers anymore") + console.error("signals/client/answer/receive-ice-candidate"+"/answer", data.connectionId, exception); + + socket.node.sendRequest("signals/client/answer/receive-ice-candidate"+"/answer", {connectionId: data.connectionId, accepted:false, answerSignal: undefined, message: exception.message }); + } + + }); + + } + + async _searchWebPeerSignalingClientList2(socket, data ){ + + let webPeerSignalingClientListObject = __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].searchWebPeerSignalingClientList(undefined, data.remoteUUID); + + if (webPeerSignalingClientListObject === null) { + + if ( __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].countConnectedByType("answer") > __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].computeMaxWebPeersConnected( data.remoteUUID )) + throw {message: "I can't accept WebPeers anymore" }; + + webPeerSignalingClientListObject = __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].registerWebPeerSignalingClientListBySignal(undefined, undefined, data.remoteUUID, "answer"); + } + + let webPeer = webPeerSignalingClientListObject.webPeer; + + if ( webPeer.peer === null ) { //arrived earlier than /receive-initiator-signal + + await webPeer.createPeer(false, socket, data.connectionId, (iceCandidate) => {this.sendAnswerIceCandidate(socket, data.connectionId, iceCandidate)}, data.remoteAddress, data.remoteUUID, socket.level + 1); + + webPeer.peer.signalInitiatorData = data.initiatorSignal; + + } + + + return webPeer; + } + + initializeSignalingClientService(socket) { + + //This will deactivate WebRTC on client + + this._initializeSimpleProtocol(socket); + + this._initializeSignalingClientService1(socket); + this._initializeSignalingClientService2(socket); + + __WEBPACK_IMPORTED_MODULE_3__signaling_client_service_Node_Signaling_Client_Service__["a" /* default */].subscribeSignalingServer(socket); + } + + + + sendInitiatorIceCandidate(socket, connectionId, iceCandidate){ + //console.warn("sendInitiatorIceCandidate", connectionId, iceCandidate); + socket.node.sendRequest("signals/server/new-initiator-ice-candidate", {connectionId: connectionId, candidate: iceCandidate} ) + } + + sendAnswerIceCandidate(socket, connectionId, iceCandidate){ + //console.warn("sendAnswerIceCandidate", connectionId, iceCandidate); + socket.node.sendRequest("signals/server/new-answer-ice-candidate", {connectionId: connectionId, candidate: iceCandidate} ) + } + + webPeerDisconnected(webPeer){ + + webPeer.peer.signaling.socketSignaling.node.sendRequest("signals/server/connections/established-connection-was-dropped", {connectionId: webPeer.peer.signaling.connectionId, address: webPeer.remoteAddress} ); + __WEBPACK_IMPORTED_MODULE_1__signaling_client_list_signaling_client_list__["a" /* default */].desinitializeWebPeerConnection(webPeer); + + } + + sendSuccessConnection(webPeer){ + if (webPeer.peer !== null && webPeer.peer.signaling !== null) + webPeer.peer.signaling.socketSignaling.node.sendRequest("signals/server/connections/was-established-successfully", {connectionId: webPeer.peer.signaling.connectionId}) + } + + sendErrorConnection(webPeer){ + if (webPeer.peer !== null && webPeer.peer.signaling !== null) + webPeer.peer.signaling.socketSignaling.node.sendRequest("signals/server/connections/error-establishing-connection", {connectionId: webPeer.peer.signaling.connectionId}) + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (new NodeSignalingClientProtocol()); + +/***/ }), +/* 219 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__signaling_client_peer_object__ = __webpack_require__(838); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_node_webrtc_web_peer_node_web_peer_webRTC__ = __webpack_require__(839); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_node_lists_Nodes_List__ = __webpack_require__(6); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__signaling_client_service_Node_Signaling_Client_Service__ = __webpack_require__(358); + + + + + +/* + The List is populated with Node Sockets who are available for WebRTC + */ + +class SignalingClientList { + + // list = [] - storing the connected sockets + + constructor(){ + + console.log("SignalingRoomList constructor"); + + this.connected = []; + + } + + desinitializeWebPeerConnection(webpeer){ + + let pos = this.findWebPeerSignalingClientList(undefined, undefined, webpeer.peer.node.sckAddress.uuid); + + if (pos !== -1) { + this.connected.splice(pos, 1); + + __WEBPACK_IMPORTED_MODULE_4__signaling_client_service_Node_Signaling_Client_Service__["a" /* default */].askRandomSignalingServerToConnect(); + } + + } + + registerWebPeerSignalingClientListBySignal(signalInitiator, signalAnswer, uuid, signalingClientType) { + + let signalingClientPeerObject = this.searchWebPeerSignalingClientList(signalInitiator, signalAnswer, uuid); + + if (signalingClientPeerObject === null){ + + let webPeer = new __WEBPACK_IMPORTED_MODULE_2_node_webrtc_web_peer_node_web_peer_webRTC__["a" /* default */](); + signalingClientPeerObject = new __WEBPACK_IMPORTED_MODULE_1__signaling_client_peer_object__["a" /* default */](webPeer, uuid, signalingClientType); + + this.connected.push(signalingClientPeerObject); + + } + + return signalingClientPeerObject; + } + + findWebPeerSignalingClientList(signalInitiator, signalAnswer, uuid){ + + //previous established connection + for (let i = 0; i < this.connected.length; i++) + if (this.connected[i].webPeer.peer !== null && this.connected[i].webPeer.peer !== undefined ) { + + if ( signalInitiator !== undefined && JSON.stringify(this.connected[i].webPeer.peer.signalInitiatorData) === JSON.stringify(signalInitiator)) + return i; + + if ( signalAnswer !== undefined && JSON.stringify(this.connected[i].webPeer.peer.signalData) === JSON.stringify(signalAnswer)) + return i; + + if ( uuid !== undefined && this.connected[i].uuid === uuid) + return i; + + } + + + return -1; + } + + searchWebPeerSignalingClientList(signalInitiator, signalAnswer, uuid){ + + let pos = this.findWebPeerSignalingClientList(signalInitiator, signalAnswer, uuid); + + if (pos === -1) return null; + + return this.connected[pos]; + } + + deleteWebPeerSignalingClientList(uuid){ + + for (let i=0; i { + + let proofPi = this.blockchain.agent.light ? this.blockchain.proofPi : this.blockchain.prover.proofPi; + socket.node.sendRequest("get/nipopow-blockchain/headers/get-proofs/pi-gzip-supported" + "/answer", { result: ( __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].BLOCKCHAIN.LIGHT.GZIPPED && proofPi !== undefined ) ? ( proofPi.proofGzip !== undefined ? true : false ) : false }); + + }); + + socket.node.on("get/nipopow-blockchain/headers/get-proofs/pi/hash", () => { + + try { + + let answer; + + if (this.blockchain.agent.light) + answer = { + hash: this.blockchain.proofPi.hash, + length: this.blockchain.proofPi.blocks.length + }; + else // full node + answer = { + hash: this.blockchain.prover.proofPi.hash, + length: this.blockchain.prover.proofPi.blocks.length + }; + + socket.node.sendRequest("get/nipopow-blockchain/headers/get-proofs/pi/hash" + "/answer", answer); + + } catch (exception) { + + } + + }); + + socket.node.on("get/nipopow-blockchain/headers/get-proofs/pi-gzip", async (data)=>{ + + try { + + let serialization; + let proofPi; + + if (this.blockchain.agent.light) proofPi = this.blockchain.proofPi; + else proofPi = this.blockchain.prover.proofPi; // full node + + + if (proofPi.proofGzip !== undefined) serialization = proofPi.proofGzip; + else serialization = proofPi.proofSerialized; + + let moreChunks = false; + + if (typeof data === "object" && data !== null) { + + if (typeof data.starting === "number" && typeof data.length === "number") { + + if (data.length < __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_SIZE.MINIMUM_SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES) throw {message: "way to few messages"}; + + if ((serialization.length - data.starting) > data.length) + moreChunks = true; + else + moreChunks = false; + + if (serialization.length - 1 - data.starting > 0) + serialization = __WEBPACK_IMPORTED_MODULE_3__utils_BufferExtended__["a" /* default */].substr(serialization, data.starting, Math.min(data.length, serialization.length - data.starting)); + else + serialization = new Buffer(0); + + return socket.node.sendRequest("get/nipopow-blockchain/headers/get-proofs/pi-gzip/answer", { + result: true, + data: serialization, + moreChunks: moreChunks, + }); + + } + + } + + } catch (exception) { + + console.error("Socket Error - get/nipopow-blockchain/headers/get-proofs/pi-gzip", exception, data); + + socket.node.sendRequest("get/nipopow-blockchain/headers/get-proofs/pi-gzip/answer",{ + result: false, + message: exception + }); + + } + + }); + + socket.node.on("get/nipopow-blockchain/headers/get-proofs/pi", async (data)=>{ + + try { + + if (data.starting === undefined) data.starting = 0; + if (data.length === undefined) data.length = 1000; + + if (typeof data.starting !== "number") throw "starting is not a number"; + if (typeof data.length !== "number") throw "length is not a number"; + + let proof; + + if (this.blockchain.agent.light) { + + proof = this.blockchain.proofPi.getProofHeaders(data.starting, data.length); + + } + else { // full node + + proof = this.blockchain.prover.proofPi.getProofHeaders(data.starting, data.length); + + } + + socket.node.sendRequest("get/nipopow-blockchain/headers/get-proofs/pi" + "/answer", proof); + + } catch (exception){ + + console.error("Error getting proofs headers", exception); + + } + + }); + + socket.node.on("get/nipopow-blockchain/headers/get-proofs/xi", async ()=>{ + + //socket.node.sendRequest("get/nipopow-blockchain/headers/get-proofs/xi"+"/answer", this.blockchain.prover.proofXi.getProofHeaders() ); + + }); + + } + +} + + +/* harmony default export */ __webpack_exports__["a"] = (PPoWBlockchainProtocol); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 221 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Mini_Blockchain_Protocol__ = __webpack_require__(843); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__utils_BufferExtended__ = __webpack_require__(3); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_common_utils_GZip__ = __webpack_require__(87); + + + + + +class MiniBlockchainAdvancedProtocol extends __WEBPACK_IMPORTED_MODULE_0__Mini_Blockchain_Protocol__["a" /* default */]{ + + _initializeNewSocket(nodesListObject) { + + let socket = nodesListObject.socket; + + __WEBPACK_IMPORTED_MODULE_0__Mini_Blockchain_Protocol__["a" /* default */].prototype._initializeNewSocket.call(this, nodesListObject); + + /** + * Get last K accountant Trees + */ + socket.node.on("get/blockchain/accountant-tree/get-accountant-tree", async (data)=>{ + + try{ + + if (data.height === undefined) data.height = -1; + + if (typeof data.height !== "number") + throw {message: "data.height is not a number"}; + + if (this.blockchain.blocks.length < data.height) + throw {message: "height is not valid"}; + + if (data.height < -1) + throw {message: "height is not valid"}; + + let gzipped = data.gzipped || false; + + let serialization = this.blockchain.getSerializedAccountantTree( data.height , gzipped ); + + if (serialization === undefined && gzipped) //just send the initial tree + serialization = this.blockchain.getSerializedAccountantTree( data.height ); + + let moreChunks = false; + + if (typeof data.substr === "object" && data.substr !== null) { + + if (typeof data.substr.startIndex === "number" && typeof data.substr.count === "number") { + + if (data.substr.count < __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_SIZE.MINIMUM_SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES) throw {message:"way to few messages"}; + + + if ((serialization.length - data.substr.startIndex) > data.substr.count) + moreChunks = true; + else + moreChunks = false; + + if (serialization.length - 1 - data.substr.startIndex > 0) + serialization = __WEBPACK_IMPORTED_MODULE_1__utils_BufferExtended__["a" /* default */].substr(serialization, data.substr.startIndex, Math.min(data.substr.count, serialization.length - data.substr.startIndex)); + else + serialization = new Buffer(0); + + return socket.node.sendRequest("get/blockchain/accountant-tree/get-accountant-tree/" + data.height, { + result: true, + accountantTree: serialization, + moreChunks: moreChunks, + gzipped: gzipped, + }); + + } + + } else { + return socket.node.sendRequest("get/blockchain/accountant-tree/get-accountant-tree/" + data.height, { + result: true, + accountantTree:serialization, + gzipped: gzipped, + }); + } + + + } catch (exception){ + + console.error("Socket Error - get/blockchain/accountant-tree/get-accountant-tree", exception, data); + + socket.node.sendRequest("get/blockchain/accountant-tree/get-accountant-tree/" + data.height, { + result: false, + message: exception + }); + + } + + + }); + + /** + * Get difficulty, accountant Tree for Light Nodes + */ + socket.node.on("get/blockchain/light/get-light-settings", async (data)=>{ + + try{ + + if (data.height === undefined) + data.height = -1; + + if (typeof data.height !== "number" ) throw {message: "data.height is not a number"}; + if (data.height < 0) throw {message: "height is not valid"}; + + if (this.blockchain.blocks.length < data.height) + throw {message: "height is not valid"}; + + let difficultyTarget = this.blockchain.getDifficultyTarget(data.height); + let timestamp = this.blockchain.getTimeStamp(data.height); + let hashPrev = this.blockchain.getHashPrev(data.height); + + socket.node.sendRequest("get/blockchain/light/get-light-settings/" + data.height, { + result: difficultyTarget !== null ? true : false, + difficultyTarget: difficultyTarget, + timeStamp: timestamp, + hashPrev: hashPrev, + }); + + + } catch (exception){ + + console.error("Socket Error - get/blockchain/light/get-light-settings", exception, data); + + socket.node.sendRequest("get/blockchain/light/get-light-settings/" + data.height, { + result: false, + message: exception + }); + + } + + }); + + } + + async getAccountantTree( socket, height, timeoutCount = 1000 ){ + + let downloading = true; + let pos = 0; + let buffers = []; + let gzippedCommunication = false; + + //can not be more than 1000 + while (downloading && pos < timeoutCount) { + + let answer = await socket.node.sendRequestWaitOnce("get/blockchain/accountant-tree/get-accountant-tree", { + height: height, + + substr: { + startIndex: pos * __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_SIZE.SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES, + count: __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_SIZE.SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES, + }, + + gzipped: __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].BLOCKCHAIN.LIGHT.GZIPPED ? true : undefined, + + }, + + height, 10000); + + if (answer === null) throw {message: "get-accountant-tree never received ", forkStartingHeight: height}; + if (!answer.result) throw {message: "get-accountant-tree return false ", answer: answer.message }; + + if ( !Buffer.isBuffer(answer.accountantTree) ) + throw {message: "accountantTree data is not a buffer"}; + + if (gzippedCommunication===false && answer.gzipped===true) gzippedCommunication=true; + + if (answer.accountantTree.length === __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_SIZE.SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES || + (answer.accountantTree.length <= __WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].SETTINGS.PARAMS.MAX_SIZE.SPLIT_CHUNKS_BUFFER_SOCKETS_SIZE_BYTES && !answer.moreChunks)) + { + + buffers.push(answer.accountantTree); + + if (!answer.moreChunks) + downloading = false; + + } + + pos++; + + } + + if (pos === timeoutCount) + throw {message: "accountantTree too many trials"}; + + if (buffers.length === 0) + throw {message: "accountantTree is empty"}; + + let buffer = Buffer.concat(buffers); + + //console.log("Before ungziped"); + //console.log(buffer.toString('hex')); + + return { + buffer: gzippedCommunication ? await __WEBPACK_IMPORTED_MODULE_3_common_utils_GZip__["a" /* default */].unzip(buffer) : buffer, + gzipped: gzippedCommunication ? buffer : undefined + }; + + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (MiniBlockchainAdvancedProtocol); +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(1).Buffer)) + +/***/ }), +/* 222 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_common_blockchain_ppow_blockchain_blockchain_forks_PPoW_Blockchain_Fork__ = __webpack_require__(844); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_common_blockchain_interface_blockchain_blockchain_forks_Interface_Blockchain_Fork__ = __webpack_require__(112); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_consts_const_global__ = __webpack_require__(2); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_common_blockchain_interface_blockchain_blocks_validation_Interface_Blockchain_Block_Validation__ = __webpack_require__(110); + + + + + +let inheritFork; +if (__WEBPACK_IMPORTED_MODULE_2_consts_const_global__["a" /* default */].POPOW_PARAMS.ACTIVATED) inheritFork = __WEBPACK_IMPORTED_MODULE_0_common_blockchain_ppow_blockchain_blockchain_forks_PPoW_Blockchain_Fork__["a" /* default */]; +else inheritFork = __WEBPACK_IMPORTED_MODULE_1_common_blockchain_interface_blockchain_blockchain_forks_Interface_Blockchain_Fork__["a" /* default */]; + +class MiniBlockchainFork extends inheritFork{ + + + constructor(blockchain, forkId, sockets, forkStartingHeight, forkChainStartingPoint, forkChainLength, header){ + + super(blockchain, forkId, sockets, forkStartingHeight, forkChainStartingPoint, forkChainLength, header) + + this._accountantTreeClone = null; + + } + + /** + * Fork Validation for Mini Blockchain is not checking the Accountant Tree + */ + _createBlockValidation_ForkValidation(height, forkHeight){ + + let validationType = { + "skip-accountant-tree-validation": true, + "skip-validation-transactions-from-values": true //can not validate the transactions + }; + + if (height === this.forkChainLength-1) + validationType["validation-timestamp-adjusted-time"] = true; + + return new __WEBPACK_IMPORTED_MODULE_3_common_blockchain_interface_blockchain_blocks_validation_Interface_Blockchain_Block_Validation__["a" /* default */](this.getForkBlock.bind(this), this.getForkDifficultyTarget.bind(this), this.getForkTimeStamp.bind(this), this.getForkPrevHash.bind(this), validationType ); + } + + preForkClone(cloneBlocks=true, cloneAccountantTree=true){ + + __WEBPACK_IMPORTED_MODULE_1_common_blockchain_interface_blockchain_blockchain_forks_Interface_Blockchain_Fork__["a" /* default */].prototype.preForkClone.call(this, cloneBlocks); + + if (cloneAccountantTree) { + + try { + //clone the Accountant Tree + this._accountantTreeClone = this.blockchain.accountantTree.serializeMiniAccountant(); + } catch (exception){ + console.error("Error cloding Accountant Tree", exception); + return false; + } + } else + this._accountantTreeClone = null; + + } + + preFork(revertActions, showUpdate=true){ + + //remove transactions and rewards from each blocks + for (let i = this.blockchain.blocks.length - 1; i >= this.forkStartingHeight; i--) { + + let block = this.blockchain.blocks[i]; + + // remove transactions + for (let j=block.data.transactions.transactions.length-1; j>=0; j--) + block.data.transactions.transactions[j].processTransaction( -1, block.data.minerAddress, revertActions, showUpdate ); + + // remove reward + this.blockchain.accountantTree.updateAccount( block.data.minerAddress, - block.reward, undefined, revertActions, showUpdate); + + } + + return inheritFork.prototype.preFork.call(this, revertActions); + + } + + revertFork(){ + + //recover to the original Accountant Tree + if (this._accountantTreeClone !== null) + this.blockchain.accountantTree.deserializeMiniAccountant(this._accountantTreeClone); + + return inheritFork.prototype.revertFork.call(this); + + } + + +} + +/* harmony default export */ __webpack_exports__["a"] = (MiniBlockchainFork); + +/***/ }), +/* 223 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = !__webpack_require__(18) && !__webpack_require__(13)(function () { + return Object.defineProperty(__webpack_require__(148)('div'), 'a', { get: function () { return 7; } }).a != 7; +}); + + +/***/ }), +/* 224 */ +/***/ (function(module, exports, __webpack_require__) { + +exports.f = __webpack_require__(15); + + +/***/ }), +/* 225 */ +/***/ (function(module, exports, __webpack_require__) { + +var has = __webpack_require__(42); +var toIObject = __webpack_require__(43); +var arrayIndexOf = __webpack_require__(119)(false); +var IE_PROTO = __webpack_require__(150)('IE_PROTO'); + +module.exports = function (object, names) { + var O = toIObject(object); + var i = 0; + var result = []; + var key; + for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while (names.length > i) if (has(O, key = names[i++])) { + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; + + +/***/ }), +/* 226 */ +/***/ (function(module, exports, __webpack_require__) { + +var dP = __webpack_require__(19); +var anObject = __webpack_require__(9); +var getKeys = __webpack_require__(75); + +module.exports = __webpack_require__(18) ? Object.defineProperties : function defineProperties(O, Properties) { + anObject(O); + var keys = getKeys(Properties); + var length = keys.length; + var i = 0; + var P; + while (length > i) dP.f(O, P = keys[i++], Properties[P]); + return O; +}; + + +/***/ }), +/* 227 */ +/***/ (function(module, exports, __webpack_require__) { + +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = __webpack_require__(43); +var gOPN = __webpack_require__(78).f; +var toString = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function (it) { + try { + return gOPN(it); + } catch (e) { + return windowNames.slice(); + } +}; + +module.exports.f = function getOwnPropertyNames(it) { + return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); +}; + + +/***/ }), +/* 228 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// 19.1.2.1 Object.assign(target, source, ...) +var getKeys = __webpack_require__(75); +var gOPS = __webpack_require__(120); +var pIE = __webpack_require__(100); +var toObject = __webpack_require__(24); +var IObject = __webpack_require__(99); +var $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || __webpack_require__(13)(function () { + var A = {}; + var B = {}; + // eslint-disable-next-line no-undef + var S = Symbol(); + var K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function (k) { B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source) { // eslint-disable-line no-unused-vars + var T = toObject(target); + var aLen = arguments.length; + var index = 1; + var getSymbols = gOPS.f; + var isEnum = pIE.f; + while (aLen > index) { + var S = IObject(arguments[index++]); + var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); + var length = keys.length; + var j = 0; + var key; + while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key]; + } return T; +} : $assign; + + +/***/ }), +/* 229 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var aFunction = __webpack_require__(30); +var isObject = __webpack_require__(14); +var invoke = __webpack_require__(230); +var arraySlice = [].slice; +var factories = {}; + +var construct = function (F, len, args) { + if (!(len in factories)) { + for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']'; + // eslint-disable-next-line no-new-func + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } return factories[len](F, args); +}; + +module.exports = Function.bind || function bind(that /* , ...args */) { + var fn = aFunction(this); + var partArgs = arraySlice.call(arguments, 1); + var bound = function (/* args... */) { + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); + }; + if (isObject(fn.prototype)) bound.prototype = fn.prototype; + return bound; +}; + + +/***/ }), +/* 230 */ +/***/ (function(module, exports) { + +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function (fn, args, that) { + var un = that === undefined; + switch (args.length) { + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; + + +/***/ }), +/* 231 */ +/***/ (function(module, exports, __webpack_require__) { + +var $parseInt = __webpack_require__(10).parseInt; +var $trim = __webpack_require__(89).trim; +var ws = __webpack_require__(154); +var hex = /^[-+]?0[xX]/; + +module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) { + var string = $trim(String(str), 3); + return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10)); +} : $parseInt; + + +/***/ }), +/* 232 */ +/***/ (function(module, exports, __webpack_require__) { + +var $parseFloat = __webpack_require__(10).parseFloat; +var $trim = __webpack_require__(89).trim; + +module.exports = 1 / $parseFloat(__webpack_require__(154) + '-0') !== -Infinity ? function parseFloat(str) { + var string = $trim(String(str), 3); + var result = $parseFloat(string); + return result === 0 && string.charAt(0) == '-' ? -0 : result; +} : $parseFloat; + + +/***/ }), +/* 233 */ +/***/ (function(module, exports, __webpack_require__) { + +var cof = __webpack_require__(52); +module.exports = function (it, msg) { + if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg); + return +it; +}; + + +/***/ }), +/* 234 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.1.2.3 Number.isInteger(number) +var isObject = __webpack_require__(14); +var floor = Math.floor; +module.exports = function isInteger(it) { + return !isObject(it) && isFinite(it) && floor(it) === it; +}; + + +/***/ }), +/* 235 */ +/***/ (function(module, exports) { + +// 20.2.2.20 Math.log1p(x) +module.exports = Math.log1p || function log1p(x) { + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); +}; + + +/***/ }), +/* 236 */ +/***/ (function(module, exports, __webpack_require__) { + +// 20.2.2.16 Math.fround(x) +var sign = __webpack_require__(157); +var pow = Math.pow; +var EPSILON = pow(2, -52); +var EPSILON32 = pow(2, -23); +var MAX32 = pow(2, 127) * (2 - EPSILON32); +var MIN32 = pow(2, -126); + +var roundTiesToEven = function (n) { + return n + 1 / EPSILON - 1 / EPSILON; +}; + +module.exports = Math.fround || function fround(x) { + var $abs = Math.abs(x); + var $sign = sign(x); + var a, result; + if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + // eslint-disable-next-line no-self-compare + if (result > MAX32 || result != result) return $sign * Infinity; + return $sign * result; +}; + + +/***/ }), +/* 237 */ +/***/ (function(module, exports, __webpack_require__) { + +// call something on iterator step with safe closing on error +var anObject = __webpack_require__(9); +module.exports = function (iterator, fn, value, entries) { + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch (e) { + var ret = iterator['return']; + if (ret !== undefined) anObject(ret.call(iterator)); + throw e; + } +}; + + +/***/ }), +/* 238 */ +/***/ (function(module, exports, __webpack_require__) { + +var aFunction = __webpack_require__(30); +var toObject = __webpack_require__(24); +var IObject = __webpack_require__(99); +var toLength = __webpack_require__(20); + +module.exports = function (that, callbackfn, aLen, memo, isRight) { + aFunction(callbackfn); + var O = toObject(that); + var self = IObject(O); + var length = toLength(O.length); + var index = isRight ? length - 1 : 0; + var i = isRight ? -1 : 1; + if (aLen < 2) for (;;) { + if (index in self) { + memo = self[index]; + index += i; + break; + } + index += i; + if (isRight ? index < 0 : length <= index) { + throw TypeError('Reduce of empty array with no initial value'); + } + } + for (;isRight ? index >= 0 : length > index; index += i) if (index in self) { + memo = callbackfn(memo, self[index], index, O); + } + return memo; +}; + + +/***/ }), +/* 239 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) + +var toObject = __webpack_require__(24); +var toAbsoluteIndex = __webpack_require__(76); +var toLength = __webpack_require__(20); + +module.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) { + var O = toObject(this); + var len = toLength(O.length); + var to = toAbsoluteIndex(target, len); + var from = toAbsoluteIndex(start, len); + var end = arguments.length > 2 ? arguments[2] : undefined; + var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to); + var inc = 1; + if (from < to && to < from + count) { + inc = -1; + from += count - 1; + to += count - 1; + } + while (count-- > 0) { + if (from in O) O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; + + +/***/ }), +/* 240 */ +/***/ (function(module, exports) { + +module.exports = function (done, value) { + return { value: value, done: !!done }; +}; + + +/***/ }), +/* 241 */ +/***/ (function(module, exports, __webpack_require__) { + +// 21.2.5.3 get RegExp.prototype.flags() +if (__webpack_require__(18) && /./g.flags != 'g') __webpack_require__(19).f(RegExp.prototype, 'flags', { + configurable: true, + get: __webpack_require__(124) +}); + + +/***/ }), +/* 242 */ +/***/ (function(module, exports) { + +module.exports = function (exec) { + try { + return { e: false, v: exec() }; + } catch (e) { + return { e: true, v: e }; + } +}; + + +/***/ }), +/* 243 */ +/***/ (function(module, exports, __webpack_require__) { + +var anObject = __webpack_require__(9); +var isObject = __webpack_require__(14); +var newPromiseCapability = __webpack_require__(172); + +module.exports = function (C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + + +/***/ }), +/* 244 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var strong = __webpack_require__(245); +var validate = __webpack_require__(91); +var MAP = 'Map'; + +// 23.1 Map Objects +module.exports = __webpack_require__(128)(MAP, function (get) { + return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key) { + var entry = strong.getEntry(validate(this, MAP), key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value) { + return strong.def(validate(this, MAP), key === 0 ? 0 : key, value); + } +}, strong, true); + + +/***/ }), +/* 245 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var dP = __webpack_require__(19).f; +var create = __webpack_require__(77); +var redefineAll = __webpack_require__(82); +var ctx = __webpack_require__(51); +var anInstance = __webpack_require__(80); +var forOf = __webpack_require__(81); +var $iterDefine = __webpack_require__(160); +var step = __webpack_require__(240); +var setSpecies = __webpack_require__(79); +var DESCRIPTORS = __webpack_require__(18); +var fastKey = __webpack_require__(65).fastKey; +var validate = __webpack_require__(91); +var SIZE = DESCRIPTORS ? '_s' : 'size'; + +var getEntry = function (that, key) { + // fast case + var index = fastKey(key); + var entry; + if (index !== 'F') return that._i[index]; + // frozen object case + for (entry = that._f; entry; entry = entry.n) { + if (entry.k == key) return entry; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = create(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear() { + for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) { + entry.r = true; + if (entry.p) entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function (key) { + var that = validate(this, NAME); + var entry = getEntry(that, key); + if (entry) { + var next = entry.n; + var prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if (prev) prev.n = next; + if (next) next.p = prev; + if (that._f == entry) that._f = next; + if (that._l == entry) that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /* , that = undefined */) { + validate(this, NAME); + var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3); + var entry; + while (entry = entry ? entry.n : this._f) { + f(entry.v, entry.k, this); + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key) { + return !!getEntry(validate(this, NAME), key); + } + }); + if (DESCRIPTORS) dP(C.prototype, 'size', { + get: function () { + return validate(this, NAME)[SIZE]; + } + }); + return C; + }, + def: function (that, key, value) { + var entry = getEntry(that, key); + var prev, index; + // change existing entry + if (entry) { + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if (!that._f) that._f = entry; + if (prev) prev.n = entry; + that[SIZE]++; + // add to index + if (index !== 'F') that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function (C, NAME, IS_MAP) { + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + $iterDefine(C, NAME, function (iterated, kind) { + this._t = validate(iterated, NAME); // target + this._k = kind; // kind + this._l = undefined; // previous + }, function () { + var that = this; + var kind = that._k; + var entry = that._l; + // revert to the last existing entry + while (entry && entry.r) entry = entry.p; + // get next entry + if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) { + // or finish the iteration + that._t = undefined; + return step(1); + } + // return step by kind + if (kind == 'keys') return step(0, entry.k); + if (kind == 'values') return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values', !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(NAME); + } +}; + + +/***/ }), +/* 246 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var strong = __webpack_require__(245); +var validate = __webpack_require__(91); +var SET = 'Set'; + +// 23.2 Set Objects +module.exports = __webpack_require__(128)(SET, function (get) { + return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value) { + return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value); + } +}, strong); + + +/***/ }), +/* 247 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var each = __webpack_require__(58)(0); +var redefine = __webpack_require__(39); +var meta = __webpack_require__(65); +var assign = __webpack_require__(228); +var weak = __webpack_require__(248); +var isObject = __webpack_require__(14); +var fails = __webpack_require__(13); +var validate = __webpack_require__(91); +var WEAK_MAP = 'WeakMap'; +var getWeak = meta.getWeak; +var isExtensible = Object.isExtensible; +var uncaughtFrozenStore = weak.ufstore; +var tmp = {}; +var InternalMap; + +var wrapper = function (get) { + return function WeakMap() { + return get(this, arguments.length > 0 ? arguments[0] : undefined); + }; +}; + +var methods = { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key) { + if (isObject(key)) { + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key); + return data ? data[this._i] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value) { + return weak.def(validate(this, WEAK_MAP), key, value); + } +}; + +// 23.3 WeakMap Objects +var $WeakMap = module.exports = __webpack_require__(128)(WEAK_MAP, wrapper, methods, weak, true, true); + +// IE11 WeakMap frozen keys fix +if (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) { + InternalMap = weak.getConstructor(wrapper, WEAK_MAP); + assign(InternalMap.prototype, methods); + meta.NEED = true; + each(['delete', 'has', 'get', 'set'], function (key) { + var proto = $WeakMap.prototype; + var method = proto[key]; + redefine(proto, key, function (a, b) { + // store frozen objects on internal weakmap shim + if (isObject(a) && !isExtensible(a)) { + if (!this._f) this._f = new InternalMap(); + var result = this._f[key](a, b); + return key == 'set' ? this : result; + // store all the rest on native weakmap + } return method.call(this, a, b); + }); + }); +} + + +/***/ }), +/* 248 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var redefineAll = __webpack_require__(82); +var getWeak = __webpack_require__(65).getWeak; +var anObject = __webpack_require__(9); +var isObject = __webpack_require__(14); +var anInstance = __webpack_require__(80); +var forOf = __webpack_require__(81); +var createArrayMethod = __webpack_require__(58); +var $has = __webpack_require__(42); +var validate = __webpack_require__(91); +var arrayFind = createArrayMethod(5); +var arrayFindIndex = createArrayMethod(6); +var id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function (that) { + return that._l || (that._l = new UncaughtFrozenStore()); +}; +var UncaughtFrozenStore = function () { + this.a = []; +}; +var findUncaughtFrozen = function (store, key) { + return arrayFind(store.a, function (it) { + return it[0] === key; + }); +}; +UncaughtFrozenStore.prototype = { + get: function (key) { + var entry = findUncaughtFrozen(this, key); + if (entry) return entry[1]; + }, + has: function (key) { + return !!findUncaughtFrozen(this, key); + }, + set: function (key, value) { + var entry = findUncaughtFrozen(this, key); + if (entry) entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function (key) { + var index = arrayFindIndex(this.a, function (it) { + return it[0] === key; + }); + if (~index) this.a.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function (wrapper, NAME, IS_MAP, ADDER) { + var C = wrapper(function (that, iterable) { + anInstance(that, C, NAME, '_i'); + that._t = NAME; // collection type + that._i = id++; // collection id + that._l = undefined; // leak store for uncaught frozen objects + if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function (key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key); + return data && $has(data, this._i) && delete data[this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key) { + if (!isObject(key)) return false; + var data = getWeak(key); + if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key); + return data && $has(data, this._i); + } + }); + return C; + }, + def: function (that, key, value) { + var data = getWeak(anObject(key), true); + if (data === true) uncaughtFrozenStore(that).set(key, value); + else data[that._i] = value; + return that; + }, + ufstore: uncaughtFrozenStore +}; + + +/***/ }), +/* 249 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://tc39.github.io/ecma262/#sec-toindex +var toInteger = __webpack_require__(56); +var toLength = __webpack_require__(20); +module.exports = function (it) { + if (it === undefined) return 0; + var number = toInteger(it); + var length = toLength(number); + if (number !== length) throw RangeError('Wrong length!'); + return length; +}; + + +/***/ }), +/* 250 */ +/***/ (function(module, exports, __webpack_require__) { + +// all object keys, includes non-enumerable and symbols +var gOPN = __webpack_require__(78); +var gOPS = __webpack_require__(120); +var anObject = __webpack_require__(9); +var Reflect = __webpack_require__(10).Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) { + var keys = gOPN.f(anObject(it)); + var getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; + + +/***/ }), +/* 251 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray +var isArray = __webpack_require__(121); +var isObject = __webpack_require__(14); +var toLength = __webpack_require__(20); +var ctx = __webpack_require__(51); +var IS_CONCAT_SPREADABLE = __webpack_require__(15)('isConcatSpreadable'); + +function flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) { + var targetIndex = start; + var sourceIndex = 0; + var mapFn = mapper ? ctx(mapper, thisArg, 3) : false; + var element, spreadable; + + while (sourceIndex < sourceLen) { + if (sourceIndex in source) { + element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex]; + + spreadable = false; + if (isObject(element)) { + spreadable = element[IS_CONCAT_SPREADABLE]; + spreadable = spreadable !== undefined ? !!spreadable : isArray(element); + } + + if (spreadable && depth > 0) { + targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1; + } else { + if (targetIndex >= 0x1fffffffffffff) throw TypeError(); + target[targetIndex] = element; + } + + targetIndex++; + } + sourceIndex++; + } + return targetIndex; +} + +module.exports = flattenIntoArray; + + +/***/ }), +/* 252 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://github.com/tc39/proposal-string-pad-start-end +var toLength = __webpack_require__(20); +var repeat = __webpack_require__(156); +var defined = __webpack_require__(55); + +module.exports = function (that, maxLength, fillString, left) { + var S = String(defined(that)); + var stringLength = S.length; + var fillStr = fillString === undefined ? ' ' : String(fillString); + var intMaxLength = toLength(maxLength); + if (intMaxLength <= stringLength || fillStr == '') return S; + var fillLen = intMaxLength - stringLength; + var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); + if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen); + return left ? stringFiller + S : S + stringFiller; +}; + + +/***/ }), +/* 253 */ +/***/ (function(module, exports, __webpack_require__) { + +var getKeys = __webpack_require__(75); +var toIObject = __webpack_require__(43); +var isEnum = __webpack_require__(100).f; +module.exports = function (isEntries) { + return function (it) { + var O = toIObject(it); + var keys = getKeys(O); + var length = keys.length; + var i = 0; + var result = []; + var key; + while (length > i) if (isEnum.call(O, key = keys[i++])) { + result.push(isEntries ? [key, O[key]] : O[key]); + } return result; + }; +}; + + +/***/ }), +/* 254 */ +/***/ (function(module, exports, __webpack_require__) { + +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +var classof = __webpack_require__(101); +var from = __webpack_require__(255); +module.exports = function (NAME) { + return function toJSON() { + if (classof(this) != NAME) throw TypeError(NAME + "#toJSON isn't generic"); + return from(this); + }; +}; + + +/***/ }), +/* 255 */ +/***/ (function(module, exports, __webpack_require__) { + +var forOf = __webpack_require__(81); + +module.exports = function (iter, ITERATOR) { + var result = []; + forOf(iter, false, result.push, result, ITERATOR); + return result; +}; + + +/***/ }), +/* 256 */ +/***/ (function(module, exports) { + +// https://rwaldron.github.io/proposal-math-extensions/ +module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) { + if ( + arguments.length === 0 + // eslint-disable-next-line no-self-compare + || x != x + // eslint-disable-next-line no-self-compare + || inLow != inLow + // eslint-disable-next-line no-self-compare + || inHigh != inHigh + // eslint-disable-next-line no-self-compare + || outLow != outLow + // eslint-disable-next-line no-self-compare + || outHigh != outHigh + ) return NaN; + if (x === Infinity || x === -Infinity) return x; + return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow; +}; + + +/***/ }), +/* 257 */ +/***/ (function(module, exports) { + +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + + +/***/ }), +/* 258 */ +/***/ (function(module, exports, __webpack_require__) { + +var v1 = __webpack_require__(570); +var v4 = __webpack_require__(571); + +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; + +module.exports = uuid; + + +/***/ }), +/* 259 */ +/***/ (function(module, exports) { + +// Unique ID creation requires a high quality random # generator. In the +// browser this is a little complicated due to unknown quality of Math.random() +// and inconsistent support for the `crypto` API. We do the best we can via +// feature-detection + +// getRandomValues needs to be invoked in a context where "this" is a Crypto +// implementation. Also, find the complete implementation of crypto on IE11. +var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto)) || + (typeof(msCrypto) != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto)); + +if (getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef + + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; +} else { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); + + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; +} + + +/***/ }), +/* 260 */ +/***/ (function(module, exports) { + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 + return ([bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], '-', + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]], + bth[buf[i++]], bth[buf[i++]]]).join(''); +} + +module.exports = bytesToUuid; + + +/***/ }), +/* 261 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony default export */ __webpack_exports__["a"] = ({ + + "protocol": "WebDollar", + "name": "fallback nodes", + + "nodes": [ + + //--------------------------------------------------------- + //--------------Community FallBack Nodes------------------- + //--------------------------------------------------------- + + // {"addr": ["https://webdollar.bitcoinplusplus.com:443"]}, + // {"addr": ["https://amsterdam.wdpool.io:443"]}, + // {"addr": ["https://strasbourg.wdpool.io:443"]}, + // {"addr": ["https://paris.wdpool.io:443"]}, + + // {"addr": ["https://wb.ciuc.ro:443"]}, // Thanks to Adi Clar + // {"addr": ["https://nodecstl.ddns.net:80"]}, + {"addr": ["https://webd.5q.ro:3333"]}, // Thanks to Sorin M + // {"addr": ["https://shpool.ml:443"]}, // Thanks to @Amahte + + // {"addr": ["https://titan.serg.at:80/"]}, // Thanks to @SergiuWX + // {"addr": ["https://titan.serg.at:8080/"]}, // Thanks to @SergiuWX + // {"addr": ["https://titan.serg.at:8081/"]}, // Thanks to @SergiuWX + // {"addr": ["https://titan.serg.at:8082/"]}, // Thanks to @SergiuWX + + //{"addr": ["https://pool1.cuckoo-pool.com:8443"]}, + + {"addr": ["https://node1.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node2.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node3.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node4.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node5.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node6.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node7.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node8.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node9.petreus.ro:443"]}, // Thanks to Dani Petreus + {"addr": ["https://node10.petreus.ro:443"]}, // Thanks to Dani Petreus + + {"addr": ["https://webdollarpool.win:80/"]}, // Thanks to @vladimirpetre + + {"addr": ["https://romeonet.ddns.net:65101/"]}, // Thanks to @romeonet + {"addr": ["https://romeonet.ddns.net:65001/"]}, // Thanks to @romeonet + + // {"addr": ["https://nodecstl.ddns.net:81/"]}, // Thanks to @taralungaCostel + + {"addr": ["https://robitza.ddns.net:443"]}, // Thanks to @robertclaudiu + {"addr": ["https://robitza.ddns.net:8080"]}, // Thanks to @robertclaudiu + {"addr": ["https://robitza.ddns.net:8081"]}, // Thanks to @robertclaudiu + {"addr": ["https://robitza.ddns.net:8082"]}, // Thanks to @robertclaudiu + // + {"addr": ["https://wd.hoste.ro:40000"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40001"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40002"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40003"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40004"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40005"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40006"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40007"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40008"]}, // Thanks to @morion4000 + {"addr": ["https://wd.hoste.ro:40009"]}, // Thanks to @morion4000 + + {"addr": ["https://pool.webdollarminingpool.com:41000"]}, // Thanks to @morion4000 + + //{"addr": ["https://webdollar.network:5000"]}, // Thanks to @ader1990 + + {"addr": ["https://node3.int-webd.com:5001"]}, // Thanks to @int_webd + {"addr": ["https://node3.int-webd.com:5002"]}, // Thanks to @int_webd + {"addr": ["https://node3.int-webd.com:5003"]}, // Thanks to @int_webd + {"addr": ["https://node3.int-webd.com:5004"]}, // Thanks to @int_webd + {"addr": ["https://node3.int-webd.com:5005"]}, // Thanks to @int_webd + {"addr": ["https://node4.int-webd.com:5001"]}, // Thanks to @int_webd + {"addr": ["https://node4.int-webd.com:5002"]}, // Thanks to @int_webd + {"addr": ["https://node4.int-webd.com:5003"]}, // Thanks to @int_webd + {"addr": ["https://node4.int-webd.com:5004"]}, // Thanks to @int_webd + {"addr": ["https://node4.int-webd.com:5005"]}, // Thanks to @int_webd + {"addr": ["https://node5.int-webd.com:5001"]}, // Thanks to @int_webd + {"addr": ["https://node5.int-webd.com:5002"]}, // Thanks to @int_webd + {"addr": ["https://node5.int-webd.com:5003"]}, // Thanks to @int_webd + {"addr": ["https://node5.int-webd.com:5004"]}, // Thanks to @int_webd + {"addr": ["https://node5.int-webd.com:5005"]}, // Thanks to @int_webd + {"addr": ["https://node6.int-webd.com:5001"]}, // Thanks to @int_webd + {"addr": ["https://node6.int-webd.com:5002"]}, // Thanks to @int_webd + {"addr": ["https://node6.int-webd.com:5003"]}, // Thanks to @int_webd + {"addr": ["https://node6.int-webd.com:5004"]}, // Thanks to @int_webd + {"addr": ["https://node6.int-webd.com:5005"]}, // Thanks to @int_webd + {"addr": ["https://node7.int-webd.com:5001"]}, // Thanks to @int_webd + {"addr": ["https://node7.int-webd.com:5002"]}, // Thanks to @int_webd + {"addr": ["https://node7.int-webd.com:5003"]}, // Thanks to @int_webd + {"addr": ["https://node7.int-webd.com:5004"]}, // Thanks to @int_webd + {"addr": ["https://node7.int-webd.com:5005"]}, // Thanks to @int_webd + + // {"addr": ["https://bacm.ro:80"]}, //Thanks to @jigodia + // {"addr": ["https://bacm.ro:443"]}, //Thanks to @jigodia + // {"addr": ["https://bacm.ro:8080"]}, //Thanks to @jigodia + // {"addr": ["https://bacm.ro:8081"]}, //Thanks to @jigodia + // {"addr": ["https://bacm.ro:8082"]}, //Thanks to @jigodia*/ + + + //--------------------------------------------------------- + //--------------WebDollar FallBack Nodes------------------- + //--------------------------------------------------------- + + // + // {"addr": ["https://skyhub.me:80"]}, + // {"addr": ["https://presa7.ro:80"]}, + // + // + // {"addr": ["https://webdollar-vps1.ddns.net:80"]}, + // {"addr": ["https://webdollar-vps2.ddns.net:80"]}, + // {"addr": ["https://webdollar-vps3.ddns.net:80"]}, + + //{"addr": ["https://webdollar.ddns.net:80"]}, + + {"addr": ["https://webdollarinfinitypool.space:8085"]}, //Thanks to @Tibi Popescu + {"addr": ["https://webdollarinfinitypool.space:8086"]}, //Thanks to @Tibi Popescu + {"addr": ["https://webdollarinfinitypool.space:8087"]}, //Thanks to @Tibi Popescu + {"addr": ["https://webdollarinfinitypool.space:8088"]}, //Thanks to @Tibi Popescu + {"addr": ["https://webdollarinfinitypool.space:8089"]}, //Thanks to @Tibi Popescu + + + {"addr": ["https://chucknorris.webdollarvpn.io:8080"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8081"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8082"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8083"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8084"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8085"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8086"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8087"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8088"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8089"]}, // Thanks to @cbusuioceanu + {"addr": ["https://chucknorris.webdollarvpn.io:8090"]}, // Thanks to @cbusuioceanu + + /*{"addr": ["https://angrybirds.webdollarvpn.io:1666"]}, // Thanks to @cbusuioceanu + {"addr": ["https://angrybirds.webdollarvpn.io:2666"]}, // Thanks to @cbusuioceanu + {"addr": ["https://angrybirds.webdollarvpn.io:3666"]}, // Thanks to @cbusuioceanu + {"addr": ["https://angrybirds.webdollarvpn.io:4666"]}, // Thanks to @cbusuioceanu + {"addr": ["https://angrybirds.webdollarvpn.io:5666"]}, // Thanks to @cbusuioceanu + {"addr": ["https://angrybirds.webdollarvpn.io:7666"]}, // Thanks to @cbusuioceanu + {"addr": ["https://angrybirds.webdollarvpn.io:8666"]}, // Thanks to @cbusuioceanu + {"addr": ["https://angrybirds.webdollarvpn.io:9666"]}, // Thanks to @cbusuioceanu*/ + + {"addr": ["https://webdollar.csland.ro:8440"]}, // Thanks to @mariotheodor + {"addr": ["https://webdollar.csland.ro:8441"]}, // Thanks to @mariotheodor + {"addr": ["https://webdollar.csland.ro:8442"]}, // Thanks to @mariotheodor + {"addr": ["https://webdollar.csland.ro:8443"]}, // Thanks to @mariotheodor + + ] +}); + + +/***/ }), +/* 262 */ +/***/ (function(module, exports, __webpack_require__) { + +var basex = __webpack_require__(576) +var ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' + +module.exports = basex(ALPHABET) + + +/***/ }), +/* 263 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var Buffer = __webpack_require__(4).Buffer +var Transform = __webpack_require__(133).Transform +var inherits = __webpack_require__(7) + +function throwIfNotStringOrBuffer (val, prefix) { + if (!Buffer.isBuffer(val) && typeof val !== 'string') { + throw new TypeError(prefix + ' must be a string or a buffer') + } +} + +function HashBase (blockSize) { + Transform.call(this) + + this._block = Buffer.allocUnsafe(blockSize) + this._blockSize = blockSize + this._blockOffset = 0 + this._length = [0, 0, 0, 0] + + this._finalized = false +} + +inherits(HashBase, Transform) + +HashBase.prototype._transform = function (chunk, encoding, callback) { + var error = null + try { + this.update(chunk, encoding) + } catch (err) { + error = err + } + + callback(error) +} + +HashBase.prototype._flush = function (callback) { + var error = null + try { + this.push(this.digest()) + } catch (err) { + error = err + } + + callback(error) +} + +HashBase.prototype.update = function (data, encoding) { + throwIfNotStringOrBuffer(data, 'Data') + if (this._finalized) throw new Error('Digest already called') + if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding) + + // consume data + var block = this._block + var offset = 0 + while (this._blockOffset + data.length - offset >= this._blockSize) { + for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++] + this._update() + this._blockOffset = 0 + } + while (offset < data.length) block[this._blockOffset++] = data[offset++] + + // update length + for (var j = 0, carry = data.length * 8; carry > 0; ++j) { + this._length[j] += carry + carry = (this._length[j] / 0x0100000000) | 0 + if (carry > 0) this._length[j] -= 0x0100000000 * carry + } + + return this +} + +HashBase.prototype._update = function () { + throw new Error('_update is not implemented') +} + +HashBase.prototype.digest = function (encoding) { + if (this._finalized) throw new Error('Digest already called') + this._finalized = true + + var digest = this._digest() + if (encoding !== undefined) digest = digest.toString(encoding) + + // reset state + this._block.fill(0) + this._blockOffset = 0 + for (var i = 0; i < 4; ++i) this._length[i] = 0 + + return digest +} + +HashBase.prototype._digest = function () { + throw new Error('_digest is not implemented') +} + +module.exports = HashBase + + +/***/ }), +/* 264 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +/**/ + +var pna = __webpack_require__(134); +/**/ + +module.exports = Readable; + +/**/ +var isArray = __webpack_require__(257); +/**/ + +/**/ +var Duplex; +/**/ + +Readable.ReadableState = ReadableState; + +/**/ +var EE = __webpack_require__(46).EventEmitter; + +var EElistenerCount = function (emitter, type) { + return emitter.listeners(type).length; +}; +/**/ + +/**/ +var Stream = __webpack_require__(265); +/**/ + +/**/ + +var Buffer = __webpack_require__(4).Buffer; +var OurUint8Array = global.Uint8Array || function () {}; +function _uint8ArrayToBuffer(chunk) { + return Buffer.from(chunk); +} +function _isUint8Array(obj) { + return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; +} + +/**/ + +/**/ +var util = __webpack_require__(102); +util.inherits = __webpack_require__(7); +/**/ + +/**/ +var debugUtil = __webpack_require__(578); +var debug = void 0; +if (debugUtil && debugUtil.debuglog) { + debug = debugUtil.debuglog('stream'); +} else { + debug = function () {}; +} +/**/ + +var BufferList = __webpack_require__(579); +var destroyImpl = __webpack_require__(266); +var StringDecoder; + +util.inherits(Readable, Stream); + +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + +function prependListener(emitter, event, fn) { + // Sadly this is not cacheable as some libraries bundle their own + // event emitter implementation with them. + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any + // userland ones. NEVER DO THIS. This is here only because this code needs + // to continue to work with older versions of Node.js that do not include + // the prependListener() method. The goal is to eventually remove this hack. + if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; +} + +function ReadableState(options, stream) { + Duplex = Duplex || __webpack_require__(85); + + options = options || {}; + + // Duplex streams are both readable and writable, but share + // the same options object. + // However, some cases require setting options to different + // values for the readable and the writable sides of the duplex stream. + // These options can be provided separately as readableXXX and writableXXX. + var isDuplex = stream instanceof Duplex; + + // object stream flag. Used to make read(n) ignore n and to + // make all the buffer merging and length checks go away + this.objectMode = !!options.objectMode; + + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer + // Note: 0 is a valid value, means "don't call _read preemptively ever" + var hwm = options.highWaterMark; + var readableHwm = options.readableHighWaterMark; + var defaultHwm = this.objectMode ? 16 : 16 * 1024; + + if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (readableHwm || readableHwm === 0)) this.highWaterMark = readableHwm;else this.highWaterMark = defaultHwm; + + // cast to ints. + this.highWaterMark = Math.floor(this.highWaterMark); + + // A linked list is used to store data chunks instead of an array because the + // linked list can remove elements from the beginning faster than + // array.shift() + this.buffer = new BufferList(); + this.length = 0; + this.pipes = null; + this.pipesCount = 0; + this.flowing = null; + this.ended = false; + this.endEmitted = false; + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted + // immediately, or on a later tick. We set this to true at first, because + // any actions that shouldn't happen until "later" should generally also + // not happen before the first read call. + this.sync = true; + + // whenever we return null, then we set a flag to say + // that we're awaiting a 'readable' event emission. + this.needReadable = false; + this.emittedReadable = false; + this.readableListening = false; + this.resumeScheduled = false; + + // has it been destroyed + this.destroyed = false; + + // Crypto is kind of old and crusty. Historically, its default string + // encoding is 'binary' so we have to make this configurable. + // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; + + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + + // if true, a maybeReadMore has been scheduled + this.readingMore = false; + + this.decoder = null; + this.encoding = null; + if (options.encoding) { + if (!StringDecoder) StringDecoder = __webpack_require__(178).StringDecoder; + this.decoder = new StringDecoder(options.encoding); + this.encoding = options.encoding; + } +} + +function Readable(options) { + Duplex = Duplex || __webpack_require__(85); + + if (!(this instanceof Readable)) return new Readable(options); + + this._readableState = new ReadableState(options, this); + + // legacy + this.readable = true; + + if (options) { + if (typeof options.read === 'function') this._read = options.read; + + if (typeof options.destroy === 'function') this._destroy = options.destroy; + } + + Stream.call(this); +} + +Object.defineProperty(Readable.prototype, 'destroyed', { + get: function () { + if (this._readableState === undefined) { + return false; + } + return this._readableState.destroyed; + }, + set: function (value) { + // we ignore the value if the stream + // has not been initialized yet + if (!this._readableState) { + return; + } + + // backward compatibility, the user is explicitly + // managing destroyed + this._readableState.destroyed = value; + } +}); + +Readable.prototype.destroy = destroyImpl.destroy; +Readable.prototype._undestroy = destroyImpl.undestroy; +Readable.prototype._destroy = function (err, cb) { + this.push(null); + cb(err); +}; + +// Manually shove something into the read() buffer. +// This returns true if the highWaterMark has not been hit yet, +// similar to how Writable.write() returns true if you should +// write() some more. +Readable.prototype.push = function (chunk, encoding) { + var state = this._readableState; + var skipChunkCheck; + + if (!state.objectMode) { + if (typeof chunk === 'string') { + encoding = encoding || state.defaultEncoding; + if (encoding !== state.encoding) { + chunk = Buffer.from(chunk, encoding); + encoding = ''; + } + skipChunkCheck = true; + } + } else { + skipChunkCheck = true; + } + + return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); +}; + +// Unshift should *always* be something directly out of read() +Readable.prototype.unshift = function (chunk) { + return readableAddChunk(this, chunk, null, true, false); +}; + +function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { + var state = stream._readableState; + if (chunk === null) { + state.reading = false; + onEofChunk(stream, state); + } else { + var er; + if (!skipChunkCheck) er = chunkInvalid(state, chunk); + if (er) { + stream.emit('error', er); + } else if (state.objectMode || chunk && chunk.length > 0) { + if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { + chunk = _uint8ArrayToBuffer(chunk); + } + + if (addToFront) { + if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true); + } else if (state.ended) { + stream.emit('error', new Error('stream.push() after EOF')); + } else { + state.reading = false; + if (state.decoder && !encoding) { + chunk = state.decoder.write(chunk); + if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); + } else { + addChunk(stream, state, chunk, false); + } + } + } else if (!addToFront) { + state.reading = false; + } + } + + return needMoreData(state); +} + +function addChunk(stream, state, chunk, addToFront) { + if (state.flowing && state.length === 0 && !state.sync) { + stream.emit('data', chunk); + stream.read(0); + } else { + // update the buffer info. + state.length += state.objectMode ? 1 : chunk.length; + if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); + + if (state.needReadable) emitReadable(stream); + } + maybeReadMore(stream, state); +} + +function chunkInvalid(state, chunk) { + var er; + if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + er = new TypeError('Invalid non-string/buffer chunk'); + } + return er; +} + +// if it's past the high water mark, we can push in some more. +// Also, if we have no data yet, we can stand some +// more bytes. This is to work around cases where hwm=0, +// such as the repl. Also, if the push() triggered a +// readable event, and the user called read(largeNumber) such that +// needReadable was set, then we ought to push more, so that another +// 'readable' event will be triggered. +function needMoreData(state) { + return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); +} + +Readable.prototype.isPaused = function () { + return this._readableState.flowing === false; +}; + +// backwards compatibility. +Readable.prototype.setEncoding = function (enc) { + if (!StringDecoder) StringDecoder = __webpack_require__(178).StringDecoder; + this._readableState.decoder = new StringDecoder(enc); + this._readableState.encoding = enc; + return this; +}; + +// Don't raise the hwm > 8MB +var MAX_HWM = 0x800000; +function computeNewHighWaterMark(n) { + if (n >= MAX_HWM) { + n = MAX_HWM; + } else { + // Get the next highest power of 2 to prevent increasing hwm excessively in + // tiny amounts + n--; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + n++; + } + return n; +} + +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function howMuchToRead(n, state) { + if (n <= 0 || state.length === 0 && state.ended) return 0; + if (state.objectMode) return 1; + if (n !== n) { + // Only flow one buffer at a time + if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; + } + // If we're asking for more than the current hwm, then raise the hwm. + if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); + if (n <= state.length) return n; + // Don't have enough + if (!state.ended) { + state.needReadable = true; + return 0; + } + return state.length; +} + +// you can override either this method, or the async _read(n) below. +Readable.prototype.read = function (n) { + debug('read', n); + n = parseInt(n, 10); + var state = this._readableState; + var nOrig = n; + + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we + // already have a bunch of data in the buffer, then just trigger + // the 'readable' event and move on. + if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { + debug('read: emitReadable', state.length, state.ended); + if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); + return null; + } + + n = howMuchToRead(n, state); + + // if we've ended, and we're now clear, then finish it up. + if (n === 0 && state.ended) { + if (state.length === 0) endReadable(this); + return null; + } + + // All the actual chunk generation logic needs to be + // *below* the call to _read. The reason is that in certain + // synthetic stream cases, such as passthrough streams, _read + // may be a completely synchronous operation which may change + // the state of the read buffer, providing enough data when + // before there was *not* enough. + // + // So, the steps are: + // 1. Figure out what the state of things will be after we do + // a read from the buffer. + // + // 2. If that resulting state will trigger a _read, then call _read. + // Note that this may be asynchronous, or synchronous. Yes, it is + // deeply ugly to write APIs this way, but that still doesn't mean + // that the Readable class should behave improperly, as streams are + // designed to be sync/async agnostic. + // Take note if the _read call is sync or async (ie, if the read call + // has returned yet), so that we know whether or not it's safe to emit + // 'readable' etc. + // + // 3. Actually pull the requested chunks out of the buffer and return. + + // if we need a readable event, then we need to do some reading. + var doRead = state.needReadable; + debug('need readable', doRead); + + // if we currently have less than the highWaterMark, then also read some + if (state.length === 0 || state.length - n < state.highWaterMark) { + doRead = true; + debug('length less than watermark', doRead); + } + + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. + if (state.ended || state.reading) { + doRead = false; + debug('reading or ended', doRead); + } else if (doRead) { + debug('do read'); + state.reading = true; + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method + this._read(state.highWaterMark); + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, + // and we need to re-evaluate how much data we can return to the user. + if (!state.reading) n = howMuchToRead(nOrig, state); + } + + var ret; + if (n > 0) ret = fromList(n, state);else ret = null; + + if (ret === null) { + state.needReadable = true; + n = 0; + } else { + state.length -= n; + } + + if (state.length === 0) { + // If we have nothing in the buffer, then we want to know + // as soon as we *do* get something into the buffer. + if (!state.ended) state.needReadable = true; + + // If we tried to read() past the EOF, then emit end on the next tick. + if (nOrig !== n && state.ended) endReadable(this); + } + + if (ret !== null) this.emit('data', ret); + + return ret; +}; + +function onEofChunk(stream, state) { + if (state.ended) return; + if (state.decoder) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) { + state.buffer.push(chunk); + state.length += state.objectMode ? 1 : chunk.length; + } + } + state.ended = true; + + // emit 'readable' now to make sure it gets picked up. + emitReadable(stream); +} + +// Don't emit readable right away in sync mode, because this can trigger +// another read() call => stack overflow. This way, it might trigger +// a nextTick recursion warning, but that's not so bad. +function emitReadable(stream) { + var state = stream._readableState; + state.needReadable = false; + if (!state.emittedReadable) { + debug('emitReadable', state.flowing); + state.emittedReadable = true; + if (state.sync) pna.nextTick(emitReadable_, stream);else emitReadable_(stream); + } +} + +function emitReadable_(stream) { + debug('emit readable'); + stream.emit('readable'); + flow(stream); +} + +// at this point, the user has presumably seen the 'readable' event, +// and called read() to consume some data. that may have triggered +// in turn another _read(n) call, in which case reading = true if +// it's in progress. +// However, if we're not ended, or reading, and the length < hwm, +// then go ahead and try to read some more preemptively. +function maybeReadMore(stream, state) { + if (!state.readingMore) { + state.readingMore = true; + pna.nextTick(maybeReadMore_, stream, state); + } +} + +function maybeReadMore_(stream, state) { + var len = state.length; + while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { + debug('maybeReadMore read 0'); + stream.read(0); + if (len === state.length) + // didn't get any data, stop spinning. + break;else len = state.length; + } + state.readingMore = false; +} + +// abstract method. to be overridden in specific implementation classes. +// call cb(er, data) where data is <= n in length. +// for virtual (non-string, non-buffer) streams, "length" is somewhat +// arbitrary, and perhaps not very meaningful. +Readable.prototype._read = function (n) { + this.emit('error', new Error('_read() is not implemented')); +}; + +Readable.prototype.pipe = function (dest, pipeOpts) { + var src = this; + var state = this._readableState; + + switch (state.pipesCount) { + case 0: + state.pipes = dest; + break; + case 1: + state.pipes = [state.pipes, dest]; + break; + default: + state.pipes.push(dest); + break; + } + state.pipesCount += 1; + debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); + + var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; + + var endFn = doEnd ? onend : unpipe; + if (state.endEmitted) pna.nextTick(endFn);else src.once('end', endFn); + + dest.on('unpipe', onunpipe); + function onunpipe(readable, unpipeInfo) { + debug('onunpipe'); + if (readable === src) { + if (unpipeInfo && unpipeInfo.hasUnpiped === false) { + unpipeInfo.hasUnpiped = true; + cleanup(); + } + } + } + + function onend() { + debug('onend'); + dest.end(); + } + + // when the dest drains, it reduces the awaitDrain counter + // on the source. This would be more elegant with a .once() + // handler in flow(), but adding and removing repeatedly is + // too slow. + var ondrain = pipeOnDrain(src); + dest.on('drain', ondrain); + + var cleanedUp = false; + function cleanup() { + debug('cleanup'); + // cleanup event handlers once the pipe is broken + dest.removeListener('close', onclose); + dest.removeListener('finish', onfinish); + dest.removeListener('drain', ondrain); + dest.removeListener('error', onerror); + dest.removeListener('unpipe', onunpipe); + src.removeListener('end', onend); + src.removeListener('end', unpipe); + src.removeListener('data', ondata); + + cleanedUp = true; + + // if the reader is waiting for a drain event from this + // specific writer, then it would cause it to never start + // flowing again. + // So, if this is awaiting a drain, then we just call it now. + // If we don't know, then assume that we are waiting for one. + if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); + } + + // If the user pushes more data while we're writing to dest then we'll end up + // in ondata again. However, we only want to increase awaitDrain once because + // dest will only emit one 'drain' event for the multiple writes. + // => Introduce a guard on increasing awaitDrain. + var increasedAwaitDrain = false; + src.on('data', ondata); + function ondata(chunk) { + debug('ondata'); + increasedAwaitDrain = false; + var ret = dest.write(chunk); + if (false === ret && !increasedAwaitDrain) { + // If the user unpiped during `dest.write()`, it is possible + // to get stuck in a permanently paused state if that write + // also returned false. + // => Check whether `dest` is still a piping destination. + if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { + debug('false write response, pause', src._readableState.awaitDrain); + src._readableState.awaitDrain++; + increasedAwaitDrain = true; + } + src.pause(); + } + } + + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. + function onerror(er) { + debug('onerror', er); + unpipe(); + dest.removeListener('error', onerror); + if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); + } + + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + + // Both close and finish should trigger unpipe, but only once. + function onclose() { + dest.removeListener('finish', onfinish); + unpipe(); + } + dest.once('close', onclose); + function onfinish() { + debug('onfinish'); + dest.removeListener('close', onclose); + unpipe(); + } + dest.once('finish', onfinish); + + function unpipe() { + debug('unpipe'); + src.unpipe(dest); + } + + // tell the dest that it's being piped to + dest.emit('pipe', src); + + // start the flow if it hasn't been started already. + if (!state.flowing) { + debug('pipe resume'); + src.resume(); + } + + return dest; +}; + +function pipeOnDrain(src) { + return function () { + var state = src._readableState; + debug('pipeOnDrain', state.awaitDrain); + if (state.awaitDrain) state.awaitDrain--; + if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { + state.flowing = true; + flow(src); + } + }; +} + +Readable.prototype.unpipe = function (dest) { + var state = this._readableState; + var unpipeInfo = { hasUnpiped: false }; + + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + + // just one destination. most common case. + if (state.pipesCount === 1) { + // passed in one, but it's not the right one. + if (dest && dest !== state.pipes) return this; + + if (!dest) dest = state.pipes; + + // got a match. + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + if (dest) dest.emit('unpipe', this, unpipeInfo); + return this; + } + + // slow case. multiple pipe destinations. + + if (!dest) { + // remove all. + var dests = state.pipes; + var len = state.pipesCount; + state.pipes = null; + state.pipesCount = 0; + state.flowing = false; + + for (var i = 0; i < len; i++) { + dests[i].emit('unpipe', this, unpipeInfo); + }return this; + } + + // try to find the right one. + var index = indexOf(state.pipes, dest); + if (index === -1) return this; + + state.pipes.splice(index, 1); + state.pipesCount -= 1; + if (state.pipesCount === 1) state.pipes = state.pipes[0]; + + dest.emit('unpipe', this, unpipeInfo); + + return this; +}; + +// set up data events if they are asked for +// Ensure readable listeners eventually get something +Readable.prototype.on = function (ev, fn) { + var res = Stream.prototype.on.call(this, ev, fn); + + if (ev === 'data') { + // Start flowing on next tick if stream isn't explicitly paused + if (this._readableState.flowing !== false) this.resume(); + } else if (ev === 'readable') { + var state = this._readableState; + if (!state.endEmitted && !state.readableListening) { + state.readableListening = state.needReadable = true; + state.emittedReadable = false; + if (!state.reading) { + pna.nextTick(nReadingNextTick, this); + } else if (state.length) { + emitReadable(this); + } + } + } + + return res; +}; +Readable.prototype.addListener = Readable.prototype.on; + +function nReadingNextTick(self) { + debug('readable nexttick read 0'); + self.read(0); +} + +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. +Readable.prototype.resume = function () { + var state = this._readableState; + if (!state.flowing) { + debug('resume'); + state.flowing = true; + resume(this, state); + } + return this; +}; + +function resume(stream, state) { + if (!state.resumeScheduled) { + state.resumeScheduled = true; + pna.nextTick(resume_, stream, state); + } +} + +function resume_(stream, state) { + if (!state.reading) { + debug('resume read 0'); + stream.read(0); + } + + state.resumeScheduled = false; + state.awaitDrain = 0; + stream.emit('resume'); + flow(stream); + if (state.flowing && !state.reading) stream.read(0); +} + +Readable.prototype.pause = function () { + debug('call pause flowing=%j', this._readableState.flowing); + if (false !== this._readableState.flowing) { + debug('pause'); + this._readableState.flowing = false; + this.emit('pause'); + } + return this; +}; + +function flow(stream) { + var state = stream._readableState; + debug('flow', state.flowing); + while (state.flowing && stream.read() !== null) {} +} + +// wrap an old-style stream as the async data source. +// This is *not* part of the readable stream interface. +// It is an ugly unfortunate mess of history. +Readable.prototype.wrap = function (stream) { + var _this = this; + + var state = this._readableState; + var paused = false; + + stream.on('end', function () { + debug('wrapped end'); + if (state.decoder && !state.ended) { + var chunk = state.decoder.end(); + if (chunk && chunk.length) _this.push(chunk); + } + + _this.push(null); + }); + + stream.on('data', function (chunk) { + debug('wrapped data'); + if (state.decoder) chunk = state.decoder.write(chunk); + + // don't skip over falsy values in objectMode + if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; + + var ret = _this.push(chunk); + if (!ret) { + paused = true; + stream.pause(); + } + }); + + // proxy all the other methods. + // important when wrapping filters and duplexes. + for (var i in stream) { + if (this[i] === undefined && typeof stream[i] === 'function') { + this[i] = function (method) { + return function () { + return stream[method].apply(stream, arguments); + }; + }(i); + } + } + + // proxy certain important events. + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); + } + + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = function (n) { + debug('wrapped _read', n); + if (paused) { + paused = false; + stream.resume(); + } + }; + + return this; +}; + +Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { + // making it explicit this property is not enumerable + // because otherwise some prototype manipulation in + // userland will fail + enumerable: false, + get: function () { + return this._readableState.highWaterMark; + } +}); + +// exposed for testing purposes only. +Readable._fromList = fromList; + +// Pluck off n bytes from an array of buffers. +// Length is the combined lengths of all the buffers in the list. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromList(n, state) { + // nothing buffered + if (state.length === 0) return null; + + var ret; + if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { + // read it all, truncate the list + if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); + state.buffer.clear(); + } else { + // read part of list + ret = fromListPartial(n, state.buffer, state.decoder); + } + + return ret; +} + +// Extracts only enough buffered data to satisfy the amount requested. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function fromListPartial(n, list, hasStrings) { + var ret; + if (n < list.head.data.length) { + // slice is the same for buffers and strings + ret = list.head.data.slice(0, n); + list.head.data = list.head.data.slice(n); + } else if (n === list.head.data.length) { + // first chunk is a perfect match + ret = list.shift(); + } else { + // result spans more than one buffer + ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); + } + return ret; +} + +// Copies a specified amount of characters from the list of buffered data +// chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBufferString(n, list) { + var p = list.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + var str = p.data; + var nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = str.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +// Copies a specified amount of bytes from the list of buffered data chunks. +// This function is designed to be inlinable, so please take care when making +// changes to the function body. +function copyFromBuffer(n, list) { + var ret = Buffer.allocUnsafe(n); + var p = list.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + var buf = p.data; + var nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) list.head = p.next;else list.head = list.tail = null; + } else { + list.head = p; + p.data = buf.slice(nb); + } + break; + } + ++c; + } + list.length -= c; + return ret; +} + +function endReadable(stream) { + var state = stream._readableState; + + // If we get here before consuming all the bytes, then that is a + // bug in node. Should never happen. + if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); + + if (!state.endEmitted) { + state.ended = true; + pna.nextTick(endReadableNT, state, stream); + } +} + +function endReadableNT(state, stream) { + // Check that we didn't get one last unshift. + if (!state.endEmitted && state.length === 0) { + state.endEmitted = true; + stream.readable = false; + stream.emit('end'); + } +} + +function indexOf(xs, x) { + for (var i = 0, l = xs.length; i < l; i++) { + if (xs[i] === x) return i; + } + return -1; +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(11), __webpack_require__(32))) + +/***/ }), +/* 265 */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(46).EventEmitter; + + +/***/ }), +/* 266 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/**/ + +var pna = __webpack_require__(134); +/**/ + +// undocumented cb() API, needed for core, not for public API +function destroy(err, cb) { + var _this = this; + + var readableDestroyed = this._readableState && this._readableState.destroyed; + var writableDestroyed = this._writableState && this._writableState.destroyed; + + if (readableDestroyed || writableDestroyed) { + if (cb) { + cb(err); + } else if (err && (!this._writableState || !this._writableState.errorEmitted)) { + pna.nextTick(emitErrorNT, this, err); + } + return this; + } + + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks + + if (this._readableState) { + this._readableState.destroyed = true; + } + + // if this is a duplex stream mark the writable part as destroyed as well + if (this._writableState) { + this._writableState.destroyed = true; + } + + this._destroy(err || null, function (err) { + if (!cb && err) { + pna.nextTick(emitErrorNT, _this, err); + if (_this._writableState) { + _this._writableState.errorEmitted = true; + } + } else if (cb) { + cb(err); + } + }); + + return this; +} + +function undestroy() { + if (this._readableState) { + this._readableState.destroyed = false; + this._readableState.reading = false; + this._readableState.ended = false; + this._readableState.endEmitted = false; + } + + if (this._writableState) { + this._writableState.destroyed = false; + this._writableState.ended = false; + this._writableState.ending = false; + this._writableState.finished = false; + this._writableState.errorEmitted = false; + } +} + +function emitErrorNT(self, err) { + self.emit('error', err); +} + +module.exports = { + destroy: destroy, + undestroy: undestroy +}; + +/***/ }), +/* 267 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// a transform stream is a readable/writable stream where you do +// something with the data. Sometimes it's called a "filter", +// but that's not a great name for it, since that implies a thing where +// some bits pass through, and others are simply ignored. (That would +// be a valid example of a transform, of course.) +// +// While the output is causally related to the input, it's not a +// necessarily symmetric or synchronous transformation. For example, +// a zlib stream might take multiple plain-text writes(), and then +// emit a single compressed chunk some time in the future. +// +// Here's how this works: +// +// The Transform stream has all the aspects of the readable and writable +// stream classes. When you write(chunk), that calls _write(chunk,cb) +// internally, and returns false if there's a lot of pending writes +// buffered up. When you call read(), that calls _read(n) until +// there's enough pending readable data buffered up. +// +// In a transform stream, the written data is placed in a buffer. When +// _read(n) is called, it transforms the queued up data, calling the +// buffered _write cb's as it consumes chunks. If consuming a single +// written chunk would result in multiple output chunks, then the first +// outputted bit calls the readcb, and subsequent chunks just go into +// the read buffer, and will cause it to emit 'readable' if necessary. +// +// This way, back-pressure is actually determined by the reading side, +// since _read has to be called to start processing a new chunk. However, +// a pathological inflate type of transform can cause excessive buffering +// here. For example, imagine a stream where every byte of input is +// interpreted as an integer from 0-255, and then results in that many +// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in +// 1kb of data being output. In this case, you could write a very small +// amount of input, and end up with a very large amount of output. In +// such a pathological inflating mechanism, there'd be no way to tell +// the system to stop doing the transform. A single 4MB write could +// cause the system to run out of memory. +// +// However, even in such a pathological case, only a single written chunk +// would be consumed, and then the rest would wait (un-transformed) until +// the results of the previous transformed chunk were consumed. + + + +module.exports = Transform; + +var Duplex = __webpack_require__(85); + +/**/ +var util = __webpack_require__(102); +util.inherits = __webpack_require__(7); +/**/ + +util.inherits(Transform, Duplex); + +function afterTransform(er, data) { + var ts = this._transformState; + ts.transforming = false; + + var cb = ts.writecb; + + if (!cb) { + return this.emit('error', new Error('write callback called multiple times')); + } + + ts.writechunk = null; + ts.writecb = null; + + if (data != null) // single equals check for both `null` and `undefined` + this.push(data); + + cb(er); + + var rs = this._readableState; + rs.reading = false; + if (rs.needReadable || rs.length < rs.highWaterMark) { + this._read(rs.highWaterMark); + } +} + +function Transform(options) { + if (!(this instanceof Transform)) return new Transform(options); + + Duplex.call(this, options); + + this._transformState = { + afterTransform: afterTransform.bind(this), + needTransform: false, + transforming: false, + writecb: null, + writechunk: null, + writeencoding: null + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; + + // we have implemented the _read method, and done the other things + // that Readable wants before the first _read call, so unset the + // sync guard flag. + this._readableState.sync = false; + + if (options) { + if (typeof options.transform === 'function') this._transform = options.transform; + + if (typeof options.flush === 'function') this._flush = options.flush; + } + + // When the writable side finishes, then flush out anything remaining. + this.on('prefinish', prefinish); +} + +function prefinish() { + var _this = this; + + if (typeof this._flush === 'function') { + this._flush(function (er, data) { + done(_this, er, data); + }); + } else { + done(this, null, null); + } +} + +Transform.prototype.push = function (chunk, encoding) { + this._transformState.needTransform = false; + return Duplex.prototype.push.call(this, chunk, encoding); +}; + +// This is the part where you do stuff! +// override this function in implementation classes. +// 'chunk' is an input chunk. +// +// Call `push(newChunk)` to pass along transformed output +// to the readable side. You may call 'push' zero or more times. +// +// Call `cb(err)` when you are done with this chunk. If you pass +// an error, then that'll put the hurt on the whole operation. If you +// never call cb(), then you'll never get another chunk. +Transform.prototype._transform = function (chunk, encoding, cb) { + throw new Error('_transform() is not implemented'); +}; + +Transform.prototype._write = function (chunk, encoding, cb) { + var ts = this._transformState; + ts.writecb = cb; + ts.writechunk = chunk; + ts.writeencoding = encoding; + if (!ts.transforming) { + var rs = this._readableState; + if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); + } +}; + +// Doesn't matter what the args are here. +// _transform does all the work. +// That we got here means that the readable side wants more data. +Transform.prototype._read = function (n) { + var ts = this._transformState; + + if (ts.writechunk !== null && ts.writecb && !ts.transforming) { + ts.transforming = true; + this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); + } else { + // mark that we need a transform, so that any data that comes in + // will get processed, now that we've asked for it. + ts.needTransform = true; + } +}; + +Transform.prototype._destroy = function (err, cb) { + var _this2 = this; + + Duplex.prototype._destroy.call(this, err, function (err2) { + cb(err2); + _this2.emit('close'); + }); +}; + +function done(stream, er, data) { + if (er) return stream.emit('error', er); + + if (data != null) // single equals check for both `null` and `undefined` + stream.push(data); + + // if there's nothing in the write buffer, then that means + // that nothing more will ever be provided + if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0'); + + if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming'); + + return stream.push(null); +} + +/***/ }), +/* 268 */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var inherits = __webpack_require__(7) +var Hash = __webpack_require__(93) +var Buffer = __webpack_require__(4).Buffer + +var K = [ + 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, + 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5, + 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3, + 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, + 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC, + 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA, + 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, + 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967, + 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13, + 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, + 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3, + 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070, + 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, + 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3, + 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208, + 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2 +] + +var W = new Array(64) + +function Sha256 () { + this.init() + + this._w = W // new Array(64) + + Hash.call(this, 64, 56) +} + +inherits(Sha256, Hash) + +Sha256.prototype.init = function () { + this._a = 0x6a09e667 + this._b = 0xbb67ae85 + this._c = 0x3c6ef372 + this._d = 0xa54ff53a + this._e = 0x510e527f + this._f = 0x9b05688c + this._g = 0x1f83d9ab + this._h = 0x5be0cd19 + + return this +} + +function ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x) { + return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10) +} + +function sigma1 (x) { + return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7) +} + +function gamma0 (x) { + return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3) +} + +function gamma1 (x) { + return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10) +} + +Sha256.prototype._update = function (M) { + var W = this._w + + var a = this._a | 0 + var b = this._b | 0 + var c = this._c | 0 + var d = this._d | 0 + var e = this._e | 0 + var f = this._f | 0 + var g = this._g | 0 + var h = this._h | 0 + + for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4) + for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0 + + for (var j = 0; j < 64; ++j) { + var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0 + var T2 = (sigma0(a) + maj(a, b, c)) | 0 + + h = g + g = f + f = e + e = (d + T1) | 0 + d = c + c = b + b = a + a = (T1 + T2) | 0 + } + + this._a = (a + this._a) | 0 + this._b = (b + this._b) | 0 + this._c = (c + this._c) | 0 + this._d = (d + this._d) | 0 + this._e = (e + this._e) | 0 + this._f = (f + this._f) | 0 + this._g = (g + this._g) | 0 + this._h = (h + this._h) | 0 +} + +Sha256.prototype._hash = function () { + var H = Buffer.allocUnsafe(32) + + H.writeInt32BE(this._a, 0) + H.writeInt32BE(this._b, 4) + H.writeInt32BE(this._c, 8) + H.writeInt32BE(this._d, 12) + H.writeInt32BE(this._e, 16) + H.writeInt32BE(this._f, 20) + H.writeInt32BE(this._g, 24) + H.writeInt32BE(this._h, 28) + + return H +} + +module.exports = Sha256 + + +/***/ }), +/* 269 */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(7) +var Hash = __webpack_require__(93) +var Buffer = __webpack_require__(4).Buffer + +var K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +] + +var W = new Array(160) + +function Sha512 () { + this.init() + this._w = W + + Hash.call(this, 128, 112) +} + +inherits(Sha512, Hash) + +Sha512.prototype.init = function () { + this._ah = 0x6a09e667 + this._bh = 0xbb67ae85 + this._ch = 0x3c6ef372 + this._dh = 0xa54ff53a + this._eh = 0x510e527f + this._fh = 0x9b05688c + this._gh = 0x1f83d9ab + this._hh = 0x5be0cd19 + + this._al = 0xf3bcc908 + this._bl = 0x84caa73b + this._cl = 0xfe94f82b + this._dl = 0x5f1d36f1 + this._el = 0xade682d1 + this._fl = 0x2b3e6c1f + this._gl = 0xfb41bd6b + this._hl = 0x137e2179 + + return this +} + +function Ch (x, y, z) { + return z ^ (x & (y ^ z)) +} + +function maj (x, y, z) { + return (x & y) | (z & (x | y)) +} + +function sigma0 (x, xl) { + return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25) +} + +function sigma1 (x, xl) { + return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23) +} + +function Gamma0 (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7) +} + +function Gamma0l (x, xl) { + return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25) +} + +function Gamma1 (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6) +} + +function Gamma1l (x, xl) { + return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26) +} + +function getCarry (a, b) { + return (a >>> 0) < (b >>> 0) ? 1 : 0 +} + +Sha512.prototype._update = function (M) { + var W = this._w + + var ah = this._ah | 0 + var bh = this._bh | 0 + var ch = this._ch | 0 + var dh = this._dh | 0 + var eh = this._eh | 0 + var fh = this._fh | 0 + var gh = this._gh | 0 + var hh = this._hh | 0 + + var al = this._al | 0 + var bl = this._bl | 0 + var cl = this._cl | 0 + var dl = this._dl | 0 + var el = this._el | 0 + var fl = this._fl | 0 + var gl = this._gl | 0 + var hl = this._hl | 0 + + for (var i = 0; i < 32; i += 2) { + W[i] = M.readInt32BE(i * 4) + W[i + 1] = M.readInt32BE(i * 4 + 4) + } + for (; i < 160; i += 2) { + var xh = W[i - 15 * 2] + var xl = W[i - 15 * 2 + 1] + var gamma0 = Gamma0(xh, xl) + var gamma0l = Gamma0l(xl, xh) + + xh = W[i - 2 * 2] + xl = W[i - 2 * 2 + 1] + var gamma1 = Gamma1(xh, xl) + var gamma1l = Gamma1l(xl, xh) + + // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16] + var Wi7h = W[i - 7 * 2] + var Wi7l = W[i - 7 * 2 + 1] + + var Wi16h = W[i - 16 * 2] + var Wi16l = W[i - 16 * 2 + 1] + + var Wil = (gamma0l + Wi7l) | 0 + var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0 + Wil = (Wil + gamma1l) | 0 + Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0 + Wil = (Wil + Wi16l) | 0 + Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0 + + W[i] = Wih + W[i + 1] = Wil + } + + for (var j = 0; j < 160; j += 2) { + Wih = W[j] + Wil = W[j + 1] + + var majh = maj(ah, bh, ch) + var majl = maj(al, bl, cl) + + var sigma0h = sigma0(ah, al) + var sigma0l = sigma0(al, ah) + var sigma1h = sigma1(eh, el) + var sigma1l = sigma1(el, eh) + + // t1 = h + sigma1 + ch + K[j] + W[j] + var Kih = K[j] + var Kil = K[j + 1] + + var chh = Ch(eh, fh, gh) + var chl = Ch(el, fl, gl) + + var t1l = (hl + sigma1l) | 0 + var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0 + t1l = (t1l + chl) | 0 + t1h = (t1h + chh + getCarry(t1l, chl)) | 0 + t1l = (t1l + Kil) | 0 + t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0 + t1l = (t1l + Wil) | 0 + t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0 + + // t2 = sigma0 + maj + var t2l = (sigma0l + majl) | 0 + var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0 + + hh = gh + hl = gl + gh = fh + gl = fl + fh = eh + fl = el + el = (dl + t1l) | 0 + eh = (dh + t1h + getCarry(el, dl)) | 0 + dh = ch + dl = cl + ch = bh + cl = bl + bh = ah + bl = al + al = (t1l + t2l) | 0 + ah = (t1h + t2h + getCarry(al, t1l)) | 0 + } + + this._al = (this._al + al) | 0 + this._bl = (this._bl + bl) | 0 + this._cl = (this._cl + cl) | 0 + this._dl = (this._dl + dl) | 0 + this._el = (this._el + el) | 0 + this._fl = (this._fl + fl) | 0 + this._gl = (this._gl + gl) | 0 + this._hl = (this._hl + hl) | 0 + + this._ah = (this._ah + ah + getCarry(this._al, al)) | 0 + this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0 + this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0 + this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0 + this._eh = (this._eh + eh + getCarry(this._el, el)) | 0 + this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0 + this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0 + this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0 +} + +Sha512.prototype._hash = function () { + var H = Buffer.allocUnsafe(64) + + function writeInt64BE (h, l, offset) { + H.writeInt32BE(h, offset) + H.writeInt32BE(l, offset + 4) + } + + writeInt64BE(this._ah, this._al, 0) + writeInt64BE(this._bh, this._bl, 8) + writeInt64BE(this._ch, this._cl, 16) + writeInt64BE(this._dh, this._dl, 24) + writeInt64BE(this._eh, this._el, 32) + writeInt64BE(this._fh, this._fl, 40) + writeInt64BE(this._gh, this._gl, 48) + writeInt64BE(this._hh, this._hl, 56) + + return H +} + +module.exports = Sha512 + + +/***/ }), +/* 270 */ +/***/ (function(module, exports, __webpack_require__) { + +var MD5 = __webpack_require__(175) + +module.exports = function (buffer) { + return new MD5().update(buffer).digest() +} + + +/***/ }), +/* 271 */ +/***/ (function(module, exports) { + +module.exports = {"sha224WithRSAEncryption":{"sign":"rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"RSA-SHA224":{"sign":"ecdsa/rsa","hash":"sha224","id":"302d300d06096086480165030402040500041c"},"sha256WithRSAEncryption":{"sign":"rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"RSA-SHA256":{"sign":"ecdsa/rsa","hash":"sha256","id":"3031300d060960864801650304020105000420"},"sha384WithRSAEncryption":{"sign":"rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"RSA-SHA384":{"sign":"ecdsa/rsa","hash":"sha384","id":"3041300d060960864801650304020205000430"},"sha512WithRSAEncryption":{"sign":"rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA512":{"sign":"ecdsa/rsa","hash":"sha512","id":"3051300d060960864801650304020305000440"},"RSA-SHA1":{"sign":"rsa","hash":"sha1","id":"3021300906052b0e03021a05000414"},"ecdsa-with-SHA1":{"sign":"ecdsa","hash":"sha1","id":""},"sha256":{"sign":"ecdsa","hash":"sha256","id":""},"sha224":{"sign":"ecdsa","hash":"sha224","id":""},"sha384":{"sign":"ecdsa","hash":"sha384","id":""},"sha512":{"sign":"ecdsa","hash":"sha512","id":""},"DSA-SHA":{"sign":"dsa","hash":"sha1","id":""},"DSA-SHA1":{"sign":"dsa","hash":"sha1","id":""},"DSA":{"sign":"dsa","hash":"sha1","id":""},"DSA-WITH-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-SHA224":{"sign":"dsa","hash":"sha224","id":""},"DSA-WITH-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-SHA256":{"sign":"dsa","hash":"sha256","id":""},"DSA-WITH-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-SHA384":{"sign":"dsa","hash":"sha384","id":""},"DSA-WITH-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-SHA512":{"sign":"dsa","hash":"sha512","id":""},"DSA-RIPEMD160":{"sign":"dsa","hash":"rmd160","id":""},"ripemd160WithRSA":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"RSA-RIPEMD160":{"sign":"rsa","hash":"rmd160","id":"3021300906052b2403020105000414"},"md5WithRSAEncryption":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"},"RSA-MD5":{"sign":"rsa","hash":"md5","id":"3020300c06082a864886f70d020505000410"}} + +/***/ }), +/* 272 */ +/***/ (function(module, exports, __webpack_require__) { + +exports.pbkdf2 = __webpack_require__(595) +exports.pbkdf2Sync = __webpack_require__(275) + + +/***/ }), +/* 273 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs + +function checkBuffer (buf, name) { + if (typeof buf !== 'string' && !Buffer.isBuffer(buf)) { + throw new TypeError(name + ' must be a buffer or string') + } +} + +module.exports = function (password, salt, iterations, keylen) { + checkBuffer(password, 'Password') + checkBuffer(salt, 'Salt') + + if (typeof iterations !== 'number') { + throw new TypeError('Iterations not a number') + } + + if (iterations < 0) { + throw new TypeError('Bad iterations') + } + + if (typeof keylen !== 'number') { + throw new TypeError('Key length not a number') + } + + if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */ + throw new TypeError('Bad key length') + } +} + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 274 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(process) {var defaultEncoding +/* istanbul ignore next */ +if (process.browser) { + defaultEncoding = 'utf-8' +} else { + var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10) + + defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary' +} +module.exports = defaultEncoding + +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(32))) + +/***/ }), +/* 275 */ +/***/ (function(module, exports, __webpack_require__) { + +var md5 = __webpack_require__(270) +var rmd160 = __webpack_require__(179) +var sha = __webpack_require__(180) + +var checkParameters = __webpack_require__(273) +var defaultEncoding = __webpack_require__(274) +var Buffer = __webpack_require__(4).Buffer +var ZEROS = Buffer.alloc(128) +var sizes = { + md5: 16, + sha1: 20, + sha224: 28, + sha256: 32, + sha384: 48, + sha512: 64, + rmd160: 20, + ripemd160: 20 +} + +function Hmac (alg, key, saltLen) { + var hash = getDigest(alg) + var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64 + + if (key.length > blocksize) { + key = hash(key) + } else if (key.length < blocksize) { + key = Buffer.concat([key, ZEROS], blocksize) + } + + var ipad = Buffer.allocUnsafe(blocksize + sizes[alg]) + var opad = Buffer.allocUnsafe(blocksize + sizes[alg]) + for (var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + + var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4) + ipad.copy(ipad1, 0, 0, blocksize) + this.ipad1 = ipad1 + this.ipad2 = ipad + this.opad = opad + this.alg = alg + this.blocksize = blocksize + this.hash = hash + this.size = sizes[alg] +} + +Hmac.prototype.run = function (data, ipad) { + data.copy(ipad, this.blocksize) + var h = this.hash(ipad) + h.copy(this.opad, this.blocksize) + return this.hash(this.opad) +} + +function getDigest (alg) { + function shaFunc (data) { + return sha(alg).update(data).digest() + } + + if (alg === 'rmd160' || alg === 'ripemd160') return rmd160 + if (alg === 'md5') return md5 + return shaFunc +} + +function pbkdf2 (password, salt, iterations, keylen, digest) { + checkParameters(password, salt, iterations, keylen) + + if (!Buffer.isBuffer(password)) password = Buffer.from(password, defaultEncoding) + if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, defaultEncoding) + + digest = digest || 'sha1' + + var hmac = new Hmac(digest, password, salt.length) + + var DK = Buffer.allocUnsafe(keylen) + var block1 = Buffer.allocUnsafe(salt.length + 4) + salt.copy(block1, 0, 0, salt.length) + + var destPos = 0 + var hLen = sizes[digest] + var l = Math.ceil(keylen / hLen) + + for (var i = 1; i <= l; i++) { + block1.writeUInt32BE(i, salt.length) + + var T = hmac.run(block1, hmac.ipad1) + var U = T + + for (var j = 1; j < iterations; j++) { + U = hmac.run(U, hmac.ipad2) + for (var k = 0; k < hLen; k++) T[k] ^= U[k] + } + + T.copy(DK, destPos) + destPos += hLen + } + + return DK +} + +module.exports = pbkdf2 + + +/***/ }), +/* 276 */ +/***/ (function(module, exports, __webpack_require__) { + +var xor = __webpack_require__(103) +var Buffer = __webpack_require__(4).Buffer +var incr32 = __webpack_require__(277) + +function getBlock (self) { + var out = self._cipher.encryptBlockRaw(self._prev) + incr32(self._prev) + return out +} + +var blockSize = 16 +exports.encrypt = function (self, chunk) { + var chunkNum = Math.ceil(chunk.length / blockSize) + var start = self._cache.length + self._cache = Buffer.concat([ + self._cache, + Buffer.allocUnsafe(chunkNum * blockSize) + ]) + for (var i = 0; i < chunkNum; i++) { + var out = getBlock(self) + var offset = start + i * blockSize + self._cache.writeUInt32BE(out[0], offset + 0) + self._cache.writeUInt32BE(out[1], offset + 4) + self._cache.writeUInt32BE(out[2], offset + 8) + self._cache.writeUInt32BE(out[3], offset + 12) + } + var pad = self._cache.slice(0, chunk.length) + self._cache = self._cache.slice(chunk.length) + return xor(chunk, pad) +} + + +/***/ }), +/* 277 */ +/***/ (function(module, exports) { + +function incr32 (iv) { + var len = iv.length + var item + while (len--) { + item = iv.readUInt8(len) + if (item === 255) { + iv.writeUInt8(0, len) + } else { + item++ + iv.writeUInt8(item, len) + break + } + } +} +module.exports = incr32 + + +/***/ }), +/* 278 */ +/***/ (function(module, exports) { + +module.exports = {"aes-128-ecb":{"cipher":"AES","key":128,"iv":0,"mode":"ECB","type":"block"},"aes-192-ecb":{"cipher":"AES","key":192,"iv":0,"mode":"ECB","type":"block"},"aes-256-ecb":{"cipher":"AES","key":256,"iv":0,"mode":"ECB","type":"block"},"aes-128-cbc":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes-192-cbc":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes-256-cbc":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes128":{"cipher":"AES","key":128,"iv":16,"mode":"CBC","type":"block"},"aes192":{"cipher":"AES","key":192,"iv":16,"mode":"CBC","type":"block"},"aes256":{"cipher":"AES","key":256,"iv":16,"mode":"CBC","type":"block"},"aes-128-cfb":{"cipher":"AES","key":128,"iv":16,"mode":"CFB","type":"stream"},"aes-192-cfb":{"cipher":"AES","key":192,"iv":16,"mode":"CFB","type":"stream"},"aes-256-cfb":{"cipher":"AES","key":256,"iv":16,"mode":"CFB","type":"stream"},"aes-128-cfb8":{"cipher":"AES","key":128,"iv":16,"mode":"CFB8","type":"stream"},"aes-192-cfb8":{"cipher":"AES","key":192,"iv":16,"mode":"CFB8","type":"stream"},"aes-256-cfb8":{"cipher":"AES","key":256,"iv":16,"mode":"CFB8","type":"stream"},"aes-128-cfb1":{"cipher":"AES","key":128,"iv":16,"mode":"CFB1","type":"stream"},"aes-192-cfb1":{"cipher":"AES","key":192,"iv":16,"mode":"CFB1","type":"stream"},"aes-256-cfb1":{"cipher":"AES","key":256,"iv":16,"mode":"CFB1","type":"stream"},"aes-128-ofb":{"cipher":"AES","key":128,"iv":16,"mode":"OFB","type":"stream"},"aes-192-ofb":{"cipher":"AES","key":192,"iv":16,"mode":"OFB","type":"stream"},"aes-256-ofb":{"cipher":"AES","key":256,"iv":16,"mode":"OFB","type":"stream"},"aes-128-ctr":{"cipher":"AES","key":128,"iv":16,"mode":"CTR","type":"stream"},"aes-192-ctr":{"cipher":"AES","key":192,"iv":16,"mode":"CTR","type":"stream"},"aes-256-ctr":{"cipher":"AES","key":256,"iv":16,"mode":"CTR","type":"stream"},"aes-128-gcm":{"cipher":"AES","key":128,"iv":12,"mode":"GCM","type":"auth"},"aes-192-gcm":{"cipher":"AES","key":192,"iv":12,"mode":"GCM","type":"auth"},"aes-256-gcm":{"cipher":"AES","key":256,"iv":12,"mode":"GCM","type":"auth"}} + +/***/ }), +/* 279 */ +/***/ (function(module, exports, __webpack_require__) { + +var aes = __webpack_require__(136) +var Buffer = __webpack_require__(4).Buffer +var Transform = __webpack_require__(70) +var inherits = __webpack_require__(7) +var GHASH = __webpack_require__(610) +var xor = __webpack_require__(103) +var incr32 = __webpack_require__(277) + +function xorTest (a, b) { + var out = 0 + if (a.length !== b.length) out++ + + var len = Math.min(a.length, b.length) + for (var i = 0; i < len; ++i) { + out += (a[i] ^ b[i]) + } + + return out +} + +function calcIv (self, iv, ck) { + if (iv.length === 12) { + self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])]) + return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])]) + } + var ghash = new GHASH(ck) + var len = iv.length + var toPad = len % 16 + ghash.update(iv) + if (toPad) { + toPad = 16 - toPad + ghash.update(Buffer.alloc(toPad, 0)) + } + ghash.update(Buffer.alloc(8, 0)) + var ivBits = len * 8 + var tail = Buffer.alloc(8) + tail.writeUIntBE(ivBits, 0, 8) + ghash.update(tail) + self._finID = ghash.state + var out = Buffer.from(self._finID) + incr32(out) + return out +} +function StreamCipher (mode, key, iv, decrypt) { + Transform.call(this) + + var h = Buffer.alloc(4, 0) + + this._cipher = new aes.AES(key) + var ck = this._cipher.encryptBlock(h) + this._ghash = new GHASH(ck) + iv = calcIv(this, iv, ck) + + this._prev = Buffer.from(iv) + this._cache = Buffer.allocUnsafe(0) + this._secCache = Buffer.allocUnsafe(0) + this._decrypt = decrypt + this._alen = 0 + this._len = 0 + this._mode = mode + + this._authTag = null + this._called = false +} + +inherits(StreamCipher, Transform) + +StreamCipher.prototype._update = function (chunk) { + if (!this._called && this._alen) { + var rump = 16 - (this._alen % 16) + if (rump < 16) { + rump = Buffer.alloc(rump, 0) + this._ghash.update(rump) + } + } + + this._called = true + var out = this._mode.encrypt(this, chunk) + if (this._decrypt) { + this._ghash.update(chunk) + } else { + this._ghash.update(out) + } + this._len += chunk.length + return out +} + +StreamCipher.prototype._final = function () { + if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data') + + var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID)) + if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data') + + this._authTag = tag + this._cipher.scrub() +} + +StreamCipher.prototype.getAuthTag = function getAuthTag () { + if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state') + + return this._authTag +} + +StreamCipher.prototype.setAuthTag = function setAuthTag (tag) { + if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state') + + this._authTag = tag +} + +StreamCipher.prototype.setAAD = function setAAD (buf) { + if (this._called) throw new Error('Attempting to set AAD in unsupported state') + + this._ghash.update(buf) + this._alen += buf.length +} + +module.exports = StreamCipher + + +/***/ }), +/* 280 */ +/***/ (function(module, exports, __webpack_require__) { + +var aes = __webpack_require__(136) +var Buffer = __webpack_require__(4).Buffer +var Transform = __webpack_require__(70) +var inherits = __webpack_require__(7) + +function StreamCipher (mode, key, iv, decrypt) { + Transform.call(this) + + this._cipher = new aes.AES(key) + this._prev = Buffer.from(iv) + this._cache = Buffer.allocUnsafe(0) + this._secCache = Buffer.allocUnsafe(0) + this._decrypt = decrypt + this._mode = mode +} + +inherits(StreamCipher, Transform) + +StreamCipher.prototype._update = function (chunk) { + return this._mode.encrypt(this, chunk, this._decrypt) +} + +StreamCipher.prototype._final = function () { + this._cipher.scrub() +} + +module.exports = StreamCipher + + +/***/ }), +/* 281 */ +/***/ (function(module, exports, __webpack_require__) { + +var randomBytes = __webpack_require__(83); +module.exports = findPrime; +findPrime.simpleSieve = simpleSieve; +findPrime.fermatTest = fermatTest; +var BN = __webpack_require__(22); +var TWENTYFOUR = new BN(24); +var MillerRabin = __webpack_require__(282); +var millerRabin = new MillerRabin(); +var ONE = new BN(1); +var TWO = new BN(2); +var FIVE = new BN(5); +var SIXTEEN = new BN(16); +var EIGHT = new BN(8); +var TEN = new BN(10); +var THREE = new BN(3); +var SEVEN = new BN(7); +var ELEVEN = new BN(11); +var FOUR = new BN(4); +var TWELVE = new BN(12); +var primes = null; + +function _getPrimes() { + if (primes !== null) + return primes; + + var limit = 0x100000; + var res = []; + res[0] = 2; + for (var i = 1, k = 3; k < limit; k += 2) { + var sqrt = Math.ceil(Math.sqrt(k)); + for (var j = 0; j < i && res[j] <= sqrt; j++) + if (k % res[j] === 0) + break; + + if (i !== j && res[j] <= sqrt) + continue; + + res[i++] = k; + } + primes = res; + return res; +} + +function simpleSieve(p) { + var primes = _getPrimes(); + + for (var i = 0; i < primes.length; i++) + if (p.modn(primes[i]) === 0) { + if (p.cmpn(primes[i]) === 0) { + return true; + } else { + return false; + } + } + + return true; +} + +function fermatTest(p) { + var red = BN.mont(p); + return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0; +} + +function findPrime(bits, gen) { + if (bits < 16) { + // this is what openssl does + if (gen === 2 || gen === 5) { + return new BN([0x8c, 0x7b]); + } else { + return new BN([0x8c, 0x27]); + } + } + gen = new BN(gen); + + var num, n2; + + while (true) { + num = new BN(randomBytes(Math.ceil(bits / 8))); + while (num.bitLength() > bits) { + num.ishrn(1); + } + if (num.isEven()) { + num.iadd(ONE); + } + if (!num.testn(1)) { + num.iadd(TWO); + } + if (!gen.cmp(TWO)) { + while (num.mod(TWENTYFOUR).cmp(ELEVEN)) { + num.iadd(FOUR); + } + } else if (!gen.cmp(FIVE)) { + while (num.mod(TEN).cmp(THREE)) { + num.iadd(FOUR); + } + } + n2 = num.shrn(1); + if (simpleSieve(n2) && simpleSieve(num) && + fermatTest(n2) && fermatTest(num) && + millerRabin.test(n2) && millerRabin.test(num)) { + return num; + } + } + +} + + +/***/ }), +/* 282 */ +/***/ (function(module, exports, __webpack_require__) { + +var bn = __webpack_require__(22); +var brorand = __webpack_require__(283); + +function MillerRabin(rand) { + this.rand = rand || new brorand.Rand(); +} +module.exports = MillerRabin; + +MillerRabin.create = function create(rand) { + return new MillerRabin(rand); +}; + +MillerRabin.prototype._randbelow = function _randbelow(n) { + var len = n.bitLength(); + var min_bytes = Math.ceil(len / 8); + + // Generage random bytes until a number less than n is found. + // This ensures that 0..n-1 have an equal probability of being selected. + do + var a = new bn(this.rand.generate(min_bytes)); + while (a.cmp(n) >= 0); + + return a; +}; + +MillerRabin.prototype._randrange = function _randrange(start, stop) { + // Generate a random number greater than or equal to start and less than stop. + var size = stop.sub(start); + return start.add(this._randbelow(size)); +}; + +MillerRabin.prototype.test = function test(n, k, cb) { + var len = n.bitLength(); + var red = bn.mont(n); + var rone = new bn(1).toRed(red); + + if (!k) + k = Math.max(1, (len / 48) | 0); + + // Find d and s, (n - 1) = (2 ^ s) * d; + var n1 = n.subn(1); + for (var s = 0; !n1.testn(s); s++) {} + var d = n.shrn(s); + + var rn1 = n1.toRed(red); + + var prime = true; + for (; k > 0; k--) { + var a = this._randrange(new bn(2), n1); + if (cb) + cb(a); + + var x = a.toRed(red).redPow(d); + if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) + continue; + + for (var i = 1; i < s; i++) { + x = x.redSqr(); + + if (x.cmp(rone) === 0) + return false; + if (x.cmp(rn1) === 0) + break; + } + + if (i === s) + return false; + } + + return prime; +}; + +MillerRabin.prototype.getDivisor = function getDivisor(n, k) { + var len = n.bitLength(); + var red = bn.mont(n); + var rone = new bn(1).toRed(red); + + if (!k) + k = Math.max(1, (len / 48) | 0); + + // Find d and s, (n - 1) = (2 ^ s) * d; + var n1 = n.subn(1); + for (var s = 0; !n1.testn(s); s++) {} + var d = n.shrn(s); + + var rn1 = n1.toRed(red); + + for (; k > 0; k--) { + var a = this._randrange(new bn(2), n1); + + var g = n.gcd(a); + if (g.cmpn(1) !== 0) + return g; + + var x = a.toRed(red).redPow(d); + if (x.cmp(rone) === 0 || x.cmp(rn1) === 0) + continue; + + for (var i = 1; i < s; i++) { + x = x.redSqr(); + + if (x.cmp(rone) === 0) + return x.fromRed().subn(1).gcd(n); + if (x.cmp(rn1) === 0) + break; + } + + if (i === s) { + x = x.redSqr(); + return x.fromRed().subn(1).gcd(n); + } + } + + return false; +}; + + +/***/ }), +/* 283 */ +/***/ (function(module, exports, __webpack_require__) { + +var r; + +module.exports = function rand(len) { + if (!r) + r = new Rand(null); + + return r.generate(len); +}; + +function Rand(rand) { + this.rand = rand; +} +module.exports.Rand = Rand; + +Rand.prototype.generate = function generate(len) { + return this._rand(len); +}; + +// Emulate crypto API using randy +Rand.prototype._rand = function _rand(n) { + if (this.rand.getBytes) + return this.rand.getBytes(n); + + var res = new Uint8Array(n); + for (var i = 0; i < res.length; i++) + res[i] = this.rand.getByte(); + return res; +}; + +if (typeof self === 'object') { + if (self.crypto && self.crypto.getRandomValues) { + // Modern browsers + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.crypto.getRandomValues(arr); + return arr; + }; + } else if (self.msCrypto && self.msCrypto.getRandomValues) { + // IE + Rand.prototype._rand = function _rand(n) { + var arr = new Uint8Array(n); + self.msCrypto.getRandomValues(arr); + return arr; + }; + + // Safari's WebWorkers do not have `crypto` + } else if (typeof window === 'object') { + // Old junk + Rand.prototype._rand = function() { + throw new Error('Not implemented yet'); + }; + } +} else { + // Node.js or Web worker with no crypto support + try { + var crypto = __webpack_require__(615); + if (typeof crypto.randomBytes !== 'function') + throw new Error('Not supported'); + + Rand.prototype._rand = function _rand(n) { + return crypto.randomBytes(n); + }; + } catch (e) { + } +} + + +/***/ }), +/* 284 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = exports; + +function toArray(msg, enc) { + if (Array.isArray(msg)) + return msg.slice(); + if (!msg) + return []; + var res = []; + if (typeof msg !== 'string') { + for (var i = 0; i < msg.length; i++) + res[i] = msg[i] | 0; + return res; + } + if (enc === 'hex') { + msg = msg.replace(/[^a-z0-9]+/ig, ''); + if (msg.length % 2 !== 0) + msg = '0' + msg; + for (var i = 0; i < msg.length; i += 2) + res.push(parseInt(msg[i] + msg[i + 1], 16)); + } else { + for (var i = 0; i < msg.length; i++) { + var c = msg.charCodeAt(i); + var hi = c >> 8; + var lo = c & 0xff; + if (hi) + res.push(hi, lo); + else + res.push(lo); + } + } + return res; +} +utils.toArray = toArray; + +function zero2(word) { + if (word.length === 1) + return '0' + word; + else + return word; +} +utils.zero2 = zero2; + +function toHex(msg) { + var res = ''; + for (var i = 0; i < msg.length; i++) + res += zero2(msg[i].toString(16)); + return res; +} +utils.toHex = toHex; + +utils.encode = function encode(arr, enc) { + if (enc === 'hex') + return toHex(arr); + else + return arr; +}; + + +/***/ }), +/* 285 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(59); +var rotr32 = utils.rotr32; + +function ft_1(s, x, y, z) { + if (s === 0) + return ch32(x, y, z); + if (s === 1 || s === 3) + return p32(x, y, z); + if (s === 2) + return maj32(x, y, z); +} +exports.ft_1 = ft_1; + +function ch32(x, y, z) { + return (x & y) ^ ((~x) & z); +} +exports.ch32 = ch32; + +function maj32(x, y, z) { + return (x & y) ^ (x & z) ^ (y & z); +} +exports.maj32 = maj32; + +function p32(x, y, z) { + return x ^ y ^ z; +} +exports.p32 = p32; + +function s0_256(x) { + return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22); +} +exports.s0_256 = s0_256; + +function s1_256(x) { + return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25); +} +exports.s1_256 = s1_256; + +function g0_256(x) { + return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3); +} +exports.g0_256 = g0_256; + +function g1_256(x) { + return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10); +} +exports.g1_256 = g1_256; + + +/***/ }), +/* 286 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(59); +var common = __webpack_require__(104); +var shaCommon = __webpack_require__(285); +var assert = __webpack_require__(47); + +var sum32 = utils.sum32; +var sum32_4 = utils.sum32_4; +var sum32_5 = utils.sum32_5; +var ch32 = shaCommon.ch32; +var maj32 = shaCommon.maj32; +var s0_256 = shaCommon.s0_256; +var s1_256 = shaCommon.s1_256; +var g0_256 = shaCommon.g0_256; +var g1_256 = shaCommon.g1_256; + +var BlockHash = common.BlockHash; + +var sha256_K = [ + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +]; + +function SHA256() { + if (!(this instanceof SHA256)) + return new SHA256(); + + BlockHash.call(this); + this.h = [ + 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 + ]; + this.k = sha256_K; + this.W = new Array(64); +} +utils.inherits(SHA256, BlockHash); +module.exports = SHA256; + +SHA256.blockSize = 512; +SHA256.outSize = 256; +SHA256.hmacStrength = 192; +SHA256.padLength = 64; + +SHA256.prototype._update = function _update(msg, start) { + var W = this.W; + + for (var i = 0; i < 16; i++) + W[i] = msg[start + i]; + for (; i < W.length; i++) + W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]); + + var a = this.h[0]; + var b = this.h[1]; + var c = this.h[2]; + var d = this.h[3]; + var e = this.h[4]; + var f = this.h[5]; + var g = this.h[6]; + var h = this.h[7]; + + assert(this.k.length === W.length); + for (i = 0; i < W.length; i++) { + var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]); + var T2 = sum32(s0_256(a), maj32(a, b, c)); + h = g; + g = f; + f = e; + e = sum32(d, T1); + d = c; + c = b; + b = a; + a = sum32(T1, T2); + } + + this.h[0] = sum32(this.h[0], a); + this.h[1] = sum32(this.h[1], b); + this.h[2] = sum32(this.h[2], c); + this.h[3] = sum32(this.h[3], d); + this.h[4] = sum32(this.h[4], e); + this.h[5] = sum32(this.h[5], f); + this.h[6] = sum32(this.h[6], g); + this.h[7] = sum32(this.h[7], h); +}; + +SHA256.prototype._digest = function digest(enc) { + if (enc === 'hex') + return utils.toHex32(this.h, 'big'); + else + return utils.split32(this.h, 'big'); +}; + + +/***/ }), +/* 287 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(59); +var common = __webpack_require__(104); +var assert = __webpack_require__(47); + +var rotr64_hi = utils.rotr64_hi; +var rotr64_lo = utils.rotr64_lo; +var shr64_hi = utils.shr64_hi; +var shr64_lo = utils.shr64_lo; +var sum64 = utils.sum64; +var sum64_hi = utils.sum64_hi; +var sum64_lo = utils.sum64_lo; +var sum64_4_hi = utils.sum64_4_hi; +var sum64_4_lo = utils.sum64_4_lo; +var sum64_5_hi = utils.sum64_5_hi; +var sum64_5_lo = utils.sum64_5_lo; + +var BlockHash = common.BlockHash; + +var sha512_K = [ + 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, + 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, + 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019, + 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, + 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe, + 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, + 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1, + 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, + 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3, + 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, + 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, + 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5, + 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, + 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4, + 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, + 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70, + 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, + 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df, + 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, + 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, + 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001, + 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, + 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910, + 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, + 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53, + 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, + 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb, + 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, + 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, + 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, + 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, + 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b, + 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, + 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178, + 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, + 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b, + 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, + 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, + 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a, + 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817 +]; + +function SHA512() { + if (!(this instanceof SHA512)) + return new SHA512(); + + BlockHash.call(this); + this.h = [ + 0x6a09e667, 0xf3bcc908, + 0xbb67ae85, 0x84caa73b, + 0x3c6ef372, 0xfe94f82b, + 0xa54ff53a, 0x5f1d36f1, + 0x510e527f, 0xade682d1, + 0x9b05688c, 0x2b3e6c1f, + 0x1f83d9ab, 0xfb41bd6b, + 0x5be0cd19, 0x137e2179 ]; + this.k = sha512_K; + this.W = new Array(160); +} +utils.inherits(SHA512, BlockHash); +module.exports = SHA512; + +SHA512.blockSize = 1024; +SHA512.outSize = 512; +SHA512.hmacStrength = 192; +SHA512.padLength = 128; + +SHA512.prototype._prepareBlock = function _prepareBlock(msg, start) { + var W = this.W; + + // 32 x 32bit words + for (var i = 0; i < 32; i++) + W[i] = msg[start + i]; + for (; i < W.length; i += 2) { + var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2 + var c0_lo = g1_512_lo(W[i - 4], W[i - 3]); + var c1_hi = W[i - 14]; // i - 7 + var c1_lo = W[i - 13]; + var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15 + var c2_lo = g0_512_lo(W[i - 30], W[i - 29]); + var c3_hi = W[i - 32]; // i - 16 + var c3_lo = W[i - 31]; + + W[i] = sum64_4_hi( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo); + W[i + 1] = sum64_4_lo( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo); + } +}; + +SHA512.prototype._update = function _update(msg, start) { + this._prepareBlock(msg, start); + + var W = this.W; + + var ah = this.h[0]; + var al = this.h[1]; + var bh = this.h[2]; + var bl = this.h[3]; + var ch = this.h[4]; + var cl = this.h[5]; + var dh = this.h[6]; + var dl = this.h[7]; + var eh = this.h[8]; + var el = this.h[9]; + var fh = this.h[10]; + var fl = this.h[11]; + var gh = this.h[12]; + var gl = this.h[13]; + var hh = this.h[14]; + var hl = this.h[15]; + + assert(this.k.length === W.length); + for (var i = 0; i < W.length; i += 2) { + var c0_hi = hh; + var c0_lo = hl; + var c1_hi = s1_512_hi(eh, el); + var c1_lo = s1_512_lo(eh, el); + var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl); + var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl); + var c3_hi = this.k[i]; + var c3_lo = this.k[i + 1]; + var c4_hi = W[i]; + var c4_lo = W[i + 1]; + + var T1_hi = sum64_5_hi( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo, + c4_hi, c4_lo); + var T1_lo = sum64_5_lo( + c0_hi, c0_lo, + c1_hi, c1_lo, + c2_hi, c2_lo, + c3_hi, c3_lo, + c4_hi, c4_lo); + + c0_hi = s0_512_hi(ah, al); + c0_lo = s0_512_lo(ah, al); + c1_hi = maj64_hi(ah, al, bh, bl, ch, cl); + c1_lo = maj64_lo(ah, al, bh, bl, ch, cl); + + var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo); + var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo); + + hh = gh; + hl = gl; + + gh = fh; + gl = fl; + + fh = eh; + fl = el; + + eh = sum64_hi(dh, dl, T1_hi, T1_lo); + el = sum64_lo(dl, dl, T1_hi, T1_lo); + + dh = ch; + dl = cl; + + ch = bh; + cl = bl; + + bh = ah; + bl = al; + + ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo); + al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo); + } + + sum64(this.h, 0, ah, al); + sum64(this.h, 2, bh, bl); + sum64(this.h, 4, ch, cl); + sum64(this.h, 6, dh, dl); + sum64(this.h, 8, eh, el); + sum64(this.h, 10, fh, fl); + sum64(this.h, 12, gh, gl); + sum64(this.h, 14, hh, hl); +}; + +SHA512.prototype._digest = function digest(enc) { + if (enc === 'hex') + return utils.toHex32(this.h, 'big'); + else + return utils.split32(this.h, 'big'); +}; + +function ch64_hi(xh, xl, yh, yl, zh) { + var r = (xh & yh) ^ ((~xh) & zh); + if (r < 0) + r += 0x100000000; + return r; +} + +function ch64_lo(xh, xl, yh, yl, zh, zl) { + var r = (xl & yl) ^ ((~xl) & zl); + if (r < 0) + r += 0x100000000; + return r; +} + +function maj64_hi(xh, xl, yh, yl, zh) { + var r = (xh & yh) ^ (xh & zh) ^ (yh & zh); + if (r < 0) + r += 0x100000000; + return r; +} + +function maj64_lo(xh, xl, yh, yl, zh, zl) { + var r = (xl & yl) ^ (xl & zl) ^ (yl & zl); + if (r < 0) + r += 0x100000000; + return r; +} + +function s0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 28); + var c1_hi = rotr64_hi(xl, xh, 2); // 34 + var c2_hi = rotr64_hi(xl, xh, 7); // 39 + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function s0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 28); + var c1_lo = rotr64_lo(xl, xh, 2); // 34 + var c2_lo = rotr64_lo(xl, xh, 7); // 39 + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + +function s1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 14); + var c1_hi = rotr64_hi(xh, xl, 18); + var c2_hi = rotr64_hi(xl, xh, 9); // 41 + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function s1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 14); + var c1_lo = rotr64_lo(xh, xl, 18); + var c2_lo = rotr64_lo(xl, xh, 9); // 41 + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + +function g0_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 1); + var c1_hi = rotr64_hi(xh, xl, 8); + var c2_hi = shr64_hi(xh, xl, 7); + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function g0_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 1); + var c1_lo = rotr64_lo(xh, xl, 8); + var c2_lo = shr64_lo(xh, xl, 7); + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + +function g1_512_hi(xh, xl) { + var c0_hi = rotr64_hi(xh, xl, 19); + var c1_hi = rotr64_hi(xl, xh, 29); // 61 + var c2_hi = shr64_hi(xh, xl, 6); + + var r = c0_hi ^ c1_hi ^ c2_hi; + if (r < 0) + r += 0x100000000; + return r; +} + +function g1_512_lo(xh, xl) { + var c0_lo = rotr64_lo(xh, xl, 19); + var c1_lo = rotr64_lo(xl, xh, 29); // 61 + var c2_lo = shr64_lo(xh, xl, 6); + + var r = c0_lo ^ c1_lo ^ c2_lo; + if (r < 0) + r += 0x100000000; + return r; +} + + +/***/ }), +/* 288 */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(7); +var Reporter = __webpack_require__(106).Reporter; +var Buffer = __webpack_require__(1).Buffer; + +function DecoderBuffer(base, options) { + Reporter.call(this, options); + if (!Buffer.isBuffer(base)) { + this.error('Input not Buffer'); + return; + } + + this.base = base; + this.offset = 0; + this.length = base.length; +} +inherits(DecoderBuffer, Reporter); +exports.DecoderBuffer = DecoderBuffer; + +DecoderBuffer.prototype.save = function save() { + return { offset: this.offset, reporter: Reporter.prototype.save.call(this) }; +}; + +DecoderBuffer.prototype.restore = function restore(save) { + // Return skipped data + var res = new DecoderBuffer(this.base); + res.offset = save.offset; + res.length = this.offset; + + this.offset = save.offset; + Reporter.prototype.restore.call(this, save.reporter); + + return res; +}; + +DecoderBuffer.prototype.isEmpty = function isEmpty() { + return this.offset === this.length; +}; + +DecoderBuffer.prototype.readUInt8 = function readUInt8(fail) { + if (this.offset + 1 <= this.length) + return this.base.readUInt8(this.offset++, true); + else + return this.error(fail || 'DecoderBuffer overrun'); +} + +DecoderBuffer.prototype.skip = function skip(bytes, fail) { + if (!(this.offset + bytes <= this.length)) + return this.error(fail || 'DecoderBuffer overrun'); + + var res = new DecoderBuffer(this.base); + + // Share reporter state + res._reporterState = this._reporterState; + + res.offset = this.offset; + res.length = this.offset + bytes; + this.offset += bytes; + return res; +} + +DecoderBuffer.prototype.raw = function raw(save) { + return this.base.slice(save ? save.offset : this.offset, this.length); +} + +function EncoderBuffer(value, reporter) { + if (Array.isArray(value)) { + this.length = 0; + this.value = value.map(function(item) { + if (!(item instanceof EncoderBuffer)) + item = new EncoderBuffer(item, reporter); + this.length += item.length; + return item; + }, this); + } else if (typeof value === 'number') { + if (!(0 <= value && value <= 0xff)) + return reporter.error('non-byte EncoderBuffer value'); + this.value = value; + this.length = 1; + } else if (typeof value === 'string') { + this.value = value; + this.length = Buffer.byteLength(value); + } else if (Buffer.isBuffer(value)) { + this.value = value; + this.length = value.length; + } else { + return reporter.error('Unsupported type: ' + typeof value); + } +} +exports.EncoderBuffer = EncoderBuffer; + +EncoderBuffer.prototype.join = function join(out, offset) { + if (!out) + out = new Buffer(this.length); + if (!offset) + offset = 0; + + if (this.length === 0) + return out; + + if (Array.isArray(this.value)) { + this.value.forEach(function(item) { + item.join(out, offset); + offset += item.length; + }); + } else { + if (typeof this.value === 'number') + out[offset] = this.value; + else if (typeof this.value === 'string') + out.write(this.value, offset); + else if (Buffer.isBuffer(this.value)) + this.value.copy(out, offset); + offset += this.length; + } + + return out; +}; + + +/***/ }), +/* 289 */ +/***/ (function(module, exports, __webpack_require__) { + +var constants = exports; + +// Helper +constants._reverse = function reverse(map) { + var res = {}; + + Object.keys(map).forEach(function(key) { + // Convert key to integer if it is stringified + if ((key | 0) == key) + key = key | 0; + + var value = map[key]; + res[value] = key; + }); + + return res; +}; + +constants.der = __webpack_require__(646); + + +/***/ }), +/* 290 */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(7); + +var asn1 = __webpack_require__(105); +var base = asn1.base; +var bignum = asn1.bignum; + +// Import DER constants +var der = asn1.constants.der; + +function DERDecoder(entity) { + this.enc = 'der'; + this.name = entity.name; + this.entity = entity; + + // Construct base tree + this.tree = new DERNode(); + this.tree._init(entity.body); +}; +module.exports = DERDecoder; + +DERDecoder.prototype.decode = function decode(data, options) { + if (!(data instanceof base.DecoderBuffer)) + data = new base.DecoderBuffer(data, options); + + return this.tree._decode(data, options); +}; + +// Tree methods + +function DERNode(parent) { + base.Node.call(this, 'der', parent); +} +inherits(DERNode, base.Node); + +DERNode.prototype._peekTag = function peekTag(buffer, tag, any) { + if (buffer.isEmpty()) + return false; + + var state = buffer.save(); + var decodedTag = derDecodeTag(buffer, 'Failed to peek tag: "' + tag + '"'); + if (buffer.isError(decodedTag)) + return decodedTag; + + buffer.restore(state); + + return decodedTag.tag === tag || decodedTag.tagStr === tag || + (decodedTag.tagStr + 'of') === tag || any; +}; + +DERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) { + var decodedTag = derDecodeTag(buffer, + 'Failed to decode tag of "' + tag + '"'); + if (buffer.isError(decodedTag)) + return decodedTag; + + var len = derDecodeLen(buffer, + decodedTag.primitive, + 'Failed to get length of "' + tag + '"'); + + // Failure + if (buffer.isError(len)) + return len; + + if (!any && + decodedTag.tag !== tag && + decodedTag.tagStr !== tag && + decodedTag.tagStr + 'of' !== tag) { + return buffer.error('Failed to match tag: "' + tag + '"'); + } + + if (decodedTag.primitive || len !== null) + return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); + + // Indefinite length... find END tag + var state = buffer.save(); + var res = this._skipUntilEnd( + buffer, + 'Failed to skip indefinite length body: "' + this.tag + '"'); + if (buffer.isError(res)) + return res; + + len = buffer.offset - state.offset; + buffer.restore(state); + return buffer.skip(len, 'Failed to match body of: "' + tag + '"'); +}; + +DERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) { + while (true) { + var tag = derDecodeTag(buffer, fail); + if (buffer.isError(tag)) + return tag; + var len = derDecodeLen(buffer, tag.primitive, fail); + if (buffer.isError(len)) + return len; + + var res; + if (tag.primitive || len !== null) + res = buffer.skip(len) + else + res = this._skipUntilEnd(buffer, fail); + + // Failure + if (buffer.isError(res)) + return res; + + if (tag.tagStr === 'end') + break; + } +}; + +DERNode.prototype._decodeList = function decodeList(buffer, tag, decoder, + options) { + var result = []; + while (!buffer.isEmpty()) { + var possibleEnd = this._peekTag(buffer, 'end'); + if (buffer.isError(possibleEnd)) + return possibleEnd; + + var res = decoder.decode(buffer, 'der', options); + if (buffer.isError(res) && possibleEnd) + break; + result.push(res); + } + return result; +}; + +DERNode.prototype._decodeStr = function decodeStr(buffer, tag) { + if (tag === 'bitstr') { + var unused = buffer.readUInt8(); + if (buffer.isError(unused)) + return unused; + return { unused: unused, data: buffer.raw() }; + } else if (tag === 'bmpstr') { + var raw = buffer.raw(); + if (raw.length % 2 === 1) + return buffer.error('Decoding of string type: bmpstr length mismatch'); + + var str = ''; + for (var i = 0; i < raw.length / 2; i++) { + str += String.fromCharCode(raw.readUInt16BE(i * 2)); + } + return str; + } else if (tag === 'numstr') { + var numstr = buffer.raw().toString('ascii'); + if (!this._isNumstr(numstr)) { + return buffer.error('Decoding of string type: ' + + 'numstr unsupported characters'); + } + return numstr; + } else if (tag === 'octstr') { + return buffer.raw(); + } else if (tag === 'objDesc') { + return buffer.raw(); + } else if (tag === 'printstr') { + var printstr = buffer.raw().toString('ascii'); + if (!this._isPrintstr(printstr)) { + return buffer.error('Decoding of string type: ' + + 'printstr unsupported characters'); + } + return printstr; + } else if (/str$/.test(tag)) { + return buffer.raw().toString(); + } else { + return buffer.error('Decoding of string type: ' + tag + ' unsupported'); + } +}; + +DERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) { + var result; + var identifiers = []; + var ident = 0; + while (!buffer.isEmpty()) { + var subident = buffer.readUInt8(); + ident <<= 7; + ident |= subident & 0x7f; + if ((subident & 0x80) === 0) { + identifiers.push(ident); + ident = 0; + } + } + if (subident & 0x80) + identifiers.push(ident); + + var first = (identifiers[0] / 40) | 0; + var second = identifiers[0] % 40; + + if (relative) + result = identifiers; + else + result = [first, second].concat(identifiers.slice(1)); + + if (values) { + var tmp = values[result.join(' ')]; + if (tmp === undefined) + tmp = values[result.join('.')]; + if (tmp !== undefined) + result = tmp; + } + + return result; +}; + +DERNode.prototype._decodeTime = function decodeTime(buffer, tag) { + var str = buffer.raw().toString(); + if (tag === 'gentime') { + var year = str.slice(0, 4) | 0; + var mon = str.slice(4, 6) | 0; + var day = str.slice(6, 8) | 0; + var hour = str.slice(8, 10) | 0; + var min = str.slice(10, 12) | 0; + var sec = str.slice(12, 14) | 0; + } else if (tag === 'utctime') { + var year = str.slice(0, 2) | 0; + var mon = str.slice(2, 4) | 0; + var day = str.slice(4, 6) | 0; + var hour = str.slice(6, 8) | 0; + var min = str.slice(8, 10) | 0; + var sec = str.slice(10, 12) | 0; + if (year < 70) + year = 2000 + year; + else + year = 1900 + year; + } else { + return buffer.error('Decoding ' + tag + ' time is not supported yet'); + } + + return Date.UTC(year, mon - 1, day, hour, min, sec, 0); +}; + +DERNode.prototype._decodeNull = function decodeNull(buffer) { + return null; +}; + +DERNode.prototype._decodeBool = function decodeBool(buffer) { + var res = buffer.readUInt8(); + if (buffer.isError(res)) + return res; + else + return res !== 0; +}; + +DERNode.prototype._decodeInt = function decodeInt(buffer, values) { + // Bigint, return as it is (assume big endian) + var raw = buffer.raw(); + var res = new bignum(raw); + + if (values) + res = values[res.toString(10)] || res; + + return res; +}; + +DERNode.prototype._use = function use(entity, obj) { + if (typeof entity === 'function') + entity = entity(obj); + return entity._getDecoder('der').tree; +}; + +// Utility methods + +function derDecodeTag(buf, fail) { + var tag = buf.readUInt8(fail); + if (buf.isError(tag)) + return tag; + + var cls = der.tagClass[tag >> 6]; + var primitive = (tag & 0x20) === 0; + + // Multi-octet tag - load + if ((tag & 0x1f) === 0x1f) { + var oct = tag; + tag = 0; + while ((oct & 0x80) === 0x80) { + oct = buf.readUInt8(fail); + if (buf.isError(oct)) + return oct; + + tag <<= 7; + tag |= oct & 0x7f; + } + } else { + tag &= 0x1f; + } + var tagStr = der.tag[tag]; + + return { + cls: cls, + primitive: primitive, + tag: tag, + tagStr: tagStr + }; +} + +function derDecodeLen(buf, primitive, fail) { + var len = buf.readUInt8(fail); + if (buf.isError(len)) + return len; + + // Indefinite form + if (!primitive && len === 0x80) + return null; + + // Definite form + if ((len & 0x80) === 0) { + // Short form + return len; + } + + // Long form + var num = len & 0x7f; + if (num > 4) + return buf.error('length octect is too long'); + + len = 0; + for (var i = 0; i < num; i++) { + len <<= 8; + var j = buf.readUInt8(fail); + if (buf.isError(j)) + return j; + len |= j; + } + + return len; +} + + +/***/ }), +/* 291 */ +/***/ (function(module, exports, __webpack_require__) { + +var inherits = __webpack_require__(7); +var Buffer = __webpack_require__(1).Buffer; + +var asn1 = __webpack_require__(105); +var base = asn1.base; + +// Import DER constants +var der = asn1.constants.der; + +function DEREncoder(entity) { + this.enc = 'der'; + this.name = entity.name; + this.entity = entity; + + // Construct base tree + this.tree = new DERNode(); + this.tree._init(entity.body); +}; +module.exports = DEREncoder; + +DEREncoder.prototype.encode = function encode(data, reporter) { + return this.tree._encode(data, reporter).join(); +}; + +// Tree methods + +function DERNode(parent) { + base.Node.call(this, 'der', parent); +} +inherits(DERNode, base.Node); + +DERNode.prototype._encodeComposite = function encodeComposite(tag, + primitive, + cls, + content) { + var encodedTag = encodeTag(tag, primitive, cls, this.reporter); + + // Short form + if (content.length < 0x80) { + var header = new Buffer(2); + header[0] = encodedTag; + header[1] = content.length; + return this._createEncoderBuffer([ header, content ]); + } + + // Long form + // Count octets required to store length + var lenOctets = 1; + for (var i = content.length; i >= 0x100; i >>= 8) + lenOctets++; + + var header = new Buffer(1 + 1 + lenOctets); + header[0] = encodedTag; + header[1] = 0x80 | lenOctets; + + for (var i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8) + header[i] = j & 0xff; + + return this._createEncoderBuffer([ header, content ]); +}; + +DERNode.prototype._encodeStr = function encodeStr(str, tag) { + if (tag === 'bitstr') { + return this._createEncoderBuffer([ str.unused | 0, str.data ]); + } else if (tag === 'bmpstr') { + var buf = new Buffer(str.length * 2); + for (var i = 0; i < str.length; i++) { + buf.writeUInt16BE(str.charCodeAt(i), i * 2); + } + return this._createEncoderBuffer(buf); + } else if (tag === 'numstr') { + if (!this._isNumstr(str)) { + return this.reporter.error('Encoding of string type: numstr supports ' + + 'only digits and space'); + } + return this._createEncoderBuffer(str); + } else if (tag === 'printstr') { + if (!this._isPrintstr(str)) { + return this.reporter.error('Encoding of string type: printstr supports ' + + 'only latin upper and lower case letters, ' + + 'digits, space, apostrophe, left and rigth ' + + 'parenthesis, plus sign, comma, hyphen, ' + + 'dot, slash, colon, equal sign, ' + + 'question mark'); + } + return this._createEncoderBuffer(str); + } else if (/str$/.test(tag)) { + return this._createEncoderBuffer(str); + } else if (tag === 'objDesc') { + return this._createEncoderBuffer(str); + } else { + return this.reporter.error('Encoding of string type: ' + tag + + ' unsupported'); + } +}; + +DERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) { + if (typeof id === 'string') { + if (!values) + return this.reporter.error('string objid given, but no values map found'); + if (!values.hasOwnProperty(id)) + return this.reporter.error('objid not found in values map'); + id = values[id].split(/[\s\.]+/g); + for (var i = 0; i < id.length; i++) + id[i] |= 0; + } else if (Array.isArray(id)) { + id = id.slice(); + for (var i = 0; i < id.length; i++) + id[i] |= 0; + } + + if (!Array.isArray(id)) { + return this.reporter.error('objid() should be either array or string, ' + + 'got: ' + JSON.stringify(id)); + } + + if (!relative) { + if (id[1] >= 40) + return this.reporter.error('Second objid identifier OOB'); + id.splice(0, 2, id[0] * 40 + id[1]); + } + + // Count number of octets + var size = 0; + for (var i = 0; i < id.length; i++) { + var ident = id[i]; + for (size++; ident >= 0x80; ident >>= 7) + size++; + } + + var objid = new Buffer(size); + var offset = objid.length - 1; + for (var i = id.length - 1; i >= 0; i--) { + var ident = id[i]; + objid[offset--] = ident & 0x7f; + while ((ident >>= 7) > 0) + objid[offset--] = 0x80 | (ident & 0x7f); + } + + return this._createEncoderBuffer(objid); +}; + +function two(num) { + if (num < 10) + return '0' + num; + else + return num; +} + +DERNode.prototype._encodeTime = function encodeTime(time, tag) { + var str; + var date = new Date(time); + + if (tag === 'gentime') { + str = [ + two(date.getFullYear()), + two(date.getUTCMonth() + 1), + two(date.getUTCDate()), + two(date.getUTCHours()), + two(date.getUTCMinutes()), + two(date.getUTCSeconds()), + 'Z' + ].join(''); + } else if (tag === 'utctime') { + str = [ + two(date.getFullYear() % 100), + two(date.getUTCMonth() + 1), + two(date.getUTCDate()), + two(date.getUTCHours()), + two(date.getUTCMinutes()), + two(date.getUTCSeconds()), + 'Z' + ].join(''); + } else { + this.reporter.error('Encoding ' + tag + ' time is not supported yet'); + } + + return this._encodeStr(str, 'octstr'); +}; + +DERNode.prototype._encodeNull = function encodeNull() { + return this._createEncoderBuffer(''); +}; + +DERNode.prototype._encodeInt = function encodeInt(num, values) { + if (typeof num === 'string') { + if (!values) + return this.reporter.error('String int or enum given, but no values map'); + if (!values.hasOwnProperty(num)) { + return this.reporter.error('Values map doesn\'t contain: ' + + JSON.stringify(num)); + } + num = values[num]; + } + + // Bignum, assume big endian + if (typeof num !== 'number' && !Buffer.isBuffer(num)) { + var numArray = num.toArray(); + if (!num.sign && numArray[0] & 0x80) { + numArray.unshift(0); + } + num = new Buffer(numArray); + } + + if (Buffer.isBuffer(num)) { + var size = num.length; + if (num.length === 0) + size++; + + var out = new Buffer(size); + num.copy(out); + if (num.length === 0) + out[0] = 0 + return this._createEncoderBuffer(out); + } + + if (num < 0x80) + return this._createEncoderBuffer(num); + + if (num < 0x100) + return this._createEncoderBuffer([0, num]); + + var size = 1; + for (var i = num; i >= 0x100; i >>= 8) + size++; + + var out = new Array(size); + for (var i = out.length - 1; i >= 0; i--) { + out[i] = num & 0xff; + num >>= 8; + } + if(out[0] & 0x80) { + out.unshift(0); + } + + return this._createEncoderBuffer(new Buffer(out)); +}; + +DERNode.prototype._encodeBool = function encodeBool(value) { + return this._createEncoderBuffer(value ? 0xff : 0); +}; + +DERNode.prototype._use = function use(entity, obj) { + if (typeof entity === 'function') + entity = entity(obj); + return entity._getEncoder('der').tree; +}; + +DERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) { + var state = this._baseState; + var i; + if (state['default'] === null) + return false; + + var data = dataBuffer.join(); + if (state.defaultBuffer === undefined) + state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join(); + + if (data.length !== state.defaultBuffer.length) + return false; + + for (i=0; i < data.length; i++) + if (data[i] !== state.defaultBuffer[i]) + return false; + + return true; +}; + +// Utility methods + +function encodeTag(tag, primitive, cls, reporter) { + var res; + + if (tag === 'seqof') + tag = 'seq'; + else if (tag === 'setof') + tag = 'set'; + + if (der.tagByName.hasOwnProperty(tag)) + res = der.tagByName[tag]; + else if (typeof tag === 'number' && (tag | 0) === tag) + res = tag; + else + return reporter.error('Unknown tag: ' + tag); + + if (res >= 0x1f) + return reporter.error('Multi-octet tag encoding unsupported'); + + if (!primitive) + res |= 0x20; + + res |= (der.tagClassByName[cls || 'universal'] << 6); + + return res; +} + + +/***/ }), +/* 292 */ +/***/ (function(module, exports) { + +module.exports = {"1.3.132.0.10":"secp256k1","1.3.132.0.33":"p224","1.2.840.10045.3.1.1":"p192","1.2.840.10045.3.1.7":"p256","1.3.132.0.34":"p384","1.3.132.0.35":"p521"} + +/***/ }), +/* 293 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var createHash = __webpack_require__(84); +module.exports = function (seed, len) { + var t = new Buffer(''); + var i = 0, c; + while (t.length < len) { + c = i2ops(i++); + t = Buffer.concat([t, createHash('sha1').update(seed).update(c).digest()]); + } + return t.slice(0, len); +}; + +function i2ops(c) { + var out = new Buffer(4); + out.writeUInt32BE(c,0); + return out; +} +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 294 */ +/***/ (function(module, exports) { + +module.exports = function xor(a, b) { + var len = a.length; + var i = -1; + while (++i < len) { + a[i] ^= b[i]; + } + return a +}; + +/***/ }), +/* 295 */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(Buffer) {var bn = __webpack_require__(22); +function withPublic(paddedMsg, key) { + return new Buffer(paddedMsg + .toRed(bn.mont(key.modulus)) + .redPow(new bn(key.publicExponent)) + .fromRed() + .toArray()); +} + +module.exports = withPublic; +/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1).Buffer)) + +/***/ }), +/* 296 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* + original source https://github.com/antelle/argon2-browser/blob/master/docs/js/main.js + */ + +/* + Changed to Accept Arguments + Changed to Class Instance + */ + +class Argon2BrowserAntelleMain{ + + constructor(){ + + this.worker = null; + this.pnaclTs = null; + this.logTs = 0; + + } + + calcWorker(method, arg) { + + //this.clearLog(); + + if (this.worker) { + if (this.worker.method === method) { + //this.log('Using loaded worker'); + this.worker.postMessage({ calc: method, arg: arg }); + return; + } else { + this.worker.terminate(); + } + } + + //this.log('Starting worker...'); + this.worker = new Worker('js/worker.js'); + this.worker.method = method; + + var loaded = false; + + this.worker.onmessage = (e) => { + //this.log(e.data.msg); + if (!loaded) { + loaded = true; + this.worker.postMessage({ calc: method, arg: arg }); + } + }; + } + + + calcPNaCl(arg) { + + window.Module = null; + //this.clearLog(); + + if (!navigator.mimeTypes['application/x-pnacl']) { + throw 'PNaCl is not supported by your browser'; + } + + //this.log('Testing Argon2 using PNaCl'); + + var listener = document.getElementById('pnaclListener'); + var moduleEl = document.getElementById('pnacl-argon2'); + + this.pnaclTs = performance.now(); + if (moduleEl) { + moduleEl.postMessage(arg); + return; + } + + //this.log('Loading PNaCl module...'); + + moduleEl = document.createElement('embed'); + moduleEl.setAttribute('name', 'argon2'); + moduleEl.setAttribute('id', 'pnacl-argon2'); + moduleEl.setAttribute('width', '0'); + moduleEl.setAttribute('height', '0'); + moduleEl.setAttribute('src', 'argon2.nmf'); + moduleEl.setAttribute('type', 'application/x-pnacl'); + + listener.addEventListener('load', function() { + //this.log('PNaCl module loaded in ' + Math.round(performance.now() - this.pnaclTs) + 'ms'); + //this.log('Calculating hash....'); + this.pnaclTs = performance.now(); + moduleEl.postMessage(arg); + }, true); + listener.addEventListener('message', function(e) { + + var encoded = e.data.encoded; + var hash = e.data.hash; + if (e.data.res) { + //this.log('Error: ' + e.data.res + ': ' + e.data.error); + } else { + //this.log('Encoded: ' + encoded); + //this.log('Hash: ' + hash); + //this.log('Elapsed: ' + Math.round(performance.now() - pnaclTs) + 'ms'); + } + }, true); + listener.addEventListener('error', function() { console.log('Error'); }, true); + listener.addEventListener('crash', function() { console.log('Crash'); }, true); + + listener.appendChild(moduleEl); + moduleEl.offsetTop; // required by PNaCl + } + + // leftPad(str, len) { + // + // str = str.toString(); + // while (str.length < len) { + // str = '0' + str; + // } + // return str; + // } + + clearLog() { + + // this.logTs = performance.now(); + // + // let txtRes = document.getElementById('txtRes') + // + // if (txtRes !== null) + // txtRes.value = ''; + } + + log(msg) { + // if (!msg) { + // return; + // } + // + // var txtRes = document.getElementById('txtRes'); + // var elapsedMs = Math.round(performance.now() - this.logTs); + // var elapsedSec = (elapsedMs / 1000).toFixed(3); + // var elapsed = this.leftPad(elapsedSec, 6); + // + // if (txtRes !== null) + // txtRes.value += (txtRes.value ? '\n' : '') + '[' + elapsed + '] ' + msg; + } + + +} + + +/* harmony default export */ __webpack_exports__["a"] = (new Argon2BrowserAntelleMain()); + +/***/ }), +/* 297 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lie__ = __webpack_require__(674); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_lie___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_lie__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_argsarray__ = __webpack_require__(675); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_argsarray___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_argsarray__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_immediate__ = __webpack_require__(298); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_immediate___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_immediate__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_events__ = __webpack_require__(46); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_events___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_events__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_inherits__ = __webpack_require__(7); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_inherits___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_inherits__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_uuid__ = __webpack_require__(676); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5_uuid___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5_uuid__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_debug__ = __webpack_require__(679); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6_debug___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_6_debug__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_spark_md5__ = __webpack_require__(682); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7_spark_md5___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_7_spark_md5__); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_vuvuzela__ = __webpack_require__(683); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_8_vuvuzela___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_8_vuvuzela__); + + + + + + + + + + +/* istanbul ignore next */ +var PouchPromise = typeof Promise === 'function' ? Promise : __WEBPACK_IMPORTED_MODULE_0_lie___default.a; + +function isBinaryObject(object) { + return (typeof ArrayBuffer !== 'undefined' && object instanceof ArrayBuffer) || + (typeof Blob !== 'undefined' && object instanceof Blob); +} + +function cloneArrayBuffer(buff) { + if (typeof buff.slice === 'function') { + return buff.slice(0); + } + // IE10-11 slice() polyfill + var target = new ArrayBuffer(buff.byteLength); + var targetArray = new Uint8Array(target); + var sourceArray = new Uint8Array(buff); + targetArray.set(sourceArray); + return target; +} + +function cloneBinaryObject(object) { + if (object instanceof ArrayBuffer) { + return cloneArrayBuffer(object); + } + var size = object.size; + var type = object.type; + // Blob + if (typeof object.slice === 'function') { + return object.slice(0, size, type); + } + // PhantomJS slice() replacement + return object.webkitSlice(0, size, type); +} + +// most of this is borrowed from lodash.isPlainObject: +// https://github.com/fis-components/lodash.isplainobject/ +// blob/29c358140a74f252aeb08c9eb28bef86f2217d4a/index.js + +var funcToString = Function.prototype.toString; +var objectCtorString = funcToString.call(Object); + +function isPlainObject(value) { + var proto = Object.getPrototypeOf(value); + /* istanbul ignore if */ + if (proto === null) { // not sure when this happens, but I guess it can + return true; + } + var Ctor = proto.constructor; + return (typeof Ctor == 'function' && + Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString); +} + +function clone(object) { + var newObject; + var i; + var len; + + if (!object || typeof object !== 'object') { + return object; + } + + if (Array.isArray(object)) { + newObject = []; + for (i = 0, len = object.length; i < len; i++) { + newObject[i] = clone(object[i]); + } + return newObject; + } + + // special case: to avoid inconsistencies between IndexedDB + // and other backends, we automatically stringify Dates + if (object instanceof Date) { + return object.toISOString(); + } + + if (isBinaryObject(object)) { + return cloneBinaryObject(object); + } + + if (!isPlainObject(object)) { + return object; // don't clone objects like Workers + } + + newObject = {}; + for (i in object) { + /* istanbul ignore else */ + if (Object.prototype.hasOwnProperty.call(object, i)) { + var value = clone(object[i]); + if (typeof value !== 'undefined') { + newObject[i] = value; + } + } + } + return newObject; +} + +function once(fun) { + var called = false; + return __WEBPACK_IMPORTED_MODULE_1_argsarray___default()(function (args) { + /* istanbul ignore if */ + if (called) { + // this is a smoke test and should never actually happen + throw new Error('once called more than once'); + } else { + called = true; + fun.apply(this, args); + } + }); +} + +function toPromise(func) { + //create the function we will be returning + return __WEBPACK_IMPORTED_MODULE_1_argsarray___default()(function (args) { + // Clone arguments + args = clone(args); + var self = this; + // if the last argument is a function, assume its a callback + var usedCB = (typeof args[args.length - 1] === 'function') ? args.pop() : false; + var promise = new PouchPromise(function (fulfill, reject) { + var resp; + try { + var callback = once(function (err, mesg) { + if (err) { + reject(err); + } else { + fulfill(mesg); + } + }); + // create a callback for this invocation + // apply the function in the orig context + args.push(callback); + resp = func.apply(self, args); + if (resp && typeof resp.then === 'function') { + fulfill(resp); + } + } catch (e) { + reject(e); + } + }); + // if there is a callback, call it back + if (usedCB) { + promise.then(function (result) { + usedCB(null, result); + }, usedCB); + } + return promise; + }); +} + +function logApiCall(self, name, args) { + /* istanbul ignore if */ + if (self.constructor.listeners('debug').length) { + var logArgs = ['api', self.name, name]; + for (var i = 0; i < args.length - 1; i++) { + logArgs.push(args[i]); + } + self.constructor.emit('debug', logArgs); + + // override the callback itself to log the response + var origCallback = args[args.length - 1]; + args[args.length - 1] = function (err, res) { + var responseArgs = ['api', self.name, name]; + responseArgs = responseArgs.concat( + err ? ['error', err] : ['success', res] + ); + self.constructor.emit('debug', responseArgs); + origCallback(err, res); + }; + } +} + +function adapterFun(name, callback) { + return toPromise(__WEBPACK_IMPORTED_MODULE_1_argsarray___default()(function (args) { + if (this._closed) { + return PouchPromise.reject(new Error('database is closed')); + } + if (this._destroyed) { + return PouchPromise.reject(new Error('database is destroyed')); + } + var self = this; + logApiCall(self, name, args); + if (!this.taskqueue.isReady) { + return new PouchPromise(function (fulfill, reject) { + self.taskqueue.addTask(function (failed) { + if (failed) { + reject(failed); + } else { + fulfill(self[name].apply(self, args)); + } + }); + }); + } + return callback.apply(this, args); + })); +} + +function mangle(key) { + return '$' + key; +} +function unmangle(key) { + return key.substring(1); +} +function Map$1() { + this._store = {}; +} +Map$1.prototype.get = function (key) { + var mangled = mangle(key); + return this._store[mangled]; +}; +Map$1.prototype.set = function (key, value) { + var mangled = mangle(key); + this._store[mangled] = value; + return true; +}; +Map$1.prototype.has = function (key) { + var mangled = mangle(key); + return mangled in this._store; +}; +Map$1.prototype.delete = function (key) { + var mangled = mangle(key); + var res = mangled in this._store; + delete this._store[mangled]; + return res; +}; +Map$1.prototype.forEach = function (cb) { + var keys = Object.keys(this._store); + for (var i = 0, len = keys.length; i < len; i++) { + var key = keys[i]; + var value = this._store[key]; + key = unmangle(key); + cb(value, key); + } +}; +Object.defineProperty(Map$1.prototype, 'size', { + get: function () { + return Object.keys(this._store).length; + } +}); + +function Set$1(array) { + this._store = new Map$1(); + + // init with an array + if (array && Array.isArray(array)) { + for (var i = 0, len = array.length; i < len; i++) { + this.add(array[i]); + } + } +} +Set$1.prototype.add = function (key) { + return this._store.set(key, true); +}; +Set$1.prototype.has = function (key) { + return this._store.has(key); +}; +Set$1.prototype.forEach = function (cb) { + this._store.forEach(function (value, key) { + cb(key); + }); +}; +Object.defineProperty(Set$1.prototype, 'size', { + get: function () { + return this._store.size; + } +}); + +/* global Map,Set,Symbol */ +// Based on https://kangax.github.io/compat-table/es6/ we can sniff out +// incomplete Map/Set implementations which would otherwise cause our tests to fail. +// Notably they fail in IE11 and iOS 8.4, which this prevents. +function supportsMapAndSet() { + if (typeof Symbol === 'undefined' || typeof Map === 'undefined' || typeof Set === 'undefined') { + return false; + } + var prop = Object.getOwnPropertyDescriptor(Map, Symbol.species); + return prop && 'get' in prop && Map[Symbol.species] === Map; +} + +// based on https://github.com/montagejs/collections +/* global Map,Set */ + +var ExportedSet; +var ExportedMap; + +{ + if (supportsMapAndSet()) { // prefer built-in Map/Set + ExportedSet = Set; + ExportedMap = Map; + } else { // fall back to our polyfill + ExportedSet = Set$1; + ExportedMap = Map$1; + } +} + +// like underscore/lodash _.pick() +function pick(obj, arr) { + var res = {}; + for (var i = 0, len = arr.length; i < len; i++) { + var prop = arr[i]; + if (prop in obj) { + res[prop] = obj[prop]; + } + } + return res; +} + +// Most browsers throttle concurrent requests at 6, so it's silly +// to shim _bulk_get by trying to launch potentially hundreds of requests +// and then letting the majority time out. We can handle this ourselves. +var MAX_NUM_CONCURRENT_REQUESTS = 6; + +function identityFunction(x) { + return x; +} + +function formatResultForOpenRevsGet(result) { + return [{ + ok: result + }]; +} + +// shim for P/CouchDB adapters that don't directly implement _bulk_get +function bulkGet(db, opts, callback) { + var requests = opts.docs; + + // consolidate into one request per doc if possible + var requestsById = new ExportedMap(); + requests.forEach(function (request) { + if (requestsById.has(request.id)) { + requestsById.get(request.id).push(request); + } else { + requestsById.set(request.id, [request]); + } + }); + + var numDocs = requestsById.size; + var numDone = 0; + var perDocResults = new Array(numDocs); + + function collapseResultsAndFinish() { + var results = []; + perDocResults.forEach(function (res) { + res.docs.forEach(function (info) { + results.push({ + id: res.id, + docs: [info] + }); + }); + }); + callback(null, {results: results}); + } + + function checkDone() { + if (++numDone === numDocs) { + collapseResultsAndFinish(); + } + } + + function gotResult(docIndex, id, docs) { + perDocResults[docIndex] = {id: id, docs: docs}; + checkDone(); + } + + var allRequests = []; + requestsById.forEach(function (value, key) { + allRequests.push(key); + }); + + var i = 0; + + function nextBatch() { + + if (i >= allRequests.length) { + return; + } + + var upTo = Math.min(i + MAX_NUM_CONCURRENT_REQUESTS, allRequests.length); + var batch = allRequests.slice(i, upTo); + processBatch(batch, i); + i += batch.length; + } + + function processBatch(batch, offset) { + batch.forEach(function (docId, j) { + var docIdx = offset + j; + var docRequests = requestsById.get(docId); + + // just use the first request as the "template" + // TODO: The _bulk_get API allows for more subtle use cases than this, + // but for now it is unlikely that there will be a mix of different + // "atts_since" or "attachments" in the same request, since it's just + // replicate.js that is using this for the moment. + // Also, atts_since is aspirational, since we don't support it yet. + var docOpts = pick(docRequests[0], ['atts_since', 'attachments']); + docOpts.open_revs = docRequests.map(function (request) { + // rev is optional, open_revs disallowed + return request.rev; + }); + + // remove falsey / undefined revisions + docOpts.open_revs = docOpts.open_revs.filter(identityFunction); + + var formatResult = identityFunction; + + if (docOpts.open_revs.length === 0) { + delete docOpts.open_revs; + + // when fetching only the "winning" leaf, + // transform the result so it looks like an open_revs + // request + formatResult = formatResultForOpenRevsGet; + } + + // globally-supplied options + ['revs', 'attachments', 'binary', 'ajax', 'latest'].forEach(function (param) { + if (param in opts) { + docOpts[param] = opts[param]; + } + }); + db.get(docId, docOpts, function (err, res) { + var result; + /* istanbul ignore if */ + if (err) { + result = [{error: err}]; + } else { + result = formatResult(res); + } + gotResult(docIdx, docId, result); + nextBatch(); + }); + }); + } + + nextBatch(); + +} + +function isChromeApp() { + return (typeof chrome !== "undefined" && + typeof chrome.storage !== "undefined" && + typeof chrome.storage.local !== "undefined"); +} + +var hasLocal; + +if (isChromeApp()) { + hasLocal = false; +} else { + try { + localStorage.setItem('_pouch_check_localstorage', 1); + hasLocal = !!localStorage.getItem('_pouch_check_localstorage'); + } catch (e) { + hasLocal = false; + } +} + +function hasLocalStorage() { + return hasLocal; +} + +// Custom nextTick() shim for browsers. In node, this will just be process.nextTick(). We +// avoid using process.nextTick() directly because the polyfill is very large and we don't +// need all of it (see: https://github.com/defunctzombie/node-process). +// "immediate" 3.0.8 is used by lie, and it's a smaller version of the latest "immediate" +// package, so it's the one we use. +// When we use nextTick() in our codebase, we only care about not releasing Zalgo +// (see: http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony). +// Microtask vs macrotask doesn't matter to us. So we're free to use the fastest +// (least latency) option, which is "immediate" due to use of microtasks. +// All of our nextTicks are isolated to this one function so we can easily swap out one +// implementation for another. + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(Changes, __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"]); + +/* istanbul ignore next */ +function attachBrowserEvents(self) { + if (isChromeApp()) { + chrome.storage.onChanged.addListener(function (e) { + // make sure it's event addressed to us + if (e.db_name != null) { + //object only has oldValue, newValue members + self.emit(e.dbName.newValue); + } + }); + } else if (hasLocalStorage()) { + if (typeof addEventListener !== 'undefined') { + addEventListener("storage", function (e) { + self.emit(e.key); + }); + } else { // old IE + window.attachEvent("storage", function (e) { + self.emit(e.key); + }); + } + } +} + +function Changes() { + __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].call(this); + this._listeners = {}; + + attachBrowserEvents(this); +} +Changes.prototype.addListener = function (dbName, id, db, opts) { + /* istanbul ignore if */ + if (this._listeners[id]) { + return; + } + var self = this; + var inprogress = false; + function eventFunction() { + /* istanbul ignore if */ + if (!self._listeners[id]) { + return; + } + if (inprogress) { + inprogress = 'waiting'; + return; + } + inprogress = true; + var changesOpts = pick(opts, [ + 'style', 'include_docs', 'attachments', 'conflicts', 'filter', + 'doc_ids', 'view', 'since', 'query_params', 'binary' + ]); + + /* istanbul ignore next */ + function onError() { + inprogress = false; + } + + db.changes(changesOpts).on('change', function (c) { + if (c.seq > opts.since && !opts.cancelled) { + opts.since = c.seq; + opts.onChange(c); + } + }).on('complete', function () { + if (inprogress === 'waiting') { + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(eventFunction); + } + inprogress = false; + }).on('error', onError); + } + this._listeners[id] = eventFunction; + this.on(dbName, eventFunction); +}; + +Changes.prototype.removeListener = function (dbName, id) { + /* istanbul ignore if */ + if (!(id in this._listeners)) { + return; + } + __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].prototype.removeListener.call(this, dbName, + this._listeners[id]); + delete this._listeners[id]; +}; + + +/* istanbul ignore next */ +Changes.prototype.notifyLocalWindows = function (dbName) { + //do a useless change on a storage thing + //in order to get other windows's listeners to activate + if (isChromeApp()) { + chrome.storage.local.set({dbName: dbName}); + } else if (hasLocalStorage()) { + localStorage[dbName] = (localStorage[dbName] === "a") ? "b" : "a"; + } +}; + +Changes.prototype.notify = function (dbName) { + this.emit(dbName); + this.notifyLocalWindows(dbName); +}; + +function guardedConsole(method) { + /* istanbul ignore else */ + if (typeof console !== 'undefined' && typeof console[method] === 'function') { + var args = Array.prototype.slice.call(arguments, 1); + console[method].apply(console, args); + } +} + +function randomNumber(min, max) { + var maxTimeout = 600000; // Hard-coded default of 10 minutes + min = parseInt(min, 10) || 0; + max = parseInt(max, 10); + if (max !== max || max <= min) { + max = (min || 1) << 1; //doubling + } else { + max = max + 1; + } + // In order to not exceed maxTimeout, pick a random value between half of maxTimeout and maxTimeout + if (max > maxTimeout) { + min = maxTimeout >> 1; // divide by two + max = maxTimeout; + } + var ratio = Math.random(); + var range = max - min; + + return ~~(range * ratio + min); // ~~ coerces to an int, but fast. +} + +function defaultBackOff(min) { + var max = 0; + if (!min) { + max = 2000; + } + return randomNumber(min, max); +} + +// designed to give info to browser users, who are disturbed +// when they see http errors in the console +function explainError(status, str) { + guardedConsole('info', 'The above ' + status + ' is totally normal. ' + str); +} + +var assign; +{ + if (typeof Object.assign === 'function') { + assign = Object.assign; + } else { + // lite Object.assign polyfill based on + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign + assign = function (target) { + var to = Object(target); + + for (var index = 1; index < arguments.length; index++) { + var nextSource = arguments[index]; + + if (nextSource != null) { // Skip over if undefined or null + for (var nextKey in nextSource) { + // Avoid bugs when hasOwnProperty is shadowed + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + return to; + }; + } +} + +var $inject_Object_assign = assign; + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(PouchError, Error); + +function PouchError(status, error, reason) { + Error.call(this, reason); + this.status = status; + this.name = error; + this.message = reason; + this.error = true; +} + +PouchError.prototype.toString = function () { + return JSON.stringify({ + status: this.status, + name: this.name, + message: this.message, + reason: this.reason + }); +}; + +var UNAUTHORIZED = new PouchError(401, 'unauthorized', "Name or password is incorrect."); +var MISSING_BULK_DOCS = new PouchError(400, 'bad_request', "Missing JSON list of 'docs'"); +var MISSING_DOC = new PouchError(404, 'not_found', 'missing'); +var REV_CONFLICT = new PouchError(409, 'conflict', 'Document update conflict'); +var INVALID_ID = new PouchError(400, 'bad_request', '_id field must contain a string'); +var MISSING_ID = new PouchError(412, 'missing_id', '_id is required for puts'); +var RESERVED_ID = new PouchError(400, 'bad_request', 'Only reserved document ids may start with underscore.'); +var NOT_OPEN = new PouchError(412, 'precondition_failed', 'Database not open'); +var UNKNOWN_ERROR = new PouchError(500, 'unknown_error', 'Database encountered an unknown error'); +var BAD_ARG = new PouchError(500, 'badarg', 'Some query argument is invalid'); +var INVALID_REQUEST = new PouchError(400, 'invalid_request', 'Request was invalid'); +var QUERY_PARSE_ERROR = new PouchError(400, 'query_parse_error', 'Some query parameter is invalid'); +var DOC_VALIDATION = new PouchError(500, 'doc_validation', 'Bad special document member'); +var BAD_REQUEST = new PouchError(400, 'bad_request', 'Something wrong with the request'); +var NOT_AN_OBJECT = new PouchError(400, 'bad_request', 'Document must be a JSON object'); +var DB_MISSING = new PouchError(404, 'not_found', 'Database not found'); +var IDB_ERROR = new PouchError(500, 'indexed_db_went_bad', 'unknown'); +var WSQ_ERROR = new PouchError(500, 'web_sql_went_bad', 'unknown'); +var LDB_ERROR = new PouchError(500, 'levelDB_went_went_bad', 'unknown'); +var FORBIDDEN = new PouchError(403, 'forbidden', 'Forbidden by design doc validate_doc_update function'); +var INVALID_REV = new PouchError(400, 'bad_request', 'Invalid rev format'); +var FILE_EXISTS = new PouchError(412, 'file_exists', 'The database could not be created, the file already exists.'); +var MISSING_STUB = new PouchError(412, 'missing_stub', 'A pre-existing attachment stub wasn\'t found'); +var INVALID_URL = new PouchError(413, 'invalid_url', 'Provided URL is invalid'); + +function createError(error, reason) { + function CustomPouchError(reason) { + // inherit error properties from our parent error manually + // so as to allow proper JSON parsing. + /* jshint ignore:start */ + for (var p in error) { + if (typeof error[p] !== 'function') { + this[p] = error[p]; + } + } + /* jshint ignore:end */ + if (reason !== undefined) { + this.reason = reason; + } + } + CustomPouchError.prototype = PouchError.prototype; + return new CustomPouchError(reason); +} + +function generateErrorFromResponse(err) { + + if (typeof err !== 'object') { + var data = err; + err = UNKNOWN_ERROR; + err.data = data; + } + + if ('error' in err && err.error === 'conflict') { + err.name = 'conflict'; + err.status = 409; + } + + if (!('name' in err)) { + err.name = err.error || 'unknown'; + } + + if (!('status' in err)) { + err.status = 500; + } + + if (!('message' in err)) { + err.message = err.message || err.reason; + } + + return err; +} + +function tryFilter(filter, doc, req) { + try { + return !filter(doc, req); + } catch (err) { + var msg = 'Filter function threw: ' + err.toString(); + return createError(BAD_REQUEST, msg); + } +} + +function filterChange(opts) { + var req = {}; + var hasFilter = opts.filter && typeof opts.filter === 'function'; + req.query = opts.query_params; + + return function filter(change) { + if (!change.doc) { + // CSG sends events on the changes feed that don't have documents, + // this hack makes a whole lot of existing code robust. + change.doc = {}; + } + + var filterReturn = hasFilter && tryFilter(opts.filter, change.doc, req); + + if (typeof filterReturn === 'object') { + return filterReturn; + } + + if (filterReturn) { + return false; + } + + if (!opts.include_docs) { + delete change.doc; + } else if (!opts.attachments) { + for (var att in change.doc._attachments) { + /* istanbul ignore else */ + if (change.doc._attachments.hasOwnProperty(att)) { + change.doc._attachments[att].stub = true; + } + } + } + return true; + }; +} + +function flatten(arrs) { + var res = []; + for (var i = 0, len = arrs.length; i < len; i++) { + res = res.concat(arrs[i]); + } + return res; +} + +// shim for Function.prototype.name, +// for browsers that don't support it like IE + +/* istanbul ignore next */ + +// Determine id an ID is valid +// - invalid IDs begin with an underescore that does not begin '_design' or +// '_local' +// - any other string value is a valid id +// Returns the specific error object for each case +function invalidIdError(id) { + var err; + if (!id) { + err = createError(MISSING_ID); + } else if (typeof id !== 'string') { + err = createError(INVALID_ID); + } else if (/^_/.test(id) && !(/^_(design|local)/).test(id)) { + err = createError(RESERVED_ID); + } + if (err) { + throw err; + } +} + +// Checks if a PouchDB object is "remote" or not. This is +// designed to opt-in to certain optimizations, such as +// avoiding checks for "dependentDbs" and other things that +// we know only apply to local databases. In general, "remote" +// should be true for the http adapter, and for third-party +// adapters with similar expensive boundaries to cross for +// every API call, such as socket-pouch and worker-pouch. +// Previously, this was handled via db.type() === 'http' +// which is now deprecated. + +function isRemote(db) { + if (typeof db._remote === 'boolean') { + return db._remote; + } + /* istanbul ignore next */ + if (typeof db.type === 'function') { + guardedConsole('warn', + 'db.type() is deprecated and will be removed in ' + + 'a future version of PouchDB'); + return db.type() === 'http'; + } + /* istanbul ignore next */ + return false; +} + +function listenerCount(ee, type) { + return 'listenerCount' in ee ? ee.listenerCount(type) : + __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].listenerCount(ee, type); +} + +function parseDesignDocFunctionName(s) { + if (!s) { + return null; + } + var parts = s.split('/'); + if (parts.length === 2) { + return parts; + } + if (parts.length === 1) { + return [s, s]; + } + return null; +} + +function normalizeDesignDocFunctionName(s) { + var normalized = parseDesignDocFunctionName(s); + return normalized ? normalized.join('/') : null; +} + +// originally parseUri 1.2.2, now patched by us +// (c) Steven Levithan +// MIT License +var keys = ["source", "protocol", "authority", "userInfo", "user", "password", + "host", "port", "relative", "path", "directory", "file", "query", "anchor"]; +var qName ="queryKey"; +var qParser = /(?:^|&)([^&=]*)=?([^&]*)/g; + +// use the "loose" parser +/* eslint maxlen: 0, no-useless-escape: 0 */ +var parser = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/; + +function parseUri(str) { + var m = parser.exec(str); + var uri = {}; + var i = 14; + + while (i--) { + var key = keys[i]; + var value = m[i] || ""; + var encoded = ['user', 'password'].indexOf(key) !== -1; + uri[key] = encoded ? decodeURIComponent(value) : value; + } + + uri[qName] = {}; + uri[keys[12]].replace(qParser, function ($0, $1, $2) { + if ($1) { + uri[qName][$1] = $2; + } + }); + + return uri; +} + +// Based on https://github.com/alexdavid/scope-eval v0.0.3 +// (source: https://unpkg.com/scope-eval@0.0.3/scope_eval.js) +// This is basically just a wrapper around new Function() + +function scopeEval(source, scope) { + var keys = []; + var values = []; + for (var key in scope) { + if (scope.hasOwnProperty(key)) { + keys.push(key); + values.push(scope[key]); + } + } + keys.push(source); + return Function.apply(null, keys).apply(null, values); +} + +// this is essentially the "update sugar" function from daleharvey/pouchdb#1388 +// the diffFun tells us what delta to apply to the doc. it either returns +// the doc, or false if it doesn't need to do an update after all +function upsert(db, docId, diffFun) { + return new PouchPromise(function (fulfill, reject) { + db.get(docId, function (err, doc) { + if (err) { + /* istanbul ignore next */ + if (err.status !== 404) { + return reject(err); + } + doc = {}; + } + + // the user might change the _rev, so save it for posterity + var docRev = doc._rev; + var newDoc = diffFun(doc); + + if (!newDoc) { + // if the diffFun returns falsy, we short-circuit as + // an optimization + return fulfill({updated: false, rev: docRev}); + } + + // users aren't allowed to modify these values, + // so reset them here + newDoc._id = docId; + newDoc._rev = docRev; + fulfill(tryAndPut(db, newDoc, diffFun)); + }); + }); +} + +function tryAndPut(db, doc, diffFun) { + return db.put(doc).then(function (res) { + return { + updated: true, + rev: res.rev + }; + }, function (err) { + /* istanbul ignore next */ + if (err.status !== 409) { + throw err; + } + return upsert(db, doc._id, diffFun); + }); +} + +function rev() { + return __WEBPACK_IMPORTED_MODULE_5_uuid___default.a.v4().replace(/-/g, '').toLowerCase(); +} + +var uuid = __WEBPACK_IMPORTED_MODULE_5_uuid___default.a.v4; + +// We fetch all leafs of the revision tree, and sort them based on tree length +// and whether they were deleted, undeleted documents with the longest revision +// tree (most edits) win +// The final sort algorithm is slightly documented in a sidebar here: +// http://guide.couchdb.org/draft/conflicts.html +function winningRev(metadata) { + var winningId; + var winningPos; + var winningDeleted; + var toVisit = metadata.rev_tree.slice(); + var node; + while ((node = toVisit.pop())) { + var tree = node.ids; + var branches = tree[2]; + var pos = node.pos; + if (branches.length) { // non-leaf + for (var i = 0, len = branches.length; i < len; i++) { + toVisit.push({pos: pos + 1, ids: branches[i]}); + } + continue; + } + var deleted = !!tree[1].deleted; + var id = tree[0]; + // sort by deleted, then pos, then id + if (!winningId || (winningDeleted !== deleted ? winningDeleted : + winningPos !== pos ? winningPos < pos : winningId < id)) { + winningId = id; + winningPos = pos; + winningDeleted = deleted; + } + } + + return winningPos + '-' + winningId; +} + +// Pretty much all below can be combined into a higher order function to +// traverse revisions +// The return value from the callback will be passed as context to all +// children of that node +function traverseRevTree(revs, callback) { + var toVisit = revs.slice(); + + var node; + while ((node = toVisit.pop())) { + var pos = node.pos; + var tree = node.ids; + var branches = tree[2]; + var newCtx = + callback(branches.length === 0, pos, tree[0], node.ctx, tree[1]); + for (var i = 0, len = branches.length; i < len; i++) { + toVisit.push({pos: pos + 1, ids: branches[i], ctx: newCtx}); + } + } +} + +function sortByPos(a, b) { + return a.pos - b.pos; +} + +function collectLeaves(revs) { + var leaves = []; + traverseRevTree(revs, function (isLeaf, pos, id, acc, opts) { + if (isLeaf) { + leaves.push({rev: pos + "-" + id, pos: pos, opts: opts}); + } + }); + leaves.sort(sortByPos).reverse(); + for (var i = 0, len = leaves.length; i < len; i++) { + delete leaves[i].pos; + } + return leaves; +} + +// returns revs of all conflicts that is leaves such that +// 1. are not deleted and +// 2. are different than winning revision +function collectConflicts(metadata) { + var win = winningRev(metadata); + var leaves = collectLeaves(metadata.rev_tree); + var conflicts = []; + for (var i = 0, len = leaves.length; i < len; i++) { + var leaf = leaves[i]; + if (leaf.rev !== win && !leaf.opts.deleted) { + conflicts.push(leaf.rev); + } + } + return conflicts; +} + +// compact a tree by marking its non-leafs as missing, +// and return a list of revs to delete +function compactTree(metadata) { + var revs = []; + traverseRevTree(metadata.rev_tree, function (isLeaf, pos, + revHash, ctx, opts) { + if (opts.status === 'available' && !isLeaf) { + revs.push(pos + '-' + revHash); + opts.status = 'missing'; + } + }); + return revs; +} + +// build up a list of all the paths to the leafs in this revision tree +function rootToLeaf(revs) { + var paths = []; + var toVisit = revs.slice(); + var node; + while ((node = toVisit.pop())) { + var pos = node.pos; + var tree = node.ids; + var id = tree[0]; + var opts = tree[1]; + var branches = tree[2]; + var isLeaf = branches.length === 0; + + var history = node.history ? node.history.slice() : []; + history.push({id: id, opts: opts}); + if (isLeaf) { + paths.push({pos: (pos + 1 - history.length), ids: history}); + } + for (var i = 0, len = branches.length; i < len; i++) { + toVisit.push({pos: pos + 1, ids: branches[i], history: history}); + } + } + return paths.reverse(); +} + +// for a better overview of what this is doing, read: +// https://github.com/apache/couchdb-couch/blob/master/src/couch_key_tree.erl +// +// But for a quick intro, CouchDB uses a revision tree to store a documents +// history, A -> B -> C, when a document has conflicts, that is a branch in the +// tree, A -> (B1 | B2 -> C), We store these as a nested array in the format +// +// KeyTree = [Path ... ] +// Path = {pos: position_from_root, ids: Tree} +// Tree = [Key, Opts, [Tree, ...]], in particular single node: [Key, []] + +function sortByPos$1(a, b) { + return a.pos - b.pos; +} + +// classic binary search +function binarySearch(arr, item, comparator) { + var low = 0; + var high = arr.length; + var mid; + while (low < high) { + mid = (low + high) >>> 1; + if (comparator(arr[mid], item) < 0) { + low = mid + 1; + } else { + high = mid; + } + } + return low; +} + +// assuming the arr is sorted, insert the item in the proper place +function insertSorted(arr, item, comparator) { + var idx = binarySearch(arr, item, comparator); + arr.splice(idx, 0, item); +} + +// Turn a path as a flat array into a tree with a single branch. +// If any should be stemmed from the beginning of the array, that's passed +// in as the second argument +function pathToTree(path, numStemmed) { + var root; + var leaf; + for (var i = numStemmed, len = path.length; i < len; i++) { + var node = path[i]; + var currentLeaf = [node.id, node.opts, []]; + if (leaf) { + leaf[2].push(currentLeaf); + leaf = currentLeaf; + } else { + root = leaf = currentLeaf; + } + } + return root; +} + +// compare the IDs of two trees +function compareTree(a, b) { + return a[0] < b[0] ? -1 : 1; +} + +// Merge two trees together +// The roots of tree1 and tree2 must be the same revision +function mergeTree(in_tree1, in_tree2) { + var queue = [{tree1: in_tree1, tree2: in_tree2}]; + var conflicts = false; + while (queue.length > 0) { + var item = queue.pop(); + var tree1 = item.tree1; + var tree2 = item.tree2; + + if (tree1[1].status || tree2[1].status) { + tree1[1].status = + (tree1[1].status === 'available' || + tree2[1].status === 'available') ? 'available' : 'missing'; + } + + for (var i = 0; i < tree2[2].length; i++) { + if (!tree1[2][0]) { + conflicts = 'new_leaf'; + tree1[2][0] = tree2[2][i]; + continue; + } + + var merged = false; + for (var j = 0; j < tree1[2].length; j++) { + if (tree1[2][j][0] === tree2[2][i][0]) { + queue.push({tree1: tree1[2][j], tree2: tree2[2][i]}); + merged = true; + } + } + if (!merged) { + conflicts = 'new_branch'; + insertSorted(tree1[2], tree2[2][i], compareTree); + } + } + } + return {conflicts: conflicts, tree: in_tree1}; +} + +function doMerge(tree, path, dontExpand) { + var restree = []; + var conflicts = false; + var merged = false; + var res; + + if (!tree.length) { + return {tree: [path], conflicts: 'new_leaf'}; + } + + for (var i = 0, len = tree.length; i < len; i++) { + var branch = tree[i]; + if (branch.pos === path.pos && branch.ids[0] === path.ids[0]) { + // Paths start at the same position and have the same root, so they need + // merged + res = mergeTree(branch.ids, path.ids); + restree.push({pos: branch.pos, ids: res.tree}); + conflicts = conflicts || res.conflicts; + merged = true; + } else if (dontExpand !== true) { + // The paths start at a different position, take the earliest path and + // traverse up until it as at the same point from root as the path we + // want to merge. If the keys match we return the longer path with the + // other merged After stemming we dont want to expand the trees + + var t1 = branch.pos < path.pos ? branch : path; + var t2 = branch.pos < path.pos ? path : branch; + var diff = t2.pos - t1.pos; + + var candidateParents = []; + + var trees = []; + trees.push({ids: t1.ids, diff: diff, parent: null, parentIdx: null}); + while (trees.length > 0) { + var item = trees.pop(); + if (item.diff === 0) { + if (item.ids[0] === t2.ids[0]) { + candidateParents.push(item); + } + continue; + } + var elements = item.ids[2]; + for (var j = 0, elementsLen = elements.length; j < elementsLen; j++) { + trees.push({ + ids: elements[j], + diff: item.diff - 1, + parent: item.ids, + parentIdx: j + }); + } + } + + var el = candidateParents[0]; + + if (!el) { + restree.push(branch); + } else { + res = mergeTree(el.ids, t2.ids); + el.parent[2][el.parentIdx] = res.tree; + restree.push({pos: t1.pos, ids: t1.ids}); + conflicts = conflicts || res.conflicts; + merged = true; + } + } else { + restree.push(branch); + } + } + + // We didnt find + if (!merged) { + restree.push(path); + } + + restree.sort(sortByPos$1); + + return { + tree: restree, + conflicts: conflicts || 'internal_node' + }; +} + +// To ensure we dont grow the revision tree infinitely, we stem old revisions +function stem(tree, depth) { + // First we break out the tree into a complete list of root to leaf paths + var paths = rootToLeaf(tree); + var stemmedRevs; + + var result; + for (var i = 0, len = paths.length; i < len; i++) { + // Then for each path, we cut off the start of the path based on the + // `depth` to stem to, and generate a new set of flat trees + var path = paths[i]; + var stemmed = path.ids; + var node; + if (stemmed.length > depth) { + // only do the stemming work if we actually need to stem + if (!stemmedRevs) { + stemmedRevs = {}; // avoid allocating this object unnecessarily + } + var numStemmed = stemmed.length - depth; + node = { + pos: path.pos + numStemmed, + ids: pathToTree(stemmed, numStemmed) + }; + + for (var s = 0; s < numStemmed; s++) { + var rev = (path.pos + s) + '-' + stemmed[s].id; + stemmedRevs[rev] = true; + } + } else { // no need to actually stem + node = { + pos: path.pos, + ids: pathToTree(stemmed, 0) + }; + } + + // Then we remerge all those flat trees together, ensuring that we dont + // connect trees that would go beyond the depth limit + if (result) { + result = doMerge(result, node, true).tree; + } else { + result = [node]; + } + } + + // this is memory-heavy per Chrome profiler, avoid unless we actually stemmed + if (stemmedRevs) { + traverseRevTree(result, function (isLeaf, pos, revHash) { + // some revisions may have been removed in a branch but not in another + delete stemmedRevs[pos + '-' + revHash]; + }); + } + + return { + tree: result, + revs: stemmedRevs ? Object.keys(stemmedRevs) : [] + }; +} + +function merge(tree, path, depth) { + var newTree = doMerge(tree, path); + var stemmed = stem(newTree.tree, depth); + return { + tree: stemmed.tree, + stemmedRevs: stemmed.revs, + conflicts: newTree.conflicts + }; +} + +// return true if a rev exists in the rev tree, false otherwise +function revExists(revs, rev) { + var toVisit = revs.slice(); + var splitRev = rev.split('-'); + var targetPos = parseInt(splitRev[0], 10); + var targetId = splitRev[1]; + + var node; + while ((node = toVisit.pop())) { + if (node.pos === targetPos && node.ids[0] === targetId) { + return true; + } + var branches = node.ids[2]; + for (var i = 0, len = branches.length; i < len; i++) { + toVisit.push({pos: node.pos + 1, ids: branches[i]}); + } + } + return false; +} + +function getTrees(node) { + return node.ids; +} + +// check if a specific revision of a doc has been deleted +// - metadata: the metadata object from the doc store +// - rev: (optional) the revision to check. defaults to winning revision +function isDeleted(metadata, rev) { + if (!rev) { + rev = winningRev(metadata); + } + var id = rev.substring(rev.indexOf('-') + 1); + var toVisit = metadata.rev_tree.map(getTrees); + + var tree; + while ((tree = toVisit.pop())) { + if (tree[0] === id) { + return !!tree[1].deleted; + } + toVisit = toVisit.concat(tree[2]); + } +} + +function isLocalId(id) { + return (/^_local/).test(id); +} + +// returns the current leaf node for a given revision +function latest(rev, metadata) { + var toVisit = metadata.rev_tree.slice(); + var node; + while ((node = toVisit.pop())) { + var pos = node.pos; + var tree = node.ids; + var id = tree[0]; + var opts = tree[1]; + var branches = tree[2]; + var isLeaf = branches.length === 0; + + var history = node.history ? node.history.slice() : []; + history.push({id: id, pos: pos, opts: opts}); + + if (isLeaf) { + for (var i = 0, len = history.length; i < len; i++) { + var historyNode = history[i]; + var historyRev = historyNode.pos + '-' + historyNode.id; + + if (historyRev === rev) { + // return the rev of this leaf + return pos + '-' + id; + } + } + } + + for (var j = 0, l = branches.length; j < l; j++) { + toVisit.push({pos: pos + 1, ids: branches[j], history: history}); + } + } + + /* istanbul ignore next */ + throw new Error('Unable to resolve latest revision for id ' + metadata.id + ', rev ' + rev); +} + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(Changes$2, __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"]); + +function tryCatchInChangeListener(self, change, pending, lastSeq) { + // isolate try/catches to avoid V8 deoptimizations + try { + self.emit('change', change, pending, lastSeq); + } catch (e) { + guardedConsole('error', 'Error in .on("change", function):', e); + } +} + +function Changes$2(db, opts, callback) { + __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].call(this); + var self = this; + this.db = db; + opts = opts ? clone(opts) : {}; + var complete = opts.complete = once(function (err, resp) { + if (err) { + if (listenerCount(self, 'error') > 0) { + self.emit('error', err); + } + } else { + self.emit('complete', resp); + } + self.removeAllListeners(); + db.removeListener('destroyed', onDestroy); + }); + if (callback) { + self.on('complete', function (resp) { + callback(null, resp); + }); + self.on('error', callback); + } + function onDestroy() { + self.cancel(); + } + db.once('destroyed', onDestroy); + + opts.onChange = function (change, pending, lastSeq) { + /* istanbul ignore if */ + if (self.isCancelled) { + return; + } + tryCatchInChangeListener(self, change, pending, lastSeq); + }; + + var promise = new PouchPromise(function (fulfill, reject) { + opts.complete = function (err, res) { + if (err) { + reject(err); + } else { + fulfill(res); + } + }; + }); + self.once('cancel', function () { + db.removeListener('destroyed', onDestroy); + opts.complete(null, {status: 'cancelled'}); + }); + this.then = promise.then.bind(promise); + this['catch'] = promise['catch'].bind(promise); + this.then(function (result) { + complete(null, result); + }, complete); + + + + if (!db.taskqueue.isReady) { + db.taskqueue.addTask(function (failed) { + if (failed) { + opts.complete(failed); + } else if (self.isCancelled) { + self.emit('cancel'); + } else { + self.validateChanges(opts); + } + }); + } else { + self.validateChanges(opts); + } +} +Changes$2.prototype.cancel = function () { + this.isCancelled = true; + if (this.db.taskqueue.isReady) { + this.emit('cancel'); + } +}; +function processChange(doc, metadata, opts) { + var changeList = [{rev: doc._rev}]; + if (opts.style === 'all_docs') { + changeList = collectLeaves(metadata.rev_tree) + .map(function (x) { return {rev: x.rev}; }); + } + var change = { + id: metadata.id, + changes: changeList, + doc: doc + }; + + if (isDeleted(metadata, doc._rev)) { + change.deleted = true; + } + if (opts.conflicts) { + change.doc._conflicts = collectConflicts(metadata); + if (!change.doc._conflicts.length) { + delete change.doc._conflicts; + } + } + return change; +} + +Changes$2.prototype.validateChanges = function (opts) { + var callback = opts.complete; + var self = this; + + /* istanbul ignore else */ + if (PouchDB._changesFilterPlugin) { + PouchDB._changesFilterPlugin.validate(opts, function (err) { + if (err) { + return callback(err); + } + self.doChanges(opts); + }); + } else { + self.doChanges(opts); + } +}; + +Changes$2.prototype.doChanges = function (opts) { + var self = this; + var callback = opts.complete; + + opts = clone(opts); + if ('live' in opts && !('continuous' in opts)) { + opts.continuous = opts.live; + } + opts.processChange = processChange; + + if (opts.since === 'latest') { + opts.since = 'now'; + } + if (!opts.since) { + opts.since = 0; + } + if (opts.since === 'now') { + this.db.info().then(function (info) { + /* istanbul ignore if */ + if (self.isCancelled) { + callback(null, {status: 'cancelled'}); + return; + } + opts.since = info.update_seq; + self.doChanges(opts); + }, callback); + return; + } + + /* istanbul ignore else */ + if (PouchDB._changesFilterPlugin) { + PouchDB._changesFilterPlugin.normalize(opts); + if (PouchDB._changesFilterPlugin.shouldFilter(this, opts)) { + return PouchDB._changesFilterPlugin.filter(this, opts); + } + } else { + ['doc_ids', 'filter', 'selector', 'view'].forEach(function (key) { + if (key in opts) { + guardedConsole('warn', + 'The "' + key + '" option was passed in to changes/replicate, ' + + 'but pouchdb-changes-filter plugin is not installed, so it ' + + 'was ignored. Please install the plugin to enable filtering.' + ); + } + }); + } + + if (!('descending' in opts)) { + opts.descending = false; + } + + // 0 and 1 should return 1 document + opts.limit = opts.limit === 0 ? 1 : opts.limit; + opts.complete = callback; + var newPromise = this.db._changes(opts); + /* istanbul ignore else */ + if (newPromise && typeof newPromise.cancel === 'function') { + var cancel = self.cancel; + self.cancel = __WEBPACK_IMPORTED_MODULE_1_argsarray___default()(function (args) { + newPromise.cancel(); + cancel.apply(this, args); + }); + } +}; + +/* + * A generic pouch adapter + */ + +function compare(left, right) { + return left < right ? -1 : left > right ? 1 : 0; +} + +// Wrapper for functions that call the bulkdocs api with a single doc, +// if the first result is an error, return an error +function yankError(callback, docId) { + return function (err, results) { + if (err || (results[0] && results[0].error)) { + err = err || results[0]; + err.docId = docId; + callback(err); + } else { + callback(null, results.length ? results[0] : results); + } + }; +} + +// clean docs given to us by the user +function cleanDocs(docs) { + for (var i = 0; i < docs.length; i++) { + var doc = docs[i]; + if (doc._deleted) { + delete doc._attachments; // ignore atts for deleted docs + } else if (doc._attachments) { + // filter out extraneous keys from _attachments + var atts = Object.keys(doc._attachments); + for (var j = 0; j < atts.length; j++) { + var att = atts[j]; + doc._attachments[att] = pick(doc._attachments[att], + ['data', 'digest', 'content_type', 'length', 'revpos', 'stub']); + } + } + } +} + +// compare two docs, first by _id then by _rev +function compareByIdThenRev(a, b) { + var idCompare = compare(a._id, b._id); + if (idCompare !== 0) { + return idCompare; + } + var aStart = a._revisions ? a._revisions.start : 0; + var bStart = b._revisions ? b._revisions.start : 0; + return compare(aStart, bStart); +} + +// for every node in a revision tree computes its distance from the closest +// leaf +function computeHeight(revs) { + var height = {}; + var edges = []; + traverseRevTree(revs, function (isLeaf, pos, id, prnt) { + var rev$$1 = pos + "-" + id; + if (isLeaf) { + height[rev$$1] = 0; + } + if (prnt !== undefined) { + edges.push({from: prnt, to: rev$$1}); + } + return rev$$1; + }); + + edges.reverse(); + edges.forEach(function (edge) { + if (height[edge.from] === undefined) { + height[edge.from] = 1 + height[edge.to]; + } else { + height[edge.from] = Math.min(height[edge.from], 1 + height[edge.to]); + } + }); + return height; +} + +function allDocsKeysParse(opts) { + var keys = ('limit' in opts) ? + opts.keys.slice(opts.skip, opts.limit + opts.skip) : + (opts.skip > 0) ? opts.keys.slice(opts.skip) : opts.keys; + opts.keys = keys; + opts.skip = 0; + delete opts.limit; + if (opts.descending) { + keys.reverse(); + opts.descending = false; + } +} + +// all compaction is done in a queue, to avoid attaching +// too many listeners at once +function doNextCompaction(self) { + var task = self._compactionQueue[0]; + var opts = task.opts; + var callback = task.callback; + self.get('_local/compaction').catch(function () { + return false; + }).then(function (doc) { + if (doc && doc.last_seq) { + opts.last_seq = doc.last_seq; + } + self._compact(opts, function (err, res) { + /* istanbul ignore if */ + if (err) { + callback(err); + } else { + callback(null, res); + } + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function () { + self._compactionQueue.shift(); + if (self._compactionQueue.length) { + doNextCompaction(self); + } + }); + }); + }); +} + +function attachmentNameError(name) { + if (name.charAt(0) === '_') { + return name + ' is not a valid attachment name, attachment ' + + 'names cannot start with \'_\''; + } + return false; +} + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(AbstractPouchDB, __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"]); + +function AbstractPouchDB() { + __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].call(this); +} + +AbstractPouchDB.prototype.post = + adapterFun('post', function (doc, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + if (typeof doc !== 'object' || Array.isArray(doc)) { + return callback(createError(NOT_AN_OBJECT)); + } + this.bulkDocs({docs: [doc]}, opts, yankError(callback, doc._id)); +}); + +AbstractPouchDB.prototype.put = adapterFun('put', function (doc, opts, cb) { + if (typeof opts === 'function') { + cb = opts; + opts = {}; + } + if (typeof doc !== 'object' || Array.isArray(doc)) { + return cb(createError(NOT_AN_OBJECT)); + } + invalidIdError(doc._id); + if (isLocalId(doc._id) && typeof this._putLocal === 'function') { + if (doc._deleted) { + return this._removeLocal(doc, cb); + } else { + return this._putLocal(doc, cb); + } + } + var self = this; + if (opts.force && doc._rev) { + transformForceOptionToNewEditsOption(); + putDoc(function (err) { + var result = err ? null : {ok: true, id: doc._id, rev: doc._rev}; + cb(err, result); + }); + } else { + putDoc(cb); + } + + function transformForceOptionToNewEditsOption() { + var parts = doc._rev.split('-'); + var oldRevId = parts[1]; + var oldRevNum = parseInt(parts[0], 10); + + var newRevNum = oldRevNum + 1; + var newRevId = rev(); + + doc._revisions = { + start: newRevNum, + ids: [newRevId, oldRevId] + }; + doc._rev = newRevNum + '-' + newRevId; + opts.new_edits = false; + } + function putDoc(next) { + if (typeof self._put === 'function' && opts.new_edits !== false) { + self._put(doc, opts, next); + } else { + self.bulkDocs({docs: [doc]}, opts, yankError(next, doc._id)); + } + } +}); + +AbstractPouchDB.prototype.putAttachment = + adapterFun('putAttachment', function (docId, attachmentId, rev$$1, + blob, type) { + var api = this; + if (typeof type === 'function') { + type = blob; + blob = rev$$1; + rev$$1 = null; + } + // Lets fix in https://github.com/pouchdb/pouchdb/issues/3267 + /* istanbul ignore if */ + if (typeof type === 'undefined') { + type = blob; + blob = rev$$1; + rev$$1 = null; + } + if (!type) { + guardedConsole('warn', 'Attachment', attachmentId, 'on document', docId, 'is missing content_type'); + } + + function createAttachment(doc) { + var prevrevpos = '_rev' in doc ? parseInt(doc._rev, 10) : 0; + doc._attachments = doc._attachments || {}; + doc._attachments[attachmentId] = { + content_type: type, + data: blob, + revpos: ++prevrevpos + }; + return api.put(doc); + } + + return api.get(docId).then(function (doc) { + if (doc._rev !== rev$$1) { + throw createError(REV_CONFLICT); + } + + return createAttachment(doc); + }, function (err) { + // create new doc + /* istanbul ignore else */ + if (err.reason === MISSING_DOC.message) { + return createAttachment({_id: docId}); + } else { + throw err; + } + }); +}); + +AbstractPouchDB.prototype.removeAttachment = + adapterFun('removeAttachment', function (docId, attachmentId, rev$$1, + callback) { + var self = this; + self.get(docId, function (err, obj) { + /* istanbul ignore if */ + if (err) { + callback(err); + return; + } + if (obj._rev !== rev$$1) { + callback(createError(REV_CONFLICT)); + return; + } + /* istanbul ignore if */ + if (!obj._attachments) { + return callback(); + } + delete obj._attachments[attachmentId]; + if (Object.keys(obj._attachments).length === 0) { + delete obj._attachments; + } + self.put(obj, callback); + }); +}); + +AbstractPouchDB.prototype.remove = + adapterFun('remove', function (docOrId, optsOrRev, opts, callback) { + var doc; + if (typeof optsOrRev === 'string') { + // id, rev, opts, callback style + doc = { + _id: docOrId, + _rev: optsOrRev + }; + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + } else { + // doc, opts, callback style + doc = docOrId; + if (typeof optsOrRev === 'function') { + callback = optsOrRev; + opts = {}; + } else { + callback = opts; + opts = optsOrRev; + } + } + opts = opts || {}; + opts.was_delete = true; + var newDoc = {_id: doc._id, _rev: (doc._rev || opts.rev)}; + newDoc._deleted = true; + if (isLocalId(newDoc._id) && typeof this._removeLocal === 'function') { + return this._removeLocal(doc, callback); + } + this.bulkDocs({docs: [newDoc]}, opts, yankError(callback, newDoc._id)); +}); + +AbstractPouchDB.prototype.revsDiff = + adapterFun('revsDiff', function (req, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + var ids = Object.keys(req); + + if (!ids.length) { + return callback(null, {}); + } + + var count = 0; + var missing = new ExportedMap(); + + function addToMissing(id, revId) { + if (!missing.has(id)) { + missing.set(id, {missing: []}); + } + missing.get(id).missing.push(revId); + } + + function processDoc(id, rev_tree) { + // Is this fast enough? Maybe we should switch to a set simulated by a map + var missingForId = req[id].slice(0); + traverseRevTree(rev_tree, function (isLeaf, pos, revHash, ctx, + opts) { + var rev$$1 = pos + '-' + revHash; + var idx = missingForId.indexOf(rev$$1); + if (idx === -1) { + return; + } + + missingForId.splice(idx, 1); + /* istanbul ignore if */ + if (opts.status !== 'available') { + addToMissing(id, rev$$1); + } + }); + + // Traversing the tree is synchronous, so now `missingForId` contains + // revisions that were not found in the tree + missingForId.forEach(function (rev$$1) { + addToMissing(id, rev$$1); + }); + } + + ids.map(function (id) { + this._getRevisionTree(id, function (err, rev_tree) { + if (err && err.status === 404 && err.message === 'missing') { + missing.set(id, {missing: req[id]}); + } else if (err) { + /* istanbul ignore next */ + return callback(err); + } else { + processDoc(id, rev_tree); + } + + if (++count === ids.length) { + // convert LazyMap to object + var missingObj = {}; + missing.forEach(function (value, key) { + missingObj[key] = value; + }); + return callback(null, missingObj); + } + }); + }, this); +}); + +// _bulk_get API for faster replication, as described in +// https://github.com/apache/couchdb-chttpd/pull/33 +// At the "abstract" level, it will just run multiple get()s in +// parallel, because this isn't much of a performance cost +// for local databases (except the cost of multiple transactions, which is +// small). The http adapter overrides this in order +// to do a more efficient single HTTP request. +AbstractPouchDB.prototype.bulkGet = + adapterFun('bulkGet', function (opts, callback) { + bulkGet(this, opts, callback); +}); + +// compact one document and fire callback +// by compacting we mean removing all revisions which +// are further from the leaf in revision tree than max_height +AbstractPouchDB.prototype.compactDocument = + adapterFun('compactDocument', function (docId, maxHeight, callback) { + var self = this; + this._getRevisionTree(docId, function (err, revTree) { + /* istanbul ignore if */ + if (err) { + return callback(err); + } + var height = computeHeight(revTree); + var candidates = []; + var revs = []; + Object.keys(height).forEach(function (rev$$1) { + if (height[rev$$1] > maxHeight) { + candidates.push(rev$$1); + } + }); + + traverseRevTree(revTree, function (isLeaf, pos, revHash, ctx, opts) { + var rev$$1 = pos + '-' + revHash; + if (opts.status === 'available' && candidates.indexOf(rev$$1) !== -1) { + revs.push(rev$$1); + } + }); + self._doCompaction(docId, revs, callback); + }); +}); + +// compact the whole database using single document +// compaction +AbstractPouchDB.prototype.compact = + adapterFun('compact', function (opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + + var self = this; + opts = opts || {}; + + self._compactionQueue = self._compactionQueue || []; + self._compactionQueue.push({opts: opts, callback: callback}); + if (self._compactionQueue.length === 1) { + doNextCompaction(self); + } +}); +AbstractPouchDB.prototype._compact = function (opts, callback) { + var self = this; + var changesOpts = { + return_docs: false, + last_seq: opts.last_seq || 0 + }; + var promises = []; + + function onChange(row) { + promises.push(self.compactDocument(row.id, 0)); + } + function onComplete(resp) { + var lastSeq = resp.last_seq; + PouchPromise.all(promises).then(function () { + return upsert(self, '_local/compaction', function deltaFunc(doc) { + if (!doc.last_seq || doc.last_seq < lastSeq) { + doc.last_seq = lastSeq; + return doc; + } + return false; // somebody else got here first, don't update + }); + }).then(function () { + callback(null, {ok: true}); + }).catch(callback); + } + self.changes(changesOpts) + .on('change', onChange) + .on('complete', onComplete) + .on('error', callback); +}; + +/* Begin api wrappers. Specific functionality to storage belongs in the + _[method] */ +AbstractPouchDB.prototype.get = adapterFun('get', function (id, opts, cb) { + if (typeof opts === 'function') { + cb = opts; + opts = {}; + } + if (typeof id !== 'string') { + return cb(createError(INVALID_ID)); + } + if (isLocalId(id) && typeof this._getLocal === 'function') { + return this._getLocal(id, cb); + } + var leaves = [], self = this; + + function finishOpenRevs() { + var result = []; + var count = leaves.length; + /* istanbul ignore if */ + if (!count) { + return cb(null, result); + } + + // order with open_revs is unspecified + leaves.forEach(function (leaf) { + self.get(id, { + rev: leaf, + revs: opts.revs, + latest: opts.latest, + attachments: opts.attachments, + binary: opts.binary + }, function (err, doc) { + if (!err) { + // using latest=true can produce duplicates + var existing; + for (var i = 0, l = result.length; i < l; i++) { + if (result[i].ok && result[i].ok._rev === doc._rev) { + existing = true; + break; + } + } + if (!existing) { + result.push({ok: doc}); + } + } else { + result.push({missing: leaf}); + } + count--; + if (!count) { + cb(null, result); + } + }); + }); + } + + if (opts.open_revs) { + if (opts.open_revs === "all") { + this._getRevisionTree(id, function (err, rev_tree) { + if (err) { + return cb(err); + } + leaves = collectLeaves(rev_tree).map(function (leaf) { + return leaf.rev; + }); + finishOpenRevs(); + }); + } else { + if (Array.isArray(opts.open_revs)) { + leaves = opts.open_revs; + for (var i = 0; i < leaves.length; i++) { + var l = leaves[i]; + // looks like it's the only thing couchdb checks + if (!(typeof (l) === "string" && /^\d+-/.test(l))) { + return cb(createError(INVALID_REV)); + } + } + finishOpenRevs(); + } else { + return cb(createError(UNKNOWN_ERROR, 'function_clause')); + } + } + return; // open_revs does not like other options + } + + return this._get(id, opts, function (err, result) { + if (err) { + err.docId = id; + return cb(err); + } + + var doc = result.doc; + var metadata = result.metadata; + var ctx = result.ctx; + + if (opts.conflicts) { + var conflicts = collectConflicts(metadata); + if (conflicts.length) { + doc._conflicts = conflicts; + } + } + + if (isDeleted(metadata, doc._rev)) { + doc._deleted = true; + } + + if (opts.revs || opts.revs_info) { + var splittedRev = doc._rev.split('-'); + var revNo = parseInt(splittedRev[0], 10); + var revHash = splittedRev[1]; + + var paths = rootToLeaf(metadata.rev_tree); + var path = null; + + for (var i = 0; i < paths.length; i++) { + var currentPath = paths[i]; + var hashIndex = currentPath.ids.map(function (x) { return x.id; }) + .indexOf(revHash); + var hashFoundAtRevPos = hashIndex === (revNo - 1); + + if (hashFoundAtRevPos || (!path && hashIndex !== -1)) { + path = currentPath; + } + } + + var indexOfRev = path.ids.map(function (x) { return x.id; }) + .indexOf(doc._rev.split('-')[1]) + 1; + var howMany = path.ids.length - indexOfRev; + path.ids.splice(indexOfRev, howMany); + path.ids.reverse(); + + if (opts.revs) { + doc._revisions = { + start: (path.pos + path.ids.length) - 1, + ids: path.ids.map(function (rev$$1) { + return rev$$1.id; + }) + }; + } + if (opts.revs_info) { + var pos = path.pos + path.ids.length; + doc._revs_info = path.ids.map(function (rev$$1) { + pos--; + return { + rev: pos + '-' + rev$$1.id, + status: rev$$1.opts.status + }; + }); + } + } + + if (opts.attachments && doc._attachments) { + var attachments = doc._attachments; + var count = Object.keys(attachments).length; + if (count === 0) { + return cb(null, doc); + } + Object.keys(attachments).forEach(function (key) { + this._getAttachment(doc._id, key, attachments[key], { + // Previously the revision handling was done in adapter.js + // getAttachment, however since idb-next doesnt we need to + // pass the rev through + rev: doc._rev, + binary: opts.binary, + ctx: ctx + }, function (err, data) { + var att = doc._attachments[key]; + att.data = data; + delete att.stub; + delete att.length; + if (!--count) { + cb(null, doc); + } + }); + }, self); + } else { + if (doc._attachments) { + for (var key in doc._attachments) { + /* istanbul ignore else */ + if (doc._attachments.hasOwnProperty(key)) { + doc._attachments[key].stub = true; + } + } + } + cb(null, doc); + } + }); +}); + +// TODO: I dont like this, it forces an extra read for every +// attachment read and enforces a confusing api between +// adapter.js and the adapter implementation +AbstractPouchDB.prototype.getAttachment = + adapterFun('getAttachment', function (docId, attachmentId, opts, callback) { + var self = this; + if (opts instanceof Function) { + callback = opts; + opts = {}; + } + this._get(docId, opts, function (err, res) { + if (err) { + return callback(err); + } + if (res.doc._attachments && res.doc._attachments[attachmentId]) { + opts.ctx = res.ctx; + opts.binary = true; + self._getAttachment(docId, attachmentId, + res.doc._attachments[attachmentId], opts, callback); + } else { + return callback(createError(MISSING_DOC)); + } + }); +}); + +AbstractPouchDB.prototype.allDocs = + adapterFun('allDocs', function (opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + opts.skip = typeof opts.skip !== 'undefined' ? opts.skip : 0; + if (opts.start_key) { + opts.startkey = opts.start_key; + } + if (opts.end_key) { + opts.endkey = opts.end_key; + } + if ('keys' in opts) { + if (!Array.isArray(opts.keys)) { + return callback(new TypeError('options.keys must be an array')); + } + var incompatibleOpt = + ['startkey', 'endkey', 'key'].filter(function (incompatibleOpt) { + return incompatibleOpt in opts; + })[0]; + if (incompatibleOpt) { + callback(createError(QUERY_PARSE_ERROR, + 'Query parameter `' + incompatibleOpt + + '` is not compatible with multi-get' + )); + return; + } + if (!isRemote(this)) { + allDocsKeysParse(opts); + if (opts.keys.length === 0) { + return this._allDocs({limit: 0}, callback); + } + } + } + + return this._allDocs(opts, callback); +}); + +AbstractPouchDB.prototype.changes = function (opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + return new Changes$2(this, opts, callback); +}; + +AbstractPouchDB.prototype.close = adapterFun('close', function (callback) { + this._closed = true; + this.emit('closed'); + return this._close(callback); +}); + +AbstractPouchDB.prototype.info = adapterFun('info', function (callback) { + var self = this; + this._info(function (err, info) { + if (err) { + return callback(err); + } + // assume we know better than the adapter, unless it informs us + info.db_name = info.db_name || self.name; + info.auto_compaction = !!(self.auto_compaction && !isRemote(self)); + info.adapter = self.adapter; + callback(null, info); + }); +}); + +AbstractPouchDB.prototype.id = adapterFun('id', function (callback) { + return this._id(callback); +}); + +/* istanbul ignore next */ +AbstractPouchDB.prototype.type = function () { + return (typeof this._type === 'function') ? this._type() : this.adapter; +}; + +AbstractPouchDB.prototype.bulkDocs = + adapterFun('bulkDocs', function (req, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + + opts = opts || {}; + + if (Array.isArray(req)) { + req = { + docs: req + }; + } + + if (!req || !req.docs || !Array.isArray(req.docs)) { + return callback(createError(MISSING_BULK_DOCS)); + } + + for (var i = 0; i < req.docs.length; ++i) { + if (typeof req.docs[i] !== 'object' || Array.isArray(req.docs[i])) { + return callback(createError(NOT_AN_OBJECT)); + } + } + + var attachmentError; + req.docs.forEach(function (doc) { + if (doc._attachments) { + Object.keys(doc._attachments).forEach(function (name) { + attachmentError = attachmentError || attachmentNameError(name); + if (!doc._attachments[name].content_type) { + guardedConsole('warn', 'Attachment', name, 'on document', doc._id, 'is missing content_type'); + } + }); + } + }); + + if (attachmentError) { + return callback(createError(BAD_REQUEST, attachmentError)); + } + + if (!('new_edits' in opts)) { + if ('new_edits' in req) { + opts.new_edits = req.new_edits; + } else { + opts.new_edits = true; + } + } + + var adapter = this; + if (!opts.new_edits && !isRemote(adapter)) { + // ensure revisions of the same doc are sorted, so that + // the local adapter processes them correctly (#2935) + req.docs.sort(compareByIdThenRev); + } + + cleanDocs(req.docs); + + // in the case of conflicts, we want to return the _ids to the user + // however, the underlying adapter may destroy the docs array, so + // create a copy here + var ids = req.docs.map(function (doc) { + return doc._id; + }); + + return this._bulkDocs(req, opts, function (err, res) { + if (err) { + return callback(err); + } + if (!opts.new_edits) { + // this is what couch does when new_edits is false + res = res.filter(function (x) { + return x.error; + }); + } + // add ids for error/conflict responses (not required for CouchDB) + if (!isRemote(adapter)) { + for (var i = 0, l = res.length; i < l; i++) { + res[i].id = res[i].id || ids[i]; + } + } + + callback(null, res); + }); +}); + +AbstractPouchDB.prototype.registerDependentDatabase = + adapterFun('registerDependentDatabase', function (dependentDb, + callback) { + var depDB = new this.constructor(dependentDb, this.__opts); + + function diffFun(doc) { + doc.dependentDbs = doc.dependentDbs || {}; + if (doc.dependentDbs[dependentDb]) { + return false; // no update required + } + doc.dependentDbs[dependentDb] = true; + return doc; + } + upsert(this, '_local/_pouch_dependentDbs', diffFun) + .then(function () { + callback(null, {db: depDB}); + }).catch(callback); +}); + +AbstractPouchDB.prototype.destroy = + adapterFun('destroy', function (opts, callback) { + + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + + var self = this; + var usePrefix = 'use_prefix' in self ? self.use_prefix : true; + + function destroyDb() { + // call destroy method of the particular adaptor + self._destroy(opts, function (err, resp) { + if (err) { + return callback(err); + } + self._destroyed = true; + self.emit('destroyed'); + callback(null, resp || { 'ok': true }); + }); + } + + if (isRemote(self)) { + // no need to check for dependent DBs if it's a remote DB + return destroyDb(); + } + + self.get('_local/_pouch_dependentDbs', function (err, localDoc) { + if (err) { + /* istanbul ignore if */ + if (err.status !== 404) { + return callback(err); + } else { // no dependencies + return destroyDb(); + } + } + var dependentDbs = localDoc.dependentDbs; + var PouchDB = self.constructor; + var deletedMap = Object.keys(dependentDbs).map(function (name) { + // use_prefix is only false in the browser + /* istanbul ignore next */ + var trueName = usePrefix ? + name.replace(new RegExp('^' + PouchDB.prefix), '') : name; + return new PouchDB(trueName, self.__opts).destroy(); + }); + PouchPromise.all(deletedMap).then(destroyDb, callback); + }); +}); + +function TaskQueue$1() { + this.isReady = false; + this.failed = false; + this.queue = []; +} + +TaskQueue$1.prototype.execute = function () { + var fun; + if (this.failed) { + while ((fun = this.queue.shift())) { + fun(this.failed); + } + } else { + while ((fun = this.queue.shift())) { + fun(); + } + } +}; + +TaskQueue$1.prototype.fail = function (err) { + this.failed = err; + this.execute(); +}; + +TaskQueue$1.prototype.ready = function (db) { + this.isReady = true; + this.db = db; + this.execute(); +}; + +TaskQueue$1.prototype.addTask = function (fun) { + this.queue.push(fun); + if (this.failed) { + this.execute(); + } +}; + +function parseAdapter(name, opts) { + var match = name.match(/([a-z-]*):\/\/(.*)/); + if (match) { + // the http adapter expects the fully qualified name + return { + name: /https?/.test(match[1]) ? match[1] + '://' + match[2] : match[2], + adapter: match[1] + }; + } + + var adapters = PouchDB.adapters; + var preferredAdapters = PouchDB.preferredAdapters; + var prefix = PouchDB.prefix; + var adapterName = opts.adapter; + + if (!adapterName) { // automatically determine adapter + for (var i = 0; i < preferredAdapters.length; ++i) { + adapterName = preferredAdapters[i]; + // check for browsers that have been upgraded from websql-only to websql+idb + /* istanbul ignore if */ + if (adapterName === 'idb' && 'websql' in adapters && + hasLocalStorage() && localStorage['_pouch__websqldb_' + prefix + name]) { + // log it, because this can be confusing during development + guardedConsole('log', 'PouchDB is downgrading "' + name + '" to WebSQL to' + + ' avoid data loss, because it was already opened with WebSQL.'); + continue; // keep using websql to avoid user data loss + } + break; + } + } + + var adapter = adapters[adapterName]; + + // if adapter is invalid, then an error will be thrown later + var usePrefix = (adapter && 'use_prefix' in adapter) ? + adapter.use_prefix : true; + + return { + name: usePrefix ? (prefix + name) : name, + adapter: adapterName + }; +} + +// OK, so here's the deal. Consider this code: +// var db1 = new PouchDB('foo'); +// var db2 = new PouchDB('foo'); +// db1.destroy(); +// ^ these two both need to emit 'destroyed' events, +// as well as the PouchDB constructor itself. +// So we have one db object (whichever one got destroy() called on it) +// responsible for emitting the initial event, which then gets emitted +// by the constructor, which then broadcasts it to any other dbs +// that may have been created with the same name. +function prepareForDestruction(self) { + + function onDestroyed(from_constructor) { + self.removeListener('closed', onClosed); + if (!from_constructor) { + self.constructor.emit('destroyed', self.name); + } + } + + function onClosed() { + self.removeListener('destroyed', onDestroyed); + self.constructor.emit('unref', self); + } + + self.once('destroyed', onDestroyed); + self.once('closed', onClosed); + self.constructor.emit('ref', self); +} + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(PouchDB, AbstractPouchDB); +function PouchDB(name, opts) { + // In Node our test suite only tests this for PouchAlt unfortunately + /* istanbul ignore if */ + if (!(this instanceof PouchDB)) { + return new PouchDB(name, opts); + } + + var self = this; + opts = opts || {}; + + if (name && typeof name === 'object') { + opts = name; + name = opts.name; + delete opts.name; + } + + this.__opts = opts = clone(opts); + + self.auto_compaction = opts.auto_compaction; + self.prefix = PouchDB.prefix; + + if (typeof name !== 'string') { + throw new Error('Missing/invalid DB name'); + } + + var prefixedName = (opts.prefix || '') + name; + var backend = parseAdapter(prefixedName, opts); + + opts.name = backend.name; + opts.adapter = opts.adapter || backend.adapter; + + self.name = name; + self._adapter = opts.adapter; + PouchDB.emit('debug', ['adapter', 'Picked adapter: ', opts.adapter]); + + if (!PouchDB.adapters[opts.adapter] || + !PouchDB.adapters[opts.adapter].valid()) { + throw new Error('Invalid Adapter: ' + opts.adapter); + } + + AbstractPouchDB.call(self); + self.taskqueue = new TaskQueue$1(); + + self.adapter = opts.adapter; + + PouchDB.adapters[opts.adapter].call(self, opts, function (err) { + if (err) { + return self.taskqueue.fail(err); + } + prepareForDestruction(self); + + self.emit('created', self); + PouchDB.emit('created', self.name); + self.taskqueue.ready(self); + }); + +} + +PouchDB.adapters = {}; +PouchDB.preferredAdapters = []; + +PouchDB.prefix = '_pouch_'; + +var eventEmitter = new __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"](); + +function setUpEventEmitter(Pouch) { + Object.keys(__WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].prototype).forEach(function (key) { + if (typeof __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].prototype[key] === 'function') { + Pouch[key] = eventEmitter[key].bind(eventEmitter); + } + }); + + // these are created in constructor.js, and allow us to notify each DB with + // the same name that it was destroyed, via the constructor object + var destructListeners = Pouch._destructionListeners = new ExportedMap(); + + Pouch.on('ref', function onConstructorRef(db) { + if (!destructListeners.has(db.name)) { + destructListeners.set(db.name, []); + } + destructListeners.get(db.name).push(db); + }); + + Pouch.on('unref', function onConstructorUnref(db) { + if (!destructListeners.has(db.name)) { + return; + } + var dbList = destructListeners.get(db.name); + var pos = dbList.indexOf(db); + if (pos < 0) { + /* istanbul ignore next */ + return; + } + dbList.splice(pos, 1); + if (dbList.length > 1) { + /* istanbul ignore next */ + destructListeners.set(db.name, dbList); + } else { + destructListeners.delete(db.name); + } + }); + + Pouch.on('destroyed', function onConstructorDestroyed(name) { + if (!destructListeners.has(name)) { + return; + } + var dbList = destructListeners.get(name); + destructListeners.delete(name); + dbList.forEach(function (db) { + db.emit('destroyed',true); + }); + }); +} + +setUpEventEmitter(PouchDB); + +PouchDB.adapter = function (id, obj, addToPreferredAdapters) { + /* istanbul ignore else */ + if (obj.valid()) { + PouchDB.adapters[id] = obj; + if (addToPreferredAdapters) { + PouchDB.preferredAdapters.push(id); + } + } +}; + +PouchDB.plugin = function (obj) { + if (typeof obj === 'function') { // function style for plugins + obj(PouchDB); + } else if (typeof obj !== 'object' || Object.keys(obj).length === 0) { + throw new Error('Invalid plugin: got "' + obj + '", expected an object or a function'); + } else { + Object.keys(obj).forEach(function (id) { // object style for plugins + PouchDB.prototype[id] = obj[id]; + }); + } + if (this.__defaults) { + PouchDB.__defaults = $inject_Object_assign({}, this.__defaults); + } + return PouchDB; +}; + +PouchDB.defaults = function (defaultOpts) { + function PouchAlt(name, opts) { + if (!(this instanceof PouchAlt)) { + return new PouchAlt(name, opts); + } + + opts = opts || {}; + + if (name && typeof name === 'object') { + opts = name; + name = opts.name; + delete opts.name; + } + + opts = $inject_Object_assign({}, PouchAlt.__defaults, opts); + PouchDB.call(this, name, opts); + } + + __WEBPACK_IMPORTED_MODULE_4_inherits___default()(PouchAlt, PouchDB); + + PouchAlt.preferredAdapters = PouchDB.preferredAdapters.slice(); + Object.keys(PouchDB).forEach(function (key) { + if (!(key in PouchAlt)) { + PouchAlt[key] = PouchDB[key]; + } + }); + + // make default options transitive + // https://github.com/pouchdb/pouchdb/issues/5922 + PouchAlt.__defaults = $inject_Object_assign({}, this.__defaults, defaultOpts); + + return PouchAlt; +}; + +// managed automatically by set-version.js +var version = "6.4.3"; + +function debugPouch(PouchDB) { + PouchDB.debug = __WEBPACK_IMPORTED_MODULE_6_debug___default.a; + var logs = {}; + /* istanbul ignore next */ + PouchDB.on('debug', function (args) { + // first argument is log identifier + var logId = args[0]; + // rest should be passed verbatim to debug module + var logArgs = args.slice(1); + if (!logs[logId]) { + logs[logId] = __WEBPACK_IMPORTED_MODULE_6_debug___default()('pouchdb:' + logId); + } + logs[logId].apply(null, logArgs); + }); +} + +// this would just be "return doc[field]", but fields +// can be "deep" due to dot notation +function getFieldFromDoc(doc, parsedField) { + var value = doc; + for (var i = 0, len = parsedField.length; i < len; i++) { + var key = parsedField[i]; + value = value[key]; + if (!value) { + break; + } + } + return value; +} + +function compare$1(left, right) { + return left < right ? -1 : left > right ? 1 : 0; +} + +// Converts a string in dot notation to an array of its components, with backslash escaping +function parseField(fieldName) { + // fields may be deep (e.g. "foo.bar.baz"), so parse + var fields = []; + var current = ''; + for (var i = 0, len = fieldName.length; i < len; i++) { + var ch = fieldName[i]; + if (ch === '.') { + if (i > 0 && fieldName[i - 1] === '\\') { // escaped delimiter + current = current.substring(0, current.length - 1) + '.'; + } else { // not escaped, so delimiter + fields.push(current); + current = ''; + } + } else { // normal character + current += ch; + } + } + fields.push(current); + return fields; +} + +var combinationFields = ['$or', '$nor', '$not']; +function isCombinationalField(field) { + return combinationFields.indexOf(field) > -1; +} + +function getKey(obj) { + return Object.keys(obj)[0]; +} + +function getValue(obj) { + return obj[getKey(obj)]; +} + + +// flatten an array of selectors joined by an $and operator +function mergeAndedSelectors(selectors) { + + // sort to ensure that e.g. if the user specified + // $and: [{$gt: 'a'}, {$gt: 'b'}], then it's collapsed into + // just {$gt: 'b'} + var res = {}; + + selectors.forEach(function (selector) { + Object.keys(selector).forEach(function (field) { + var matcher = selector[field]; + if (typeof matcher !== 'object') { + matcher = {$eq: matcher}; + } + + if (isCombinationalField(field)) { + if (matcher instanceof Array) { + res[field] = matcher.map(function (m) { + return mergeAndedSelectors([m]); + }); + } else { + res[field] = mergeAndedSelectors([matcher]); + } + } else { + var fieldMatchers = res[field] = res[field] || {}; + Object.keys(matcher).forEach(function (operator) { + var value = matcher[operator]; + + if (operator === '$gt' || operator === '$gte') { + return mergeGtGte(operator, value, fieldMatchers); + } else if (operator === '$lt' || operator === '$lte') { + return mergeLtLte(operator, value, fieldMatchers); + } else if (operator === '$ne') { + return mergeNe(value, fieldMatchers); + } else if (operator === '$eq') { + return mergeEq(value, fieldMatchers); + } + fieldMatchers[operator] = value; + }); + } + }); + }); + + return res; +} + + + +// collapse logically equivalent gt/gte values +function mergeGtGte(operator, value, fieldMatchers) { + if (typeof fieldMatchers.$eq !== 'undefined') { + return; // do nothing + } + if (typeof fieldMatchers.$gte !== 'undefined') { + if (operator === '$gte') { + if (value > fieldMatchers.$gte) { // more specificity + fieldMatchers.$gte = value; + } + } else { // operator === '$gt' + if (value >= fieldMatchers.$gte) { // more specificity + delete fieldMatchers.$gte; + fieldMatchers.$gt = value; + } + } + } else if (typeof fieldMatchers.$gt !== 'undefined') { + if (operator === '$gte') { + if (value > fieldMatchers.$gt) { // more specificity + delete fieldMatchers.$gt; + fieldMatchers.$gte = value; + } + } else { // operator === '$gt' + if (value > fieldMatchers.$gt) { // more specificity + fieldMatchers.$gt = value; + } + } + } else { + fieldMatchers[operator] = value; + } +} + +// collapse logically equivalent lt/lte values +function mergeLtLte(operator, value, fieldMatchers) { + if (typeof fieldMatchers.$eq !== 'undefined') { + return; // do nothing + } + if (typeof fieldMatchers.$lte !== 'undefined') { + if (operator === '$lte') { + if (value < fieldMatchers.$lte) { // more specificity + fieldMatchers.$lte = value; + } + } else { // operator === '$gt' + if (value <= fieldMatchers.$lte) { // more specificity + delete fieldMatchers.$lte; + fieldMatchers.$lt = value; + } + } + } else if (typeof fieldMatchers.$lt !== 'undefined') { + if (operator === '$lte') { + if (value < fieldMatchers.$lt) { // more specificity + delete fieldMatchers.$lt; + fieldMatchers.$lte = value; + } + } else { // operator === '$gt' + if (value < fieldMatchers.$lt) { // more specificity + fieldMatchers.$lt = value; + } + } + } else { + fieldMatchers[operator] = value; + } +} + +// combine $ne values into one array +function mergeNe(value, fieldMatchers) { + if ('$ne' in fieldMatchers) { + // there are many things this could "not" be + fieldMatchers.$ne.push(value); + } else { // doesn't exist yet + fieldMatchers.$ne = [value]; + } +} + +// add $eq into the mix +function mergeEq(value, fieldMatchers) { + // these all have less specificity than the $eq + // TODO: check for user errors here + delete fieldMatchers.$gt; + delete fieldMatchers.$gte; + delete fieldMatchers.$lt; + delete fieldMatchers.$lte; + delete fieldMatchers.$ne; + fieldMatchers.$eq = value; +} + + +// +// normalize the selector +// +function massageSelector(input) { + var result = clone(input); + var wasAnded = false; + if ('$and' in result) { + result = mergeAndedSelectors(result['$and']); + wasAnded = true; + } + + ['$or', '$nor'].forEach(function (orOrNor) { + if (orOrNor in result) { + // message each individual selector + // e.g. {foo: 'bar'} becomes {foo: {$eq: 'bar'}} + result[orOrNor].forEach(function (subSelector) { + var fields = Object.keys(subSelector); + for (var i = 0; i < fields.length; i++) { + var field = fields[i]; + var matcher = subSelector[field]; + if (typeof matcher !== 'object' || matcher === null) { + subSelector[field] = {$eq: matcher}; + } + } + }); + } + }); + + if ('$not' in result) { + //This feels a little like forcing, but it will work for now, + //I would like to come back to this and make the merging of selectors a little more generic + result['$not'] = mergeAndedSelectors([result['$not']]); + } + + var fields = Object.keys(result); + + for (var i = 0; i < fields.length; i++) { + var field = fields[i]; + var matcher = result[field]; + + if (typeof matcher !== 'object' || matcher === null) { + matcher = {$eq: matcher}; + } else if ('$ne' in matcher && !wasAnded) { + // I put these in an array, since there may be more than one + // but in the "mergeAnded" operation, I already take care of that + matcher.$ne = [matcher.$ne]; + } + result[field] = matcher; + } + + return result; +} + +function pad(str, padWith, upToLength) { + var padding = ''; + var targetLength = upToLength - str.length; + /* istanbul ignore next */ + while (padding.length < targetLength) { + padding += padWith; + } + return padding; +} + +function padLeft(str, padWith, upToLength) { + var padding = pad(str, padWith, upToLength); + return padding + str; +} + +var MIN_MAGNITUDE = -324; // verified by -Number.MIN_VALUE +var MAGNITUDE_DIGITS = 3; // ditto +var SEP = ''; // set to '_' for easier debugging + +function collate(a, b) { + + if (a === b) { + return 0; + } + + a = normalizeKey(a); + b = normalizeKey(b); + + var ai = collationIndex(a); + var bi = collationIndex(b); + if ((ai - bi) !== 0) { + return ai - bi; + } + switch (typeof a) { + case 'number': + return a - b; + case 'boolean': + return a < b ? -1 : 1; + case 'string': + return stringCollate(a, b); + } + return Array.isArray(a) ? arrayCollate(a, b) : objectCollate(a, b); +} + +// couch considers null/NaN/Infinity/-Infinity === undefined, +// for the purposes of mapreduce indexes. also, dates get stringified. +function normalizeKey(key) { + switch (typeof key) { + case 'undefined': + return null; + case 'number': + if (key === Infinity || key === -Infinity || isNaN(key)) { + return null; + } + return key; + case 'object': + var origKey = key; + if (Array.isArray(key)) { + var len = key.length; + key = new Array(len); + for (var i = 0; i < len; i++) { + key[i] = normalizeKey(origKey[i]); + } + /* istanbul ignore next */ + } else if (key instanceof Date) { + return key.toJSON(); + } else if (key !== null) { // generic object + key = {}; + for (var k in origKey) { + if (origKey.hasOwnProperty(k)) { + var val = origKey[k]; + if (typeof val !== 'undefined') { + key[k] = normalizeKey(val); + } + } + } + } + } + return key; +} + +function indexify(key) { + if (key !== null) { + switch (typeof key) { + case 'boolean': + return key ? 1 : 0; + case 'number': + return numToIndexableString(key); + case 'string': + // We've to be sure that key does not contain \u0000 + // Do order-preserving replacements: + // 0 -> 1, 1 + // 1 -> 1, 2 + // 2 -> 2, 2 + return key + .replace(/\u0002/g, '\u0002\u0002') + .replace(/\u0001/g, '\u0001\u0002') + .replace(/\u0000/g, '\u0001\u0001'); + case 'object': + var isArray = Array.isArray(key); + var arr = isArray ? key : Object.keys(key); + var i = -1; + var len = arr.length; + var result = ''; + if (isArray) { + while (++i < len) { + result += toIndexableString(arr[i]); + } + } else { + while (++i < len) { + var objKey = arr[i]; + result += toIndexableString(objKey) + + toIndexableString(key[objKey]); + } + } + return result; + } + } + return ''; +} + +// convert the given key to a string that would be appropriate +// for lexical sorting, e.g. within a database, where the +// sorting is the same given by the collate() function. +function toIndexableString(key) { + var zero = '\u0000'; + key = normalizeKey(key); + return collationIndex(key) + SEP + indexify(key) + zero; +} + +function parseNumber(str, i) { + var originalIdx = i; + var num; + var zero = str[i] === '1'; + if (zero) { + num = 0; + i++; + } else { + var neg = str[i] === '0'; + i++; + var numAsString = ''; + var magAsString = str.substring(i, i + MAGNITUDE_DIGITS); + var magnitude = parseInt(magAsString, 10) + MIN_MAGNITUDE; + /* istanbul ignore next */ + if (neg) { + magnitude = -magnitude; + } + i += MAGNITUDE_DIGITS; + while (true) { + var ch = str[i]; + if (ch === '\u0000') { + break; + } else { + numAsString += ch; + } + i++; + } + numAsString = numAsString.split('.'); + if (numAsString.length === 1) { + num = parseInt(numAsString, 10); + } else { + /* istanbul ignore next */ + num = parseFloat(numAsString[0] + '.' + numAsString[1]); + } + /* istanbul ignore next */ + if (neg) { + num = num - 10; + } + /* istanbul ignore next */ + if (magnitude !== 0) { + // parseFloat is more reliable than pow due to rounding errors + // e.g. Number.MAX_VALUE would return Infinity if we did + // num * Math.pow(10, magnitude); + num = parseFloat(num + 'e' + magnitude); + } + } + return {num: num, length : i - originalIdx}; +} + +// move up the stack while parsing +// this function moved outside of parseIndexableString for performance +function pop(stack, metaStack) { + var obj = stack.pop(); + + if (metaStack.length) { + var lastMetaElement = metaStack[metaStack.length - 1]; + if (obj === lastMetaElement.element) { + // popping a meta-element, e.g. an object whose value is another object + metaStack.pop(); + lastMetaElement = metaStack[metaStack.length - 1]; + } + var element = lastMetaElement.element; + var lastElementIndex = lastMetaElement.index; + if (Array.isArray(element)) { + element.push(obj); + } else if (lastElementIndex === stack.length - 2) { // obj with key+value + var key = stack.pop(); + element[key] = obj; + } else { + stack.push(obj); // obj with key only + } + } +} + +function parseIndexableString(str) { + var stack = []; + var metaStack = []; // stack for arrays and objects + var i = 0; + + /*eslint no-constant-condition: ["error", { "checkLoops": false }]*/ + while (true) { + var collationIndex = str[i++]; + if (collationIndex === '\u0000') { + if (stack.length === 1) { + return stack.pop(); + } else { + pop(stack, metaStack); + continue; + } + } + switch (collationIndex) { + case '1': + stack.push(null); + break; + case '2': + stack.push(str[i] === '1'); + i++; + break; + case '3': + var parsedNum = parseNumber(str, i); + stack.push(parsedNum.num); + i += parsedNum.length; + break; + case '4': + var parsedStr = ''; + /*eslint no-constant-condition: ["error", { "checkLoops": false }]*/ + while (true) { + var ch = str[i]; + if (ch === '\u0000') { + break; + } + parsedStr += ch; + i++; + } + // perform the reverse of the order-preserving replacement + // algorithm (see above) + parsedStr = parsedStr.replace(/\u0001\u0001/g, '\u0000') + .replace(/\u0001\u0002/g, '\u0001') + .replace(/\u0002\u0002/g, '\u0002'); + stack.push(parsedStr); + break; + case '5': + var arrayElement = { element: [], index: stack.length }; + stack.push(arrayElement.element); + metaStack.push(arrayElement); + break; + case '6': + var objElement = { element: {}, index: stack.length }; + stack.push(objElement.element); + metaStack.push(objElement); + break; + /* istanbul ignore next */ + default: + throw new Error( + 'bad collationIndex or unexpectedly reached end of input: ' + + collationIndex); + } + } +} + +function arrayCollate(a, b) { + var len = Math.min(a.length, b.length); + for (var i = 0; i < len; i++) { + var sort = collate(a[i], b[i]); + if (sort !== 0) { + return sort; + } + } + return (a.length === b.length) ? 0 : + (a.length > b.length) ? 1 : -1; +} +function stringCollate(a, b) { + // See: https://github.com/daleharvey/pouchdb/issues/40 + // This is incompatible with the CouchDB implementation, but its the + // best we can do for now + return (a === b) ? 0 : ((a > b) ? 1 : -1); +} +function objectCollate(a, b) { + var ak = Object.keys(a), bk = Object.keys(b); + var len = Math.min(ak.length, bk.length); + for (var i = 0; i < len; i++) { + // First sort the keys + var sort = collate(ak[i], bk[i]); + if (sort !== 0) { + return sort; + } + // if the keys are equal sort the values + sort = collate(a[ak[i]], b[bk[i]]); + if (sort !== 0) { + return sort; + } + + } + return (ak.length === bk.length) ? 0 : + (ak.length > bk.length) ? 1 : -1; +} +// The collation is defined by erlangs ordered terms +// the atoms null, true, false come first, then numbers, strings, +// arrays, then objects +// null/undefined/NaN/Infinity/-Infinity are all considered null +function collationIndex(x) { + var id = ['boolean', 'number', 'string', 'object']; + var idx = id.indexOf(typeof x); + //false if -1 otherwise true, but fast!!!!1 + if (~idx) { + if (x === null) { + return 1; + } + if (Array.isArray(x)) { + return 5; + } + return idx < 3 ? (idx + 2) : (idx + 3); + } + /* istanbul ignore next */ + if (Array.isArray(x)) { + return 5; + } +} + +// conversion: +// x yyy zz...zz +// x = 0 for negative, 1 for 0, 2 for positive +// y = exponent (for negative numbers negated) moved so that it's >= 0 +// z = mantisse +function numToIndexableString(num) { + + if (num === 0) { + return '1'; + } + + // convert number to exponential format for easier and + // more succinct string sorting + var expFormat = num.toExponential().split(/e\+?/); + var magnitude = parseInt(expFormat[1], 10); + + var neg = num < 0; + + var result = neg ? '0' : '2'; + + // first sort by magnitude + // it's easier if all magnitudes are positive + var magForComparison = ((neg ? -magnitude : magnitude) - MIN_MAGNITUDE); + var magString = padLeft((magForComparison).toString(), '0', MAGNITUDE_DIGITS); + + result += SEP + magString; + + // then sort by the factor + var factor = Math.abs(parseFloat(expFormat[0])); // [1..10) + /* istanbul ignore next */ + if (neg) { // for negative reverse ordering + factor = 10 - factor; + } + + var factorStr = factor.toFixed(20); + + // strip zeros from the end + factorStr = factorStr.replace(/\.?0+$/, ''); + + result += SEP + factorStr; + + return result; +} + +// create a comparator based on the sort object +function createFieldSorter(sort) { + + function getFieldValuesAsArray(doc) { + return sort.map(function (sorting) { + var fieldName = getKey(sorting); + var parsedField = parseField(fieldName); + var docFieldValue = getFieldFromDoc(doc, parsedField); + return docFieldValue; + }); + } + + return function (aRow, bRow) { + var aFieldValues = getFieldValuesAsArray(aRow.doc); + var bFieldValues = getFieldValuesAsArray(bRow.doc); + var collation = collate(aFieldValues, bFieldValues); + if (collation !== 0) { + return collation; + } + // this is what mango seems to do + return compare$1(aRow.doc._id, bRow.doc._id); + }; +} + +function filterInMemoryFields(rows, requestDef, inMemoryFields) { + rows = rows.filter(function (row) { + return rowFilter(row.doc, requestDef.selector, inMemoryFields); + }); + + if (requestDef.sort) { + // in-memory sort + var fieldSorter = createFieldSorter(requestDef.sort); + rows = rows.sort(fieldSorter); + if (typeof requestDef.sort[0] !== 'string' && + getValue(requestDef.sort[0]) === 'desc') { + rows = rows.reverse(); + } + } + + if ('limit' in requestDef || 'skip' in requestDef) { + // have to do the limit in-memory + var skip = requestDef.skip || 0; + var limit = ('limit' in requestDef ? requestDef.limit : rows.length) + skip; + rows = rows.slice(skip, limit); + } + return rows; +} + +function rowFilter(doc, selector, inMemoryFields) { + return inMemoryFields.every(function (field) { + var matcher = selector[field]; + var parsedField = parseField(field); + var docFieldValue = getFieldFromDoc(doc, parsedField); + if (isCombinationalField(field)) { + return matchCominationalSelector(field, matcher, doc); + } + + return matchSelector(matcher, doc, parsedField, docFieldValue); + }); +} + +function matchSelector(matcher, doc, parsedField, docFieldValue) { + if (!matcher) { + // no filtering necessary; this field is just needed for sorting + return true; + } + + return Object.keys(matcher).every(function (userOperator) { + var userValue = matcher[userOperator]; + return match(userOperator, doc, userValue, parsedField, docFieldValue); + }); +} + +function matchCominationalSelector(field, matcher, doc) { + + if (field === '$or') { + return matcher.some(function (orMatchers) { + return rowFilter(doc, orMatchers, Object.keys(orMatchers)); + }); + } + + if (field === '$not') { + return !rowFilter(doc, matcher, Object.keys(matcher)); + } + + //`$nor` + return !matcher.find(function (orMatchers) { + return rowFilter(doc, orMatchers, Object.keys(orMatchers)); + }); + +} + +function match(userOperator, doc, userValue, parsedField, docFieldValue) { + if (!matchers[userOperator]) { + throw new Error('unknown operator "' + userOperator + + '" - should be one of $eq, $lte, $lt, $gt, $gte, $exists, $ne, $in, ' + + '$nin, $size, $mod, $regex, $elemMatch, $type, $allMatch or $all'); + } + return matchers[userOperator](doc, userValue, parsedField, docFieldValue); +} + +function fieldExists(docFieldValue) { + return typeof docFieldValue !== 'undefined' && docFieldValue !== null; +} + +function fieldIsNotUndefined(docFieldValue) { + return typeof docFieldValue !== 'undefined'; +} + +function modField(docFieldValue, userValue) { + var divisor = userValue[0]; + var mod = userValue[1]; + if (divisor === 0) { + throw new Error('Bad divisor, cannot divide by zero'); + } + + if (parseInt(divisor, 10) !== divisor ) { + throw new Error('Divisor is not an integer'); + } + + if (parseInt(mod, 10) !== mod ) { + throw new Error('Modulus is not an integer'); + } + + if (parseInt(docFieldValue, 10) !== docFieldValue) { + return false; + } + + return docFieldValue % divisor === mod; +} + +function arrayContainsValue(docFieldValue, userValue) { + return userValue.some(function (val) { + if (docFieldValue instanceof Array) { + return docFieldValue.indexOf(val) > -1; + } + + return docFieldValue === val; + }); +} + +function arrayContainsAllValues(docFieldValue, userValue) { + return userValue.every(function (val) { + return docFieldValue.indexOf(val) > -1; + }); +} + +function arraySize(docFieldValue, userValue) { + return docFieldValue.length === userValue; +} + +function regexMatch(docFieldValue, userValue) { + var re = new RegExp(userValue); + + return re.test(docFieldValue); +} + +function typeMatch(docFieldValue, userValue) { + + switch (userValue) { + case 'null': + return docFieldValue === null; + case 'boolean': + return typeof (docFieldValue) === 'boolean'; + case 'number': + return typeof (docFieldValue) === 'number'; + case 'string': + return typeof (docFieldValue) === 'string'; + case 'array': + return docFieldValue instanceof Array; + case 'object': + return ({}).toString.call(docFieldValue) === '[object Object]'; + } + + throw new Error(userValue + ' not supported as a type.' + + 'Please use one of object, string, array, number, boolean or null.'); + +} + +var matchers = { + + '$elemMatch': function (doc, userValue, parsedField, docFieldValue) { + if (!Array.isArray(docFieldValue)) { + return false; + } + + if (docFieldValue.length === 0) { + return false; + } + + if (typeof docFieldValue[0] === 'object') { + return docFieldValue.some(function (val) { + return rowFilter(val, userValue, Object.keys(userValue)); + }); + } + + return docFieldValue.some(function (val) { + return matchSelector(userValue, doc, parsedField, val); + }); + }, + + '$allMatch': function (doc, userValue, parsedField, docFieldValue) { + if (!Array.isArray(docFieldValue)) { + return false; + } + + /* istanbul ignore next */ + if (docFieldValue.length === 0) { + return false; + } + + if (typeof docFieldValue[0] === 'object') { + return docFieldValue.every(function (val) { + return rowFilter(val, userValue, Object.keys(userValue)); + }); + } + + return docFieldValue.every(function (val) { + return matchSelector(userValue, doc, parsedField, val); + }); + }, + + '$eq': function (doc, userValue, parsedField, docFieldValue) { + return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) === 0; + }, + + '$gte': function (doc, userValue, parsedField, docFieldValue) { + return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) >= 0; + }, + + '$gt': function (doc, userValue, parsedField, docFieldValue) { + return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) > 0; + }, + + '$lte': function (doc, userValue, parsedField, docFieldValue) { + return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) <= 0; + }, + + '$lt': function (doc, userValue, parsedField, docFieldValue) { + return fieldIsNotUndefined(docFieldValue) && collate(docFieldValue, userValue) < 0; + }, + + '$exists': function (doc, userValue, parsedField, docFieldValue) { + //a field that is null is still considered to exist + if (userValue) { + return fieldIsNotUndefined(docFieldValue); + } + + return !fieldIsNotUndefined(docFieldValue); + }, + + '$mod': function (doc, userValue, parsedField, docFieldValue) { + return fieldExists(docFieldValue) && modField(docFieldValue, userValue); + }, + + '$ne': function (doc, userValue, parsedField, docFieldValue) { + return userValue.every(function (neValue) { + return collate(docFieldValue, neValue) !== 0; + }); + }, + '$in': function (doc, userValue, parsedField, docFieldValue) { + return fieldExists(docFieldValue) && arrayContainsValue(docFieldValue, userValue); + }, + + '$nin': function (doc, userValue, parsedField, docFieldValue) { + return fieldExists(docFieldValue) && !arrayContainsValue(docFieldValue, userValue); + }, + + '$size': function (doc, userValue, parsedField, docFieldValue) { + return fieldExists(docFieldValue) && arraySize(docFieldValue, userValue); + }, + + '$all': function (doc, userValue, parsedField, docFieldValue) { + return Array.isArray(docFieldValue) && arrayContainsAllValues(docFieldValue, userValue); + }, + + '$regex': function (doc, userValue, parsedField, docFieldValue) { + return fieldExists(docFieldValue) && regexMatch(docFieldValue, userValue); + }, + + '$type': function (doc, userValue, parsedField, docFieldValue) { + return typeMatch(docFieldValue, userValue); + } +}; + +// return true if the given doc matches the supplied selector +function matchesSelector(doc, selector) { + /* istanbul ignore if */ + if (typeof selector !== 'object') { + // match the CouchDB error message + throw new Error('Selector error: expected a JSON object'); + } + + selector = massageSelector(selector); + var row = { + 'doc': doc + }; + + var rowsMatched = filterInMemoryFields([row], { 'selector': selector }, Object.keys(selector)); + return rowsMatched && rowsMatched.length === 1; +} + +function evalFilter(input) { + return scopeEval('"use strict";\nreturn ' + input + ';', {}); +} + +function evalView(input) { + var code = [ + 'return function(doc) {', + ' "use strict";', + ' var emitted = false;', + ' var emit = function (a, b) {', + ' emitted = true;', + ' };', + ' var view = ' + input + ';', + ' view(doc);', + ' if (emitted) {', + ' return true;', + ' }', + '};' + ].join('\n'); + + return scopeEval(code, {}); +} + +function validate(opts, callback) { + if (opts.selector) { + if (opts.filter && opts.filter !== '_selector') { + var filterName = typeof opts.filter === 'string' ? + opts.filter : 'function'; + return callback(new Error('selector invalid for filter "' + filterName + '"')); + } + } + callback(); +} + +function normalize(opts) { + if (opts.view && !opts.filter) { + opts.filter = '_view'; + } + + if (opts.selector && !opts.filter) { + opts.filter = '_selector'; + } + + if (opts.filter && typeof opts.filter === 'string') { + if (opts.filter === '_view') { + opts.view = normalizeDesignDocFunctionName(opts.view); + } else { + opts.filter = normalizeDesignDocFunctionName(opts.filter); + } + } +} + +function shouldFilter(changesHandler, opts) { + return opts.filter && typeof opts.filter === 'string' && + !opts.doc_ids && !isRemote(changesHandler.db); +} + +function filter(changesHandler, opts) { + var callback = opts.complete; + if (opts.filter === '_view') { + if (!opts.view || typeof opts.view !== 'string') { + var err = createError(BAD_REQUEST, + '`view` filter parameter not found or invalid.'); + return callback(err); + } + // fetch a view from a design doc, make it behave like a filter + var viewName = parseDesignDocFunctionName(opts.view); + changesHandler.db.get('_design/' + viewName[0], function (err, ddoc) { + /* istanbul ignore if */ + if (changesHandler.isCancelled) { + return callback(null, {status: 'cancelled'}); + } + /* istanbul ignore next */ + if (err) { + return callback(generateErrorFromResponse(err)); + } + var mapFun = ddoc && ddoc.views && ddoc.views[viewName[1]] && + ddoc.views[viewName[1]].map; + if (!mapFun) { + return callback(createError(MISSING_DOC, + (ddoc.views ? 'missing json key: ' + viewName[1] : + 'missing json key: views'))); + } + opts.filter = evalView(mapFun); + changesHandler.doChanges(opts); + }); + } else if (opts.selector) { + opts.filter = function (doc) { + return matchesSelector(doc, opts.selector); + }; + changesHandler.doChanges(opts); + } else { + // fetch a filter from a design doc + var filterName = parseDesignDocFunctionName(opts.filter); + changesHandler.db.get('_design/' + filterName[0], function (err, ddoc) { + /* istanbul ignore if */ + if (changesHandler.isCancelled) { + return callback(null, {status: 'cancelled'}); + } + /* istanbul ignore next */ + if (err) { + return callback(generateErrorFromResponse(err)); + } + var filterFun = ddoc && ddoc.filters && ddoc.filters[filterName[1]]; + if (!filterFun) { + return callback(createError(MISSING_DOC, + ((ddoc && ddoc.filters) ? 'missing json key: ' + filterName[1] + : 'missing json key: filters'))); + } + opts.filter = evalFilter(filterFun); + changesHandler.doChanges(opts); + }); + } +} + +function applyChangesFilterPlugin(PouchDB) { + PouchDB._changesFilterPlugin = { + validate: validate, + normalize: normalize, + shouldFilter: shouldFilter, + filter: filter + }; +} + +// TODO: remove from pouchdb-core (breaking) +PouchDB.plugin(debugPouch); + +// TODO: remove from pouchdb-core (breaking) +PouchDB.plugin(applyChangesFilterPlugin); + +PouchDB.version = version; + +function toObject(array) { + return array.reduce(function (obj, item) { + obj[item] = true; + return obj; + }, {}); +} +// List of top level reserved words for doc +var reservedWords = toObject([ + '_id', + '_rev', + '_attachments', + '_deleted', + '_revisions', + '_revs_info', + '_conflicts', + '_deleted_conflicts', + '_local_seq', + '_rev_tree', + //replication documents + '_replication_id', + '_replication_state', + '_replication_state_time', + '_replication_state_reason', + '_replication_stats', + // Specific to Couchbase Sync Gateway + '_removed' +]); + +// List of reserved words that should end up the document +var dataWords = toObject([ + '_attachments', + //replication documents + '_replication_id', + '_replication_state', + '_replication_state_time', + '_replication_state_reason', + '_replication_stats' +]); + +function parseRevisionInfo(rev$$1) { + if (!/^\d+-./.test(rev$$1)) { + return createError(INVALID_REV); + } + var idx = rev$$1.indexOf('-'); + var left = rev$$1.substring(0, idx); + var right = rev$$1.substring(idx + 1); + return { + prefix: parseInt(left, 10), + id: right + }; +} + +function makeRevTreeFromRevisions(revisions, opts) { + var pos = revisions.start - revisions.ids.length + 1; + + var revisionIds = revisions.ids; + var ids = [revisionIds[0], opts, []]; + + for (var i = 1, len = revisionIds.length; i < len; i++) { + ids = [revisionIds[i], {status: 'missing'}, [ids]]; + } + + return [{ + pos: pos, + ids: ids + }]; +} + +// Preprocess documents, parse their revisions, assign an id and a +// revision for new writes that are missing them, etc +function parseDoc(doc, newEdits) { + + var nRevNum; + var newRevId; + var revInfo; + var opts = {status: 'available'}; + if (doc._deleted) { + opts.deleted = true; + } + + if (newEdits) { + if (!doc._id) { + doc._id = uuid(); + } + newRevId = rev(); + if (doc._rev) { + revInfo = parseRevisionInfo(doc._rev); + if (revInfo.error) { + return revInfo; + } + doc._rev_tree = [{ + pos: revInfo.prefix, + ids: [revInfo.id, {status: 'missing'}, [[newRevId, opts, []]]] + }]; + nRevNum = revInfo.prefix + 1; + } else { + doc._rev_tree = [{ + pos: 1, + ids : [newRevId, opts, []] + }]; + nRevNum = 1; + } + } else { + if (doc._revisions) { + doc._rev_tree = makeRevTreeFromRevisions(doc._revisions, opts); + nRevNum = doc._revisions.start; + newRevId = doc._revisions.ids[0]; + } + if (!doc._rev_tree) { + revInfo = parseRevisionInfo(doc._rev); + if (revInfo.error) { + return revInfo; + } + nRevNum = revInfo.prefix; + newRevId = revInfo.id; + doc._rev_tree = [{ + pos: nRevNum, + ids: [newRevId, opts, []] + }]; + } + } + + invalidIdError(doc._id); + + doc._rev = nRevNum + '-' + newRevId; + + var result = {metadata : {}, data : {}}; + for (var key in doc) { + /* istanbul ignore else */ + if (Object.prototype.hasOwnProperty.call(doc, key)) { + var specialKey = key[0] === '_'; + if (specialKey && !reservedWords[key]) { + var error = createError(DOC_VALIDATION, key); + error.message = DOC_VALIDATION.message + ': ' + key; + throw error; + } else if (specialKey && !dataWords[key]) { + result.metadata[key.slice(1)] = doc[key]; + } else { + result.data[key] = doc[key]; + } + } + } + return result; +} + +var thisAtob = function (str) { + return atob(str); +}; + +var thisBtoa = function (str) { + return btoa(str); +}; + +// Abstracts constructing a Blob object, so it also works in older +// browsers that don't support the native Blob constructor (e.g. +// old QtWebKit versions, Android < 4.4). +function createBlob(parts, properties) { + /* global BlobBuilder,MSBlobBuilder,MozBlobBuilder,WebKitBlobBuilder */ + parts = parts || []; + properties = properties || {}; + try { + return new Blob(parts, properties); + } catch (e) { + if (e.name !== "TypeError") { + throw e; + } + var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : + typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : + typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : + WebKitBlobBuilder; + var builder = new Builder(); + for (var i = 0; i < parts.length; i += 1) { + builder.append(parts[i]); + } + return builder.getBlob(properties.type); + } +} + +// From http://stackoverflow.com/questions/14967647/ (continues on next line) +// encode-decode-image-with-base64-breaks-image (2013-04-21) +function binaryStringToArrayBuffer(bin) { + var length = bin.length; + var buf = new ArrayBuffer(length); + var arr = new Uint8Array(buf); + for (var i = 0; i < length; i++) { + arr[i] = bin.charCodeAt(i); + } + return buf; +} + +function binStringToBluffer(binString, type) { + return createBlob([binaryStringToArrayBuffer(binString)], {type: type}); +} + +function b64ToBluffer(b64, type) { + return binStringToBluffer(thisAtob(b64), type); +} + +//Can't find original post, but this is close +//http://stackoverflow.com/questions/6965107/ (continues on next line) +//converting-between-strings-and-arraybuffers +function arrayBufferToBinaryString(buffer) { + var binary = ''; + var bytes = new Uint8Array(buffer); + var length = bytes.byteLength; + for (var i = 0; i < length; i++) { + binary += String.fromCharCode(bytes[i]); + } + return binary; +} + +// shim for browsers that don't support it +function readAsBinaryString(blob, callback) { + if (typeof FileReader === 'undefined') { + // fix for Firefox in a web worker + // https://bugzilla.mozilla.org/show_bug.cgi?id=901097 + return callback(arrayBufferToBinaryString( + new FileReaderSync().readAsArrayBuffer(blob))); + } + + var reader = new FileReader(); + var hasBinaryString = typeof reader.readAsBinaryString === 'function'; + reader.onloadend = function (e) { + var result = e.target.result || ''; + if (hasBinaryString) { + return callback(result); + } + callback(arrayBufferToBinaryString(result)); + }; + if (hasBinaryString) { + reader.readAsBinaryString(blob); + } else { + reader.readAsArrayBuffer(blob); + } +} + +function blobToBinaryString(blobOrBuffer, callback) { + readAsBinaryString(blobOrBuffer, function (bin) { + callback(bin); + }); +} + +function blobToBase64(blobOrBuffer, callback) { + blobToBinaryString(blobOrBuffer, function (base64) { + callback(thisBtoa(base64)); + }); +} + +// simplified API. universal browser support is assumed +function readAsArrayBuffer(blob, callback) { + if (typeof FileReader === 'undefined') { + // fix for Firefox in a web worker: + // https://bugzilla.mozilla.org/show_bug.cgi?id=901097 + return callback(new FileReaderSync().readAsArrayBuffer(blob)); + } + + var reader = new FileReader(); + reader.onloadend = function (e) { + var result = e.target.result || new ArrayBuffer(0); + callback(result); + }; + reader.readAsArrayBuffer(blob); +} + +// this is not used in the browser + +var setImmediateShim = global.setImmediate || global.setTimeout; +var MD5_CHUNK_SIZE = 32768; + +function rawToBase64(raw) { + return thisBtoa(raw); +} + +function sliceBlob(blob, start, end) { + if (blob.webkitSlice) { + return blob.webkitSlice(start, end); + } + return blob.slice(start, end); +} + +function appendBlob(buffer, blob, start, end, callback) { + if (start > 0 || end < blob.size) { + // only slice blob if we really need to + blob = sliceBlob(blob, start, end); + } + readAsArrayBuffer(blob, function (arrayBuffer) { + buffer.append(arrayBuffer); + callback(); + }); +} + +function appendString(buffer, string, start, end, callback) { + if (start > 0 || end < string.length) { + // only create a substring if we really need to + string = string.substring(start, end); + } + buffer.appendBinary(string); + callback(); +} + +function binaryMd5(data, callback) { + var inputIsString = typeof data === 'string'; + var len = inputIsString ? data.length : data.size; + var chunkSize = Math.min(MD5_CHUNK_SIZE, len); + var chunks = Math.ceil(len / chunkSize); + var currentChunk = 0; + var buffer = inputIsString ? new __WEBPACK_IMPORTED_MODULE_7_spark_md5___default.a() : new __WEBPACK_IMPORTED_MODULE_7_spark_md5___default.a.ArrayBuffer(); + + var append = inputIsString ? appendString : appendBlob; + + function next() { + setImmediateShim(loadNextChunk); + } + + function done() { + var raw = buffer.end(true); + var base64 = rawToBase64(raw); + callback(base64); + buffer.destroy(); + } + + function loadNextChunk() { + var start = currentChunk * chunkSize; + var end = start + chunkSize; + currentChunk++; + if (currentChunk < chunks) { + append(buffer, data, start, end, next); + } else { + append(buffer, data, start, end, done); + } + } + loadNextChunk(); +} + +function stringMd5(string) { + return __WEBPACK_IMPORTED_MODULE_7_spark_md5___default.a.hash(string); +} + +function parseBase64(data) { + try { + return thisAtob(data); + } catch (e) { + var err = createError(BAD_ARG, + 'Attachment is not a valid base64 string'); + return {error: err}; + } +} + +function preprocessString(att, blobType, callback) { + var asBinary = parseBase64(att.data); + if (asBinary.error) { + return callback(asBinary.error); + } + + att.length = asBinary.length; + if (blobType === 'blob') { + att.data = binStringToBluffer(asBinary, att.content_type); + } else if (blobType === 'base64') { + att.data = thisBtoa(asBinary); + } else { // binary + att.data = asBinary; + } + binaryMd5(asBinary, function (result) { + att.digest = 'md5-' + result; + callback(); + }); +} + +function preprocessBlob(att, blobType, callback) { + binaryMd5(att.data, function (md5) { + att.digest = 'md5-' + md5; + // size is for blobs (browser), length is for buffers (node) + att.length = att.data.size || att.data.length || 0; + if (blobType === 'binary') { + blobToBinaryString(att.data, function (binString) { + att.data = binString; + callback(); + }); + } else if (blobType === 'base64') { + blobToBase64(att.data, function (b64) { + att.data = b64; + callback(); + }); + } else { + callback(); + } + }); +} + +function preprocessAttachment(att, blobType, callback) { + if (att.stub) { + return callback(); + } + if (typeof att.data === 'string') { // input is a base64 string + preprocessString(att, blobType, callback); + } else { // input is a blob + preprocessBlob(att, blobType, callback); + } +} + +function preprocessAttachments(docInfos, blobType, callback) { + + if (!docInfos.length) { + return callback(); + } + + var docv = 0; + var overallErr; + + docInfos.forEach(function (docInfo) { + var attachments = docInfo.data && docInfo.data._attachments ? + Object.keys(docInfo.data._attachments) : []; + var recv = 0; + + if (!attachments.length) { + return done(); + } + + function processedAttachment(err) { + overallErr = err; + recv++; + if (recv === attachments.length) { + done(); + } + } + + for (var key in docInfo.data._attachments) { + if (docInfo.data._attachments.hasOwnProperty(key)) { + preprocessAttachment(docInfo.data._attachments[key], + blobType, processedAttachment); + } + } + }); + + function done() { + docv++; + if (docInfos.length === docv) { + if (overallErr) { + callback(overallErr); + } else { + callback(); + } + } + } +} + +function updateDoc(revLimit, prev, docInfo, results, + i, cb, writeDoc, newEdits) { + + if (revExists(prev.rev_tree, docInfo.metadata.rev)) { + results[i] = docInfo; + return cb(); + } + + // sometimes this is pre-calculated. historically not always + var previousWinningRev = prev.winningRev || winningRev(prev); + var previouslyDeleted = 'deleted' in prev ? prev.deleted : + isDeleted(prev, previousWinningRev); + var deleted = 'deleted' in docInfo.metadata ? docInfo.metadata.deleted : + isDeleted(docInfo.metadata); + var isRoot = /^1-/.test(docInfo.metadata.rev); + + if (previouslyDeleted && !deleted && newEdits && isRoot) { + var newDoc = docInfo.data; + newDoc._rev = previousWinningRev; + newDoc._id = docInfo.metadata.id; + docInfo = parseDoc(newDoc, newEdits); + } + + var merged = merge(prev.rev_tree, docInfo.metadata.rev_tree[0], revLimit); + + var inConflict = newEdits && (( + (previouslyDeleted && deleted && merged.conflicts !== 'new_leaf') || + (!previouslyDeleted && merged.conflicts !== 'new_leaf') || + (previouslyDeleted && !deleted && merged.conflicts === 'new_branch'))); + + if (inConflict) { + var err = createError(REV_CONFLICT); + results[i] = err; + return cb(); + } + + var newRev = docInfo.metadata.rev; + docInfo.metadata.rev_tree = merged.tree; + docInfo.stemmedRevs = merged.stemmedRevs || []; + /* istanbul ignore else */ + if (prev.rev_map) { + docInfo.metadata.rev_map = prev.rev_map; // used only by leveldb + } + + // recalculate + var winningRev$$1 = winningRev(docInfo.metadata); + var winningRevIsDeleted = isDeleted(docInfo.metadata, winningRev$$1); + + // calculate the total number of documents that were added/removed, + // from the perspective of total_rows/doc_count + var delta = (previouslyDeleted === winningRevIsDeleted) ? 0 : + previouslyDeleted < winningRevIsDeleted ? -1 : 1; + + var newRevIsDeleted; + if (newRev === winningRev$$1) { + // if the new rev is the same as the winning rev, we can reuse that value + newRevIsDeleted = winningRevIsDeleted; + } else { + // if they're not the same, then we need to recalculate + newRevIsDeleted = isDeleted(docInfo.metadata, newRev); + } + + writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted, + true, delta, i, cb); +} + +function rootIsMissing(docInfo) { + return docInfo.metadata.rev_tree[0].ids[1].status === 'missing'; +} + +function processDocs(revLimit, docInfos, api, fetchedDocs, tx, results, + writeDoc, opts, overallCallback) { + + // Default to 1000 locally + revLimit = revLimit || 1000; + + function insertDoc(docInfo, resultsIdx, callback) { + // Cant insert new deleted documents + var winningRev$$1 = winningRev(docInfo.metadata); + var deleted = isDeleted(docInfo.metadata, winningRev$$1); + if ('was_delete' in opts && deleted) { + results[resultsIdx] = createError(MISSING_DOC, 'deleted'); + return callback(); + } + + // 4712 - detect whether a new document was inserted with a _rev + var inConflict = newEdits && rootIsMissing(docInfo); + + if (inConflict) { + var err = createError(REV_CONFLICT); + results[resultsIdx] = err; + return callback(); + } + + var delta = deleted ? 0 : 1; + + writeDoc(docInfo, winningRev$$1, deleted, deleted, false, + delta, resultsIdx, callback); + } + + var newEdits = opts.new_edits; + var idsToDocs = new ExportedMap(); + + var docsDone = 0; + var docsToDo = docInfos.length; + + function checkAllDocsDone() { + if (++docsDone === docsToDo && overallCallback) { + overallCallback(); + } + } + + docInfos.forEach(function (currentDoc, resultsIdx) { + + if (currentDoc._id && isLocalId(currentDoc._id)) { + var fun = currentDoc._deleted ? '_removeLocal' : '_putLocal'; + api[fun](currentDoc, {ctx: tx}, function (err, res) { + results[resultsIdx] = err || res; + checkAllDocsDone(); + }); + return; + } + + var id = currentDoc.metadata.id; + if (idsToDocs.has(id)) { + docsToDo--; // duplicate + idsToDocs.get(id).push([currentDoc, resultsIdx]); + } else { + idsToDocs.set(id, [[currentDoc, resultsIdx]]); + } + }); + + // in the case of new_edits, the user can provide multiple docs + // with the same id. these need to be processed sequentially + idsToDocs.forEach(function (docs, id) { + var numDone = 0; + + function docWritten() { + if (++numDone < docs.length) { + nextDoc(); + } else { + checkAllDocsDone(); + } + } + function nextDoc() { + var value = docs[numDone]; + var currentDoc = value[0]; + var resultsIdx = value[1]; + + if (fetchedDocs.has(id)) { + updateDoc(revLimit, fetchedDocs.get(id), currentDoc, results, + resultsIdx, docWritten, writeDoc, newEdits); + } else { + // Ensure stemming applies to new writes as well + var merged = merge([], currentDoc.metadata.rev_tree[0], revLimit); + currentDoc.metadata.rev_tree = merged.tree; + currentDoc.stemmedRevs = merged.stemmedRevs || []; + insertDoc(currentDoc, resultsIdx, docWritten); + } + } + nextDoc(); + }); +} + +// IndexedDB requires a versioned database structure, so we use the +// version here to manage migrations. +var ADAPTER_VERSION = 5; + +// The object stores created for each database +// DOC_STORE stores the document meta data, its revision history and state +// Keyed by document id +var DOC_STORE = 'document-store'; +// BY_SEQ_STORE stores a particular version of a document, keyed by its +// sequence id +var BY_SEQ_STORE = 'by-sequence'; +// Where we store attachments +var ATTACH_STORE = 'attach-store'; +// Where we store many-to-many relations +// between attachment digests and seqs +var ATTACH_AND_SEQ_STORE = 'attach-seq-store'; + +// Where we store database-wide meta data in a single record +// keyed by id: META_STORE +var META_STORE = 'meta-store'; +// Where we store local documents +var LOCAL_STORE = 'local-store'; +// Where we detect blob support +var DETECT_BLOB_SUPPORT_STORE = 'detect-blob-support'; + +function safeJsonParse(str) { + // This try/catch guards against stack overflow errors. + // JSON.parse() is faster than vuvuzela.parse() but vuvuzela + // cannot overflow. + try { + return JSON.parse(str); + } catch (e) { + /* istanbul ignore next */ + return __WEBPACK_IMPORTED_MODULE_8_vuvuzela___default.a.parse(str); + } +} + +function safeJsonStringify(json) { + try { + return JSON.stringify(json); + } catch (e) { + /* istanbul ignore next */ + return __WEBPACK_IMPORTED_MODULE_8_vuvuzela___default.a.stringify(json); + } +} + +function idbError(callback) { + return function (evt) { + var message = 'unknown_error'; + if (evt.target && evt.target.error) { + message = evt.target.error.name || evt.target.error.message; + } + callback(createError(IDB_ERROR, message, evt.type)); + }; +} + +// Unfortunately, the metadata has to be stringified +// when it is put into the database, because otherwise +// IndexedDB can throw errors for deeply-nested objects. +// Originally we just used JSON.parse/JSON.stringify; now +// we use this custom vuvuzela library that avoids recursion. +// If we could do it all over again, we'd probably use a +// format for the revision trees other than JSON. +function encodeMetadata(metadata, winningRev, deleted) { + return { + data: safeJsonStringify(metadata), + winningRev: winningRev, + deletedOrLocal: deleted ? '1' : '0', + seq: metadata.seq, // highest seq for this doc + id: metadata.id + }; +} + +function decodeMetadata(storedObject) { + if (!storedObject) { + return null; + } + var metadata = safeJsonParse(storedObject.data); + metadata.winningRev = storedObject.winningRev; + metadata.deleted = storedObject.deletedOrLocal === '1'; + metadata.seq = storedObject.seq; + return metadata; +} + +// read the doc back out from the database. we don't store the +// _id or _rev because we already have _doc_id_rev. +function decodeDoc(doc) { + if (!doc) { + return doc; + } + var idx = doc._doc_id_rev.lastIndexOf(':'); + doc._id = doc._doc_id_rev.substring(0, idx - 1); + doc._rev = doc._doc_id_rev.substring(idx + 1); + delete doc._doc_id_rev; + return doc; +} + +// Read a blob from the database, encoding as necessary +// and translating from base64 if the IDB doesn't support +// native Blobs +function readBlobData(body, type, asBlob, callback) { + if (asBlob) { + if (!body) { + callback(createBlob([''], {type: type})); + } else if (typeof body !== 'string') { // we have blob support + callback(body); + } else { // no blob support + callback(b64ToBluffer(body, type)); + } + } else { // as base64 string + if (!body) { + callback(''); + } else if (typeof body !== 'string') { // we have blob support + readAsBinaryString(body, function (binary) { + callback(thisBtoa(binary)); + }); + } else { // no blob support + callback(body); + } + } +} + +function fetchAttachmentsIfNecessary(doc, opts, txn, cb) { + var attachments = Object.keys(doc._attachments || {}); + if (!attachments.length) { + return cb && cb(); + } + var numDone = 0; + + function checkDone() { + if (++numDone === attachments.length && cb) { + cb(); + } + } + + function fetchAttachment(doc, att) { + var attObj = doc._attachments[att]; + var digest = attObj.digest; + var req = txn.objectStore(ATTACH_STORE).get(digest); + req.onsuccess = function (e) { + attObj.body = e.target.result.body; + checkDone(); + }; + } + + attachments.forEach(function (att) { + if (opts.attachments && opts.include_docs) { + fetchAttachment(doc, att); + } else { + doc._attachments[att].stub = true; + checkDone(); + } + }); +} + +// IDB-specific postprocessing necessary because +// we don't know whether we stored a true Blob or +// a base64-encoded string, and if it's a Blob it +// needs to be read outside of the transaction context +function postProcessAttachments(results, asBlob) { + return PouchPromise.all(results.map(function (row) { + if (row.doc && row.doc._attachments) { + var attNames = Object.keys(row.doc._attachments); + return PouchPromise.all(attNames.map(function (att) { + var attObj = row.doc._attachments[att]; + if (!('body' in attObj)) { // already processed + return; + } + var body = attObj.body; + var type = attObj.content_type; + return new PouchPromise(function (resolve) { + readBlobData(body, type, asBlob, function (data) { + row.doc._attachments[att] = $inject_Object_assign( + pick(attObj, ['digest', 'content_type']), + {data: data} + ); + resolve(); + }); + }); + })); + } + })); +} + +function compactRevs(revs, docId, txn) { + + var possiblyOrphanedDigests = []; + var seqStore = txn.objectStore(BY_SEQ_STORE); + var attStore = txn.objectStore(ATTACH_STORE); + var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE); + var count = revs.length; + + function checkDone() { + count--; + if (!count) { // done processing all revs + deleteOrphanedAttachments(); + } + } + + function deleteOrphanedAttachments() { + if (!possiblyOrphanedDigests.length) { + return; + } + possiblyOrphanedDigests.forEach(function (digest) { + var countReq = attAndSeqStore.index('digestSeq').count( + IDBKeyRange.bound( + digest + '::', digest + '::\uffff', false, false)); + countReq.onsuccess = function (e) { + var count = e.target.result; + if (!count) { + // orphaned + attStore.delete(digest); + } + }; + }); + } + + revs.forEach(function (rev$$1) { + var index = seqStore.index('_doc_id_rev'); + var key = docId + "::" + rev$$1; + index.getKey(key).onsuccess = function (e) { + var seq = e.target.result; + if (typeof seq !== 'number') { + return checkDone(); + } + seqStore.delete(seq); + + var cursor = attAndSeqStore.index('seq') + .openCursor(IDBKeyRange.only(seq)); + + cursor.onsuccess = function (event) { + var cursor = event.target.result; + if (cursor) { + var digest = cursor.value.digestSeq.split('::')[0]; + possiblyOrphanedDigests.push(digest); + attAndSeqStore.delete(cursor.primaryKey); + cursor.continue(); + } else { // done + checkDone(); + } + }; + }; + }); +} + +function openTransactionSafely(idb, stores, mode) { + try { + return { + txn: idb.transaction(stores, mode) + }; + } catch (err) { + return { + error: err + }; + } +} + +var changesHandler$$1 = new Changes(); + +function idbBulkDocs(dbOpts, req, opts, api, idb, callback) { + var docInfos = req.docs; + var txn; + var docStore; + var bySeqStore; + var attachStore; + var attachAndSeqStore; + var metaStore; + var docInfoError; + var metaDoc; + + for (var i = 0, len = docInfos.length; i < len; i++) { + var doc = docInfos[i]; + if (doc._id && isLocalId(doc._id)) { + continue; + } + doc = docInfos[i] = parseDoc(doc, opts.new_edits); + if (doc.error && !docInfoError) { + docInfoError = doc; + } + } + + if (docInfoError) { + return callback(docInfoError); + } + + var allDocsProcessed = false; + var docCountDelta = 0; + var results = new Array(docInfos.length); + var fetchedDocs = new ExportedMap(); + var preconditionErrored = false; + var blobType = api._meta.blobSupport ? 'blob' : 'base64'; + + preprocessAttachments(docInfos, blobType, function (err) { + if (err) { + return callback(err); + } + startTransaction(); + }); + + function startTransaction() { + + var stores = [ + DOC_STORE, BY_SEQ_STORE, + ATTACH_STORE, + LOCAL_STORE, ATTACH_AND_SEQ_STORE, + META_STORE + ]; + var txnResult = openTransactionSafely(idb, stores, 'readwrite'); + if (txnResult.error) { + return callback(txnResult.error); + } + txn = txnResult.txn; + txn.onabort = idbError(callback); + txn.ontimeout = idbError(callback); + txn.oncomplete = complete; + docStore = txn.objectStore(DOC_STORE); + bySeqStore = txn.objectStore(BY_SEQ_STORE); + attachStore = txn.objectStore(ATTACH_STORE); + attachAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE); + metaStore = txn.objectStore(META_STORE); + + metaStore.get(META_STORE).onsuccess = function (e) { + metaDoc = e.target.result; + updateDocCountIfReady(); + }; + + verifyAttachments(function (err) { + if (err) { + preconditionErrored = true; + return callback(err); + } + fetchExistingDocs(); + }); + } + + function onAllDocsProcessed() { + allDocsProcessed = true; + updateDocCountIfReady(); + } + + function idbProcessDocs() { + processDocs(dbOpts.revs_limit, docInfos, api, fetchedDocs, + txn, results, writeDoc, opts, onAllDocsProcessed); + } + + function updateDocCountIfReady() { + if (!metaDoc || !allDocsProcessed) { + return; + } + // caching the docCount saves a lot of time in allDocs() and + // info(), which is why we go to all the trouble of doing this + metaDoc.docCount += docCountDelta; + metaStore.put(metaDoc); + } + + function fetchExistingDocs() { + + if (!docInfos.length) { + return; + } + + var numFetched = 0; + + function checkDone() { + if (++numFetched === docInfos.length) { + idbProcessDocs(); + } + } + + function readMetadata(event) { + var metadata = decodeMetadata(event.target.result); + + if (metadata) { + fetchedDocs.set(metadata.id, metadata); + } + checkDone(); + } + + for (var i = 0, len = docInfos.length; i < len; i++) { + var docInfo = docInfos[i]; + if (docInfo._id && isLocalId(docInfo._id)) { + checkDone(); // skip local docs + continue; + } + var req = docStore.get(docInfo.metadata.id); + req.onsuccess = readMetadata; + } + } + + function complete() { + if (preconditionErrored) { + return; + } + + changesHandler$$1.notify(api._meta.name); + callback(null, results); + } + + function verifyAttachment(digest, callback) { + + var req = attachStore.get(digest); + req.onsuccess = function (e) { + if (!e.target.result) { + var err = createError(MISSING_STUB, + 'unknown stub attachment with digest ' + + digest); + err.status = 412; + callback(err); + } else { + callback(); + } + }; + } + + function verifyAttachments(finish) { + + + var digests = []; + docInfos.forEach(function (docInfo) { + if (docInfo.data && docInfo.data._attachments) { + Object.keys(docInfo.data._attachments).forEach(function (filename) { + var att = docInfo.data._attachments[filename]; + if (att.stub) { + digests.push(att.digest); + } + }); + } + }); + if (!digests.length) { + return finish(); + } + var numDone = 0; + var err; + + function checkDone() { + if (++numDone === digests.length) { + finish(err); + } + } + digests.forEach(function (digest) { + verifyAttachment(digest, function (attErr) { + if (attErr && !err) { + err = attErr; + } + checkDone(); + }); + }); + } + + function writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted, + isUpdate, delta, resultsIdx, callback) { + + docInfo.metadata.winningRev = winningRev$$1; + docInfo.metadata.deleted = winningRevIsDeleted; + + var doc = docInfo.data; + doc._id = docInfo.metadata.id; + doc._rev = docInfo.metadata.rev; + + if (newRevIsDeleted) { + doc._deleted = true; + } + + var hasAttachments = doc._attachments && + Object.keys(doc._attachments).length; + if (hasAttachments) { + return writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted, + isUpdate, resultsIdx, callback); + } + + docCountDelta += delta; + updateDocCountIfReady(); + + finishDoc(docInfo, winningRev$$1, winningRevIsDeleted, + isUpdate, resultsIdx, callback); + } + + function finishDoc(docInfo, winningRev$$1, winningRevIsDeleted, + isUpdate, resultsIdx, callback) { + + var doc = docInfo.data; + var metadata = docInfo.metadata; + + doc._doc_id_rev = metadata.id + '::' + metadata.rev; + delete doc._id; + delete doc._rev; + + function afterPutDoc(e) { + var revsToDelete = docInfo.stemmedRevs || []; + + if (isUpdate && api.auto_compaction) { + revsToDelete = revsToDelete.concat(compactTree(docInfo.metadata)); + } + + if (revsToDelete && revsToDelete.length) { + compactRevs(revsToDelete, docInfo.metadata.id, txn); + } + + metadata.seq = e.target.result; + // Current _rev is calculated from _rev_tree on read + // delete metadata.rev; + var metadataToStore = encodeMetadata(metadata, winningRev$$1, + winningRevIsDeleted); + var metaDataReq = docStore.put(metadataToStore); + metaDataReq.onsuccess = afterPutMetadata; + } + + function afterPutDocError(e) { + // ConstraintError, need to update, not put (see #1638 for details) + e.preventDefault(); // avoid transaction abort + e.stopPropagation(); // avoid transaction onerror + var index = bySeqStore.index('_doc_id_rev'); + var getKeyReq = index.getKey(doc._doc_id_rev); + getKeyReq.onsuccess = function (e) { + var putReq = bySeqStore.put(doc, e.target.result); + putReq.onsuccess = afterPutDoc; + }; + } + + function afterPutMetadata() { + results[resultsIdx] = { + ok: true, + id: metadata.id, + rev: metadata.rev + }; + fetchedDocs.set(docInfo.metadata.id, docInfo.metadata); + insertAttachmentMappings(docInfo, metadata.seq, callback); + } + + var putReq = bySeqStore.put(doc); + + putReq.onsuccess = afterPutDoc; + putReq.onerror = afterPutDocError; + } + + function writeAttachments(docInfo, winningRev$$1, winningRevIsDeleted, + isUpdate, resultsIdx, callback) { + + + var doc = docInfo.data; + + var numDone = 0; + var attachments = Object.keys(doc._attachments); + + function collectResults() { + if (numDone === attachments.length) { + finishDoc(docInfo, winningRev$$1, winningRevIsDeleted, + isUpdate, resultsIdx, callback); + } + } + + function attachmentSaved() { + numDone++; + collectResults(); + } + + attachments.forEach(function (key) { + var att = docInfo.data._attachments[key]; + if (!att.stub) { + var data = att.data; + delete att.data; + att.revpos = parseInt(winningRev$$1, 10); + var digest = att.digest; + saveAttachment(digest, data, attachmentSaved); + } else { + numDone++; + collectResults(); + } + }); + } + + // map seqs to attachment digests, which + // we will need later during compaction + function insertAttachmentMappings(docInfo, seq, callback) { + + var attsAdded = 0; + var attsToAdd = Object.keys(docInfo.data._attachments || {}); + + if (!attsToAdd.length) { + return callback(); + } + + function checkDone() { + if (++attsAdded === attsToAdd.length) { + callback(); + } + } + + function add(att) { + var digest = docInfo.data._attachments[att].digest; + var req = attachAndSeqStore.put({ + seq: seq, + digestSeq: digest + '::' + seq + }); + + req.onsuccess = checkDone; + req.onerror = function (e) { + // this callback is for a constaint error, which we ignore + // because this docid/rev has already been associated with + // the digest (e.g. when new_edits == false) + e.preventDefault(); // avoid transaction abort + e.stopPropagation(); // avoid transaction onerror + checkDone(); + }; + } + for (var i = 0; i < attsToAdd.length; i++) { + add(attsToAdd[i]); // do in parallel + } + } + + function saveAttachment(digest, data, callback) { + + + var getKeyReq = attachStore.count(digest); + getKeyReq.onsuccess = function (e) { + var count = e.target.result; + if (count) { + return callback(); // already exists + } + var newAtt = { + digest: digest, + body: data + }; + var putReq = attachStore.put(newAtt); + putReq.onsuccess = callback; + }; + } +} + +// Abstraction over IDBCursor and getAll()/getAllKeys() that allows us to batch our operations +// while falling back to a normal IDBCursor operation on browsers that don't support getAll() or +// getAllKeys(). This allows for a much faster implementation than just straight-up cursors, because +// we're not processing each document one-at-a-time. +function runBatchedCursor(objectStore, keyRange, descending, batchSize, onBatch) { + + // Bail out of getAll()/getAllKeys() in the following cases: + // 1) either method is unsupported - we need both + // 2) batchSize is 1 (might as well use IDBCursor), or batchSize is -1 (i.e. batchSize unlimited, + // not really clear the user wants a batched approach where the entire DB is read into memory, + // perhaps they are filtering on a per-doc basis) + // 3) descending – no real way to do this via getAll()/getAllKeys() + + var useGetAll = typeof objectStore.getAll === 'function' && + typeof objectStore.getAllKeys === 'function' && + batchSize > 1 && !descending; + + var keysBatch; + var valuesBatch; + var pseudoCursor; + + function onGetAll(e) { + valuesBatch = e.target.result; + if (keysBatch) { + onBatch(keysBatch, valuesBatch, pseudoCursor); + } + } + + function onGetAllKeys(e) { + keysBatch = e.target.result; + if (valuesBatch) { + onBatch(keysBatch, valuesBatch, pseudoCursor); + } + } + + function continuePseudoCursor() { + if (!keysBatch.length) { // no more results + return onBatch(); + } + // fetch next batch, exclusive start + var lastKey = keysBatch[keysBatch.length - 1]; + var newKeyRange; + if (keyRange && keyRange.upper) { + try { + newKeyRange = IDBKeyRange.bound(lastKey, keyRange.upper, + true, keyRange.upperOpen); + } catch (e) { + if (e.name === "DataError" && e.code === 0) { + return onBatch(); // we're done, startkey and endkey are equal + } + } + } else { + newKeyRange = IDBKeyRange.lowerBound(lastKey, true); + } + keyRange = newKeyRange; + keysBatch = null; + valuesBatch = null; + objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll; + objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys; + } + + function onCursor(e) { + var cursor = e.target.result; + if (!cursor) { // done + return onBatch(); + } + // regular IDBCursor acts like a batch where batch size is always 1 + onBatch([cursor.key], [cursor.value], cursor); + } + + if (useGetAll) { + pseudoCursor = {"continue": continuePseudoCursor}; + objectStore.getAll(keyRange, batchSize).onsuccess = onGetAll; + objectStore.getAllKeys(keyRange, batchSize).onsuccess = onGetAllKeys; + } else if (descending) { + objectStore.openCursor(keyRange, 'prev').onsuccess = onCursor; + } else { + objectStore.openCursor(keyRange).onsuccess = onCursor; + } +} + +// simple shim for objectStore.getAll(), falling back to IDBCursor +function getAll(objectStore, keyRange, onSuccess) { + if (typeof objectStore.getAll === 'function') { + // use native getAll + objectStore.getAll(keyRange).onsuccess = onSuccess; + return; + } + // fall back to cursors + var values = []; + + function onCursor(e) { + var cursor = e.target.result; + if (cursor) { + values.push(cursor.value); + cursor.continue(); + } else { + onSuccess({ + target: { + result: values + } + }); + } + } + + objectStore.openCursor(keyRange).onsuccess = onCursor; +} + +function allDocsKeys(keys, docStore, onBatch) { + // It's not guaranted to be returned in right order + var valuesBatch = []; + var count = 0; + keys.forEach(function (key, index) { + docStore.get(key).onsuccess = function (event) { + if (event.target.result) { + valuesBatch[index] = event.target.result; + } else { + valuesBatch[index] = {key: key, error: 'not_found'}; + } + count++; + if (count === keys.length) { + onBatch(keys, valuesBatch, {}); + } + }; + }); +} + +function createKeyRange(start, end, inclusiveEnd, key, descending) { + try { + if (start && end) { + if (descending) { + return IDBKeyRange.bound(end, start, !inclusiveEnd, false); + } else { + return IDBKeyRange.bound(start, end, false, !inclusiveEnd); + } + } else if (start) { + if (descending) { + return IDBKeyRange.upperBound(start); + } else { + return IDBKeyRange.lowerBound(start); + } + } else if (end) { + if (descending) { + return IDBKeyRange.lowerBound(end, !inclusiveEnd); + } else { + return IDBKeyRange.upperBound(end, !inclusiveEnd); + } + } else if (key) { + return IDBKeyRange.only(key); + } + } catch (e) { + return {error: e}; + } + return null; +} + +function idbAllDocs(opts, idb, callback) { + var start = 'startkey' in opts ? opts.startkey : false; + var end = 'endkey' in opts ? opts.endkey : false; + var key = 'key' in opts ? opts.key : false; + var keys = 'keys' in opts ? opts.keys : false; + var skip = opts.skip || 0; + var limit = typeof opts.limit === 'number' ? opts.limit : -1; + var inclusiveEnd = opts.inclusive_end !== false; + + var keyRange; + var keyRangeError; + if (!keys) { + keyRange = createKeyRange(start, end, inclusiveEnd, key, opts.descending); + keyRangeError = keyRange && keyRange.error; + if (keyRangeError && + !(keyRangeError.name === "DataError" && keyRangeError.code === 0)) { + // DataError with error code 0 indicates start is less than end, so + // can just do an empty query. Else need to throw + return callback(createError(IDB_ERROR, + keyRangeError.name, keyRangeError.message)); + } + } + + var stores = [DOC_STORE, BY_SEQ_STORE, META_STORE]; + + if (opts.attachments) { + stores.push(ATTACH_STORE); + } + var txnResult = openTransactionSafely(idb, stores, 'readonly'); + if (txnResult.error) { + return callback(txnResult.error); + } + var txn = txnResult.txn; + txn.oncomplete = onTxnComplete; + txn.onabort = idbError(callback); + var docStore = txn.objectStore(DOC_STORE); + var seqStore = txn.objectStore(BY_SEQ_STORE); + var metaStore = txn.objectStore(META_STORE); + var docIdRevIndex = seqStore.index('_doc_id_rev'); + var results = []; + var docCount; + var updateSeq; + + metaStore.get(META_STORE).onsuccess = function (e) { + docCount = e.target.result.docCount; + }; + + /* istanbul ignore if */ + if (opts.update_seq) { + getMaxUpdateSeq(seqStore, function (e) { + if (e.target.result && e.target.result.length > 0) { + updateSeq = e.target.result[0]; + } + }); + } + + function getMaxUpdateSeq(objectStore, onSuccess) { + function onCursor(e) { + var cursor = e.target.result; + var maxKey = undefined; + if (cursor && cursor.key) { + maxKey = cursor.key; + } + return onSuccess({ + target: { + result: [maxKey] + } + }); + } + objectStore.openCursor(null, 'prev').onsuccess = onCursor; + } + + // if the user specifies include_docs=true, then we don't + // want to block the main cursor while we're fetching the doc + function fetchDocAsynchronously(metadata, row, winningRev$$1) { + var key = metadata.id + "::" + winningRev$$1; + docIdRevIndex.get(key).onsuccess = function onGetDoc(e) { + row.doc = decodeDoc(e.target.result); + if (opts.conflicts) { + var conflicts = collectConflicts(metadata); + if (conflicts.length) { + row.doc._conflicts = conflicts; + } + } + fetchAttachmentsIfNecessary(row.doc, opts, txn); + }; + } + + function allDocsInner(winningRev$$1, metadata) { + var row = { + id: metadata.id, + key: metadata.id, + value: { + rev: winningRev$$1 + } + }; + var deleted = metadata.deleted; + if (deleted) { + if (keys) { + results.push(row); + // deleted docs are okay with "keys" requests + row.value.deleted = true; + row.doc = null; + } + } else if (skip-- <= 0) { + results.push(row); + if (opts.include_docs) { + fetchDocAsynchronously(metadata, row, winningRev$$1); + } + } + } + + function processBatch(batchValues) { + for (var i = 0, len = batchValues.length; i < len; i++) { + if (results.length === limit) { + break; + } + var batchValue = batchValues[i]; + if (batchValue.error && keys) { + // key was not found with "keys" requests + results.push(batchValue); + continue; + } + var metadata = decodeMetadata(batchValue); + var winningRev$$1 = metadata.winningRev; + allDocsInner(winningRev$$1, metadata); + } + } + + function onBatch(batchKeys, batchValues, cursor) { + if (!cursor) { + return; + } + processBatch(batchValues); + if (results.length < limit) { + cursor.continue(); + } + } + + function onGetAll(e) { + var values = e.target.result; + if (opts.descending) { + values = values.reverse(); + } + processBatch(values); + } + + function onResultsReady() { + var returnVal = { + total_rows: docCount, + offset: opts.skip, + rows: results + }; + + /* istanbul ignore if */ + if (opts.update_seq && updateSeq !== undefined) { + returnVal.update_seq = updateSeq; + } + callback(null, returnVal); + } + + function onTxnComplete() { + if (opts.attachments) { + postProcessAttachments(results, opts.binary).then(onResultsReady); + } else { + onResultsReady(); + } + } + + // don't bother doing any requests if start > end or limit === 0 + if (keyRangeError || limit === 0) { + return; + } + if (keys) { + return allDocsKeys(opts.keys, docStore, onBatch); + } + if (limit === -1) { // just fetch everything + return getAll(docStore, keyRange, onGetAll); + } + // else do a cursor + // choose a batch size based on the skip, since we'll need to skip that many + runBatchedCursor(docStore, keyRange, opts.descending, limit + skip, onBatch); +} + +// +// Blobs are not supported in all versions of IndexedDB, notably +// Chrome <37 and Android <5. In those versions, storing a blob will throw. +// +// Various other blob bugs exist in Chrome v37-42 (inclusive). +// Detecting them is expensive and confusing to users, and Chrome 37-42 +// is at very low usage worldwide, so we do a hacky userAgent check instead. +// +// content-type bug: https://code.google.com/p/chromium/issues/detail?id=408120 +// 404 bug: https://code.google.com/p/chromium/issues/detail?id=447916 +// FileReader bug: https://code.google.com/p/chromium/issues/detail?id=447836 +// +function checkBlobSupport(txn) { + return new PouchPromise(function (resolve) { + var blob$$1 = createBlob(['']); + var req = txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob$$1, 'key'); + + req.onsuccess = function () { + var matchedChrome = navigator.userAgent.match(/Chrome\/(\d+)/); + var matchedEdge = navigator.userAgent.match(/Edge\//); + // MS Edge pretends to be Chrome 42: + // https://msdn.microsoft.com/en-us/library/hh869301%28v=vs.85%29.aspx + resolve(matchedEdge || !matchedChrome || + parseInt(matchedChrome[1], 10) >= 43); + }; + + txn.onabort = function (e) { + // If the transaction aborts now its due to not being able to + // write to the database, likely due to the disk being full + e.preventDefault(); + e.stopPropagation(); + resolve(false); + }; + }).catch(function () { + return false; // error, so assume unsupported + }); +} + +function countDocs(txn, cb) { + var index = txn.objectStore(DOC_STORE).index('deletedOrLocal'); + index.count(IDBKeyRange.only('0')).onsuccess = function (e) { + cb(e.target.result); + }; +} + +// This task queue ensures that IDB open calls are done in their own tick +// and sequentially - i.e. we wait for the async IDB open to *fully* complete +// before calling the next one. This works around IE/Edge race conditions in IDB. + +var running = false; +var queue = []; + +function tryCode(fun, err, res, PouchDB) { + try { + fun(err, res); + } catch (err) { + // Shouldn't happen, but in some odd cases + // IndexedDB implementations might throw a sync + // error, in which case this will at least log it. + PouchDB.emit('error', err); + } +} + +function applyNext() { + if (running || !queue.length) { + return; + } + running = true; + queue.shift()(); +} + +function enqueueTask(action, callback, PouchDB) { + queue.push(function runAction() { + action(function runCallback(err, res) { + tryCode(callback, err, res, PouchDB); + running = false; + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function runNext() { + applyNext(PouchDB); + }); + }); + }); + applyNext(); +} + +function changes(opts, api, dbName, idb) { + opts = clone(opts); + + if (opts.continuous) { + var id = dbName + ':' + uuid(); + changesHandler$$1.addListener(dbName, id, api, opts); + changesHandler$$1.notify(dbName); + return { + cancel: function () { + changesHandler$$1.removeListener(dbName, id); + } + }; + } + + var docIds = opts.doc_ids && new ExportedSet(opts.doc_ids); + + opts.since = opts.since || 0; + var lastSeq = opts.since; + + var limit = 'limit' in opts ? opts.limit : -1; + if (limit === 0) { + limit = 1; // per CouchDB _changes spec + } + var returnDocs; + if ('return_docs' in opts) { + returnDocs = opts.return_docs; + } else if ('returnDocs' in opts) { + // TODO: Remove 'returnDocs' in favor of 'return_docs' in a future release + returnDocs = opts.returnDocs; + } else { + returnDocs = true; + } + + var results = []; + var numResults = 0; + var filter = filterChange(opts); + var docIdsToMetadata = new ExportedMap(); + + var txn; + var bySeqStore; + var docStore; + var docIdRevIndex; + + function onBatch(batchKeys, batchValues, cursor) { + if (!cursor || !batchKeys.length) { // done + return; + } + + var winningDocs = new Array(batchKeys.length); + var metadatas = new Array(batchKeys.length); + + function processMetadataAndWinningDoc(metadata, winningDoc) { + var change = opts.processChange(winningDoc, metadata, opts); + lastSeq = change.seq = metadata.seq; + + var filtered = filter(change); + if (typeof filtered === 'object') { // anything but true/false indicates error + return opts.complete(filtered); + } + + if (filtered) { + numResults++; + if (returnDocs) { + results.push(change); + } + // process the attachment immediately + // for the benefit of live listeners + if (opts.attachments && opts.include_docs) { + fetchAttachmentsIfNecessary(winningDoc, opts, txn, function () { + postProcessAttachments([change], opts.binary).then(function () { + opts.onChange(change); + }); + }); + } else { + opts.onChange(change); + } + } + } + + function onBatchDone() { + for (var i = 0, len = winningDocs.length; i < len; i++) { + if (numResults === limit) { + break; + } + var winningDoc = winningDocs[i]; + if (!winningDoc) { + continue; + } + var metadata = metadatas[i]; + processMetadataAndWinningDoc(metadata, winningDoc); + } + + if (numResults !== limit) { + cursor.continue(); + } + } + + // Fetch all metadatas/winningdocs from this batch in parallel, then process + // them all only once all data has been collected. This is done in parallel + // because it's faster than doing it one-at-a-time. + var numDone = 0; + batchValues.forEach(function (value, i) { + var doc = decodeDoc(value); + var seq = batchKeys[i]; + fetchWinningDocAndMetadata(doc, seq, function (metadata, winningDoc) { + metadatas[i] = metadata; + winningDocs[i] = winningDoc; + if (++numDone === batchKeys.length) { + onBatchDone(); + } + }); + }); + } + + function onGetMetadata(doc, seq, metadata, cb) { + if (metadata.seq !== seq) { + // some other seq is later + return cb(); + } + + if (metadata.winningRev === doc._rev) { + // this is the winning doc + return cb(metadata, doc); + } + + // fetch winning doc in separate request + var docIdRev = doc._id + '::' + metadata.winningRev; + var req = docIdRevIndex.get(docIdRev); + req.onsuccess = function (e) { + cb(metadata, decodeDoc(e.target.result)); + }; + } + + function fetchWinningDocAndMetadata(doc, seq, cb) { + if (docIds && !docIds.has(doc._id)) { + return cb(); + } + + var metadata = docIdsToMetadata.get(doc._id); + if (metadata) { // cached + return onGetMetadata(doc, seq, metadata, cb); + } + // metadata not cached, have to go fetch it + docStore.get(doc._id).onsuccess = function (e) { + metadata = decodeMetadata(e.target.result); + docIdsToMetadata.set(doc._id, metadata); + onGetMetadata(doc, seq, metadata, cb); + }; + } + + function finish() { + opts.complete(null, { + results: results, + last_seq: lastSeq + }); + } + + function onTxnComplete() { + if (!opts.continuous && opts.attachments) { + // cannot guarantee that postProcessing was already done, + // so do it again + postProcessAttachments(results).then(finish); + } else { + finish(); + } + } + + var objectStores = [DOC_STORE, BY_SEQ_STORE]; + if (opts.attachments) { + objectStores.push(ATTACH_STORE); + } + var txnResult = openTransactionSafely(idb, objectStores, 'readonly'); + if (txnResult.error) { + return opts.complete(txnResult.error); + } + txn = txnResult.txn; + txn.onabort = idbError(opts.complete); + txn.oncomplete = onTxnComplete; + + bySeqStore = txn.objectStore(BY_SEQ_STORE); + docStore = txn.objectStore(DOC_STORE); + docIdRevIndex = bySeqStore.index('_doc_id_rev'); + + var keyRange = (opts.since && !opts.descending) ? + IDBKeyRange.lowerBound(opts.since, true) : null; + + runBatchedCursor(bySeqStore, keyRange, opts.descending, limit, onBatch); +} + +var cachedDBs = new ExportedMap(); +var blobSupportPromise; +var openReqList = new ExportedMap(); + +function IdbPouch(opts, callback) { + var api = this; + + enqueueTask(function (thisCallback) { + init(api, opts, thisCallback); + }, callback, api.constructor); +} + +function init(api, opts, callback) { + + var dbName = opts.name; + + var idb = null; + api._meta = null; + + // called when creating a fresh new database + function createSchema(db) { + var docStore = db.createObjectStore(DOC_STORE, {keyPath : 'id'}); + db.createObjectStore(BY_SEQ_STORE, {autoIncrement: true}) + .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true}); + db.createObjectStore(ATTACH_STORE, {keyPath: 'digest'}); + db.createObjectStore(META_STORE, {keyPath: 'id', autoIncrement: false}); + db.createObjectStore(DETECT_BLOB_SUPPORT_STORE); + + // added in v2 + docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false}); + + // added in v3 + db.createObjectStore(LOCAL_STORE, {keyPath: '_id'}); + + // added in v4 + var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE, + {autoIncrement: true}); + attAndSeqStore.createIndex('seq', 'seq'); + attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true}); + } + + // migration to version 2 + // unfortunately "deletedOrLocal" is a misnomer now that we no longer + // store local docs in the main doc-store, but whaddyagonnado + function addDeletedOrLocalIndex(txn, callback) { + var docStore = txn.objectStore(DOC_STORE); + docStore.createIndex('deletedOrLocal', 'deletedOrLocal', {unique : false}); + + docStore.openCursor().onsuccess = function (event) { + var cursor = event.target.result; + if (cursor) { + var metadata = cursor.value; + var deleted = isDeleted(metadata); + metadata.deletedOrLocal = deleted ? "1" : "0"; + docStore.put(metadata); + cursor.continue(); + } else { + callback(); + } + }; + } + + // migration to version 3 (part 1) + function createLocalStoreSchema(db) { + db.createObjectStore(LOCAL_STORE, {keyPath: '_id'}) + .createIndex('_doc_id_rev', '_doc_id_rev', {unique: true}); + } + + // migration to version 3 (part 2) + function migrateLocalStore(txn, cb) { + var localStore = txn.objectStore(LOCAL_STORE); + var docStore = txn.objectStore(DOC_STORE); + var seqStore = txn.objectStore(BY_SEQ_STORE); + + var cursor = docStore.openCursor(); + cursor.onsuccess = function (event) { + var cursor = event.target.result; + if (cursor) { + var metadata = cursor.value; + var docId = metadata.id; + var local = isLocalId(docId); + var rev$$1 = winningRev(metadata); + if (local) { + var docIdRev = docId + "::" + rev$$1; + // remove all seq entries + // associated with this docId + var start = docId + "::"; + var end = docId + "::~"; + var index = seqStore.index('_doc_id_rev'); + var range = IDBKeyRange.bound(start, end, false, false); + var seqCursor = index.openCursor(range); + seqCursor.onsuccess = function (e) { + seqCursor = e.target.result; + if (!seqCursor) { + // done + docStore.delete(cursor.primaryKey); + cursor.continue(); + } else { + var data = seqCursor.value; + if (data._doc_id_rev === docIdRev) { + localStore.put(data); + } + seqStore.delete(seqCursor.primaryKey); + seqCursor.continue(); + } + }; + } else { + cursor.continue(); + } + } else if (cb) { + cb(); + } + }; + } + + // migration to version 4 (part 1) + function addAttachAndSeqStore(db) { + var attAndSeqStore = db.createObjectStore(ATTACH_AND_SEQ_STORE, + {autoIncrement: true}); + attAndSeqStore.createIndex('seq', 'seq'); + attAndSeqStore.createIndex('digestSeq', 'digestSeq', {unique: true}); + } + + // migration to version 4 (part 2) + function migrateAttsAndSeqs(txn, callback) { + var seqStore = txn.objectStore(BY_SEQ_STORE); + var attStore = txn.objectStore(ATTACH_STORE); + var attAndSeqStore = txn.objectStore(ATTACH_AND_SEQ_STORE); + + // need to actually populate the table. this is the expensive part, + // so as an optimization, check first that this database even + // contains attachments + var req = attStore.count(); + req.onsuccess = function (e) { + var count = e.target.result; + if (!count) { + return callback(); // done + } + + seqStore.openCursor().onsuccess = function (e) { + var cursor = e.target.result; + if (!cursor) { + return callback(); // done + } + var doc = cursor.value; + var seq = cursor.primaryKey; + var atts = Object.keys(doc._attachments || {}); + var digestMap = {}; + for (var j = 0; j < atts.length; j++) { + var att = doc._attachments[atts[j]]; + digestMap[att.digest] = true; // uniq digests, just in case + } + var digests = Object.keys(digestMap); + for (j = 0; j < digests.length; j++) { + var digest = digests[j]; + attAndSeqStore.put({ + seq: seq, + digestSeq: digest + '::' + seq + }); + } + cursor.continue(); + }; + }; + } + + // migration to version 5 + // Instead of relying on on-the-fly migration of metadata, + // this brings the doc-store to its modern form: + // - metadata.winningrev + // - metadata.seq + // - stringify the metadata when storing it + function migrateMetadata(txn) { + + function decodeMetadataCompat(storedObject) { + if (!storedObject.data) { + // old format, when we didn't store it stringified + storedObject.deleted = storedObject.deletedOrLocal === '1'; + return storedObject; + } + return decodeMetadata(storedObject); + } + + // ensure that every metadata has a winningRev and seq, + // which was previously created on-the-fly but better to migrate + var bySeqStore = txn.objectStore(BY_SEQ_STORE); + var docStore = txn.objectStore(DOC_STORE); + var cursor = docStore.openCursor(); + cursor.onsuccess = function (e) { + var cursor = e.target.result; + if (!cursor) { + return; // done + } + var metadata = decodeMetadataCompat(cursor.value); + + metadata.winningRev = metadata.winningRev || + winningRev(metadata); + + function fetchMetadataSeq() { + // metadata.seq was added post-3.2.0, so if it's missing, + // we need to fetch it manually + var start = metadata.id + '::'; + var end = metadata.id + '::\uffff'; + var req = bySeqStore.index('_doc_id_rev').openCursor( + IDBKeyRange.bound(start, end)); + + var metadataSeq = 0; + req.onsuccess = function (e) { + var cursor = e.target.result; + if (!cursor) { + metadata.seq = metadataSeq; + return onGetMetadataSeq(); + } + var seq = cursor.primaryKey; + if (seq > metadataSeq) { + metadataSeq = seq; + } + cursor.continue(); + }; + } + + function onGetMetadataSeq() { + var metadataToStore = encodeMetadata(metadata, + metadata.winningRev, metadata.deleted); + + var req = docStore.put(metadataToStore); + req.onsuccess = function () { + cursor.continue(); + }; + } + + if (metadata.seq) { + return onGetMetadataSeq(); + } + + fetchMetadataSeq(); + }; + + } + + api._remote = false; + api.type = function () { + return 'idb'; + }; + + api._id = toPromise(function (callback) { + callback(null, api._meta.instanceId); + }); + + api._bulkDocs = function idb_bulkDocs(req, reqOpts, callback) { + idbBulkDocs(opts, req, reqOpts, api, idb, callback); + }; + + // First we look up the metadata in the ids database, then we fetch the + // current revision(s) from the by sequence store + api._get = function idb_get(id, opts, callback) { + var doc; + var metadata; + var err; + var txn = opts.ctx; + if (!txn) { + var txnResult = openTransactionSafely(idb, + [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly'); + if (txnResult.error) { + return callback(txnResult.error); + } + txn = txnResult.txn; + } + + function finish() { + callback(err, {doc: doc, metadata: metadata, ctx: txn}); + } + + txn.objectStore(DOC_STORE).get(id).onsuccess = function (e) { + metadata = decodeMetadata(e.target.result); + // we can determine the result here if: + // 1. there is no such document + // 2. the document is deleted and we don't ask about specific rev + // When we ask with opts.rev we expect the answer to be either + // doc (possibly with _deleted=true) or missing error + if (!metadata) { + err = createError(MISSING_DOC, 'missing'); + return finish(); + } + + var rev$$1; + if (!opts.rev) { + rev$$1 = metadata.winningRev; + var deleted = isDeleted(metadata); + if (deleted) { + err = createError(MISSING_DOC, "deleted"); + return finish(); + } + } else { + rev$$1 = opts.latest ? latest(opts.rev, metadata) : opts.rev; + } + + var objectStore = txn.objectStore(BY_SEQ_STORE); + var key = metadata.id + '::' + rev$$1; + + objectStore.index('_doc_id_rev').get(key).onsuccess = function (e) { + doc = e.target.result; + if (doc) { + doc = decodeDoc(doc); + } + if (!doc) { + err = createError(MISSING_DOC, 'missing'); + return finish(); + } + finish(); + }; + }; + }; + + api._getAttachment = function (docId, attachId, attachment, opts, callback) { + var txn; + if (opts.ctx) { + txn = opts.ctx; + } else { + var txnResult = openTransactionSafely(idb, + [DOC_STORE, BY_SEQ_STORE, ATTACH_STORE], 'readonly'); + if (txnResult.error) { + return callback(txnResult.error); + } + txn = txnResult.txn; + } + var digest = attachment.digest; + var type = attachment.content_type; + + txn.objectStore(ATTACH_STORE).get(digest).onsuccess = function (e) { + var body = e.target.result.body; + readBlobData(body, type, opts.binary, function (blobData) { + callback(null, blobData); + }); + }; + }; + + api._info = function idb_info(callback) { + var updateSeq; + var docCount; + + var txnResult = openTransactionSafely(idb, [META_STORE, BY_SEQ_STORE], 'readonly'); + if (txnResult.error) { + return callback(txnResult.error); + } + var txn = txnResult.txn; + txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) { + docCount = e.target.result.docCount; + }; + txn.objectStore(BY_SEQ_STORE).openCursor(null, 'prev').onsuccess = function (e) { + var cursor = e.target.result; + updateSeq = cursor ? cursor.key : 0; + }; + + txn.oncomplete = function () { + callback(null, { + doc_count: docCount, + update_seq: updateSeq, + // for debugging + idb_attachment_format: (api._meta.blobSupport ? 'binary' : 'base64') + }); + }; + }; + + api._allDocs = function idb_allDocs(opts, callback) { + idbAllDocs(opts, idb, callback); + }; + + api._changes = function idbChanges(opts) { + return changes(opts, api, dbName, idb); + }; + + api._close = function (callback) { + // https://developer.mozilla.org/en-US/docs/IndexedDB/IDBDatabase#close + // "Returns immediately and closes the connection in a separate thread..." + idb.close(); + cachedDBs.delete(dbName); + callback(); + }; + + api._getRevisionTree = function (docId, callback) { + var txnResult = openTransactionSafely(idb, [DOC_STORE], 'readonly'); + if (txnResult.error) { + return callback(txnResult.error); + } + var txn = txnResult.txn; + var req = txn.objectStore(DOC_STORE).get(docId); + req.onsuccess = function (event) { + var doc = decodeMetadata(event.target.result); + if (!doc) { + callback(createError(MISSING_DOC)); + } else { + callback(null, doc.rev_tree); + } + }; + }; + + // This function removes revisions of document docId + // which are listed in revs and sets this document + // revision to to rev_tree + api._doCompaction = function (docId, revs, callback) { + var stores = [ + DOC_STORE, + BY_SEQ_STORE, + ATTACH_STORE, + ATTACH_AND_SEQ_STORE + ]; + var txnResult = openTransactionSafely(idb, stores, 'readwrite'); + if (txnResult.error) { + return callback(txnResult.error); + } + var txn = txnResult.txn; + + var docStore = txn.objectStore(DOC_STORE); + + docStore.get(docId).onsuccess = function (event) { + var metadata = decodeMetadata(event.target.result); + traverseRevTree(metadata.rev_tree, function (isLeaf, pos, + revHash, ctx, opts) { + var rev$$1 = pos + '-' + revHash; + if (revs.indexOf(rev$$1) !== -1) { + opts.status = 'missing'; + } + }); + compactRevs(revs, docId, txn); + var winningRev$$1 = metadata.winningRev; + var deleted = metadata.deleted; + txn.objectStore(DOC_STORE).put( + encodeMetadata(metadata, winningRev$$1, deleted)); + }; + txn.onabort = idbError(callback); + txn.oncomplete = function () { + callback(); + }; + }; + + + api._getLocal = function (id, callback) { + var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readonly'); + if (txnResult.error) { + return callback(txnResult.error); + } + var tx = txnResult.txn; + var req = tx.objectStore(LOCAL_STORE).get(id); + + req.onerror = idbError(callback); + req.onsuccess = function (e) { + var doc = e.target.result; + if (!doc) { + callback(createError(MISSING_DOC)); + } else { + delete doc['_doc_id_rev']; // for backwards compat + callback(null, doc); + } + }; + }; + + api._putLocal = function (doc, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + delete doc._revisions; // ignore this, trust the rev + var oldRev = doc._rev; + var id = doc._id; + if (!oldRev) { + doc._rev = '0-1'; + } else { + doc._rev = '0-' + (parseInt(oldRev.split('-')[1], 10) + 1); + } + + var tx = opts.ctx; + var ret; + if (!tx) { + var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite'); + if (txnResult.error) { + return callback(txnResult.error); + } + tx = txnResult.txn; + tx.onerror = idbError(callback); + tx.oncomplete = function () { + if (ret) { + callback(null, ret); + } + }; + } + + var oStore = tx.objectStore(LOCAL_STORE); + var req; + if (oldRev) { + req = oStore.get(id); + req.onsuccess = function (e) { + var oldDoc = e.target.result; + if (!oldDoc || oldDoc._rev !== oldRev) { + callback(createError(REV_CONFLICT)); + } else { // update + var req = oStore.put(doc); + req.onsuccess = function () { + ret = {ok: true, id: doc._id, rev: doc._rev}; + if (opts.ctx) { // return immediately + callback(null, ret); + } + }; + } + }; + } else { // new doc + req = oStore.add(doc); + req.onerror = function (e) { + // constraint error, already exists + callback(createError(REV_CONFLICT)); + e.preventDefault(); // avoid transaction abort + e.stopPropagation(); // avoid transaction onerror + }; + req.onsuccess = function () { + ret = {ok: true, id: doc._id, rev: doc._rev}; + if (opts.ctx) { // return immediately + callback(null, ret); + } + }; + } + }; + + api._removeLocal = function (doc, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + var tx = opts.ctx; + if (!tx) { + var txnResult = openTransactionSafely(idb, [LOCAL_STORE], 'readwrite'); + if (txnResult.error) { + return callback(txnResult.error); + } + tx = txnResult.txn; + tx.oncomplete = function () { + if (ret) { + callback(null, ret); + } + }; + } + var ret; + var id = doc._id; + var oStore = tx.objectStore(LOCAL_STORE); + var req = oStore.get(id); + + req.onerror = idbError(callback); + req.onsuccess = function (e) { + var oldDoc = e.target.result; + if (!oldDoc || oldDoc._rev !== doc._rev) { + callback(createError(MISSING_DOC)); + } else { + oStore.delete(id); + ret = {ok: true, id: id, rev: '0-0'}; + if (opts.ctx) { // return immediately + callback(null, ret); + } + } + }; + }; + + api._destroy = function (opts, callback) { + changesHandler$$1.removeAllListeners(dbName); + + //Close open request for "dbName" database to fix ie delay. + var openReq = openReqList.get(dbName); + if (openReq && openReq.result) { + openReq.result.close(); + cachedDBs.delete(dbName); + } + var req = indexedDB.deleteDatabase(dbName); + + req.onsuccess = function () { + //Remove open request from the list. + openReqList.delete(dbName); + if (hasLocalStorage() && (dbName in localStorage)) { + delete localStorage[dbName]; + } + callback(null, { 'ok': true }); + }; + + req.onerror = idbError(callback); + }; + + var cached = cachedDBs.get(dbName); + + if (cached) { + idb = cached.idb; + api._meta = cached.global; + return __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function () { + callback(null, api); + }); + } + + var req; + if (opts.storage) { + req = tryStorageOption(dbName, opts.storage); + } else { + req = indexedDB.open(dbName, ADAPTER_VERSION); + } + + openReqList.set(dbName, req); + + req.onupgradeneeded = function (e) { + var db = e.target.result; + if (e.oldVersion < 1) { + return createSchema(db); // new db, initial schema + } + // do migrations + + var txn = e.currentTarget.transaction; + // these migrations have to be done in this function, before + // control is returned to the event loop, because IndexedDB + + if (e.oldVersion < 3) { + createLocalStoreSchema(db); // v2 -> v3 + } + if (e.oldVersion < 4) { + addAttachAndSeqStore(db); // v3 -> v4 + } + + var migrations = [ + addDeletedOrLocalIndex, // v1 -> v2 + migrateLocalStore, // v2 -> v3 + migrateAttsAndSeqs, // v3 -> v4 + migrateMetadata // v4 -> v5 + ]; + + var i = e.oldVersion; + + function next() { + var migration = migrations[i - 1]; + i++; + if (migration) { + migration(txn, next); + } + } + + next(); + }; + + req.onsuccess = function (e) { + + idb = e.target.result; + + idb.onversionchange = function () { + idb.close(); + cachedDBs.delete(dbName); + }; + + idb.onabort = function (e) { + guardedConsole('error', 'Database has a global failure', e.target.error); + idb.close(); + cachedDBs.delete(dbName); + }; + + // Do a few setup operations (in parallel as much as possible): + // 1. Fetch meta doc + // 2. Check blob support + // 3. Calculate docCount + // 4. Generate an instanceId if necessary + // 5. Store docCount and instanceId on meta doc + + var txn = idb.transaction([ + META_STORE, + DETECT_BLOB_SUPPORT_STORE, + DOC_STORE + ], 'readwrite'); + + var storedMetaDoc = false; + var metaDoc; + var docCount; + var blobSupport; + var instanceId; + + function completeSetup() { + if (typeof blobSupport === 'undefined' || !storedMetaDoc) { + return; + } + api._meta = { + name: dbName, + instanceId: instanceId, + blobSupport: blobSupport + }; + + cachedDBs.set(dbName, { + idb: idb, + global: api._meta + }); + callback(null, api); + } + + function storeMetaDocIfReady() { + if (typeof docCount === 'undefined' || typeof metaDoc === 'undefined') { + return; + } + var instanceKey = dbName + '_id'; + if (instanceKey in metaDoc) { + instanceId = metaDoc[instanceKey]; + } else { + metaDoc[instanceKey] = instanceId = uuid(); + } + metaDoc.docCount = docCount; + txn.objectStore(META_STORE).put(metaDoc); + } + + // + // fetch or generate the instanceId + // + txn.objectStore(META_STORE).get(META_STORE).onsuccess = function (e) { + metaDoc = e.target.result || { id: META_STORE }; + storeMetaDocIfReady(); + }; + + // + // countDocs + // + countDocs(txn, function (count) { + docCount = count; + storeMetaDocIfReady(); + }); + + // + // check blob support + // + if (!blobSupportPromise) { + // make sure blob support is only checked once + blobSupportPromise = checkBlobSupport(txn); + } + + blobSupportPromise.then(function (val) { + blobSupport = val; + completeSetup(); + }); + + // only when the metadata put transaction has completed, + // consider the setup done + txn.oncomplete = function () { + storedMetaDoc = true; + completeSetup(); + }; + txn.onabort = idbError(callback); + }; + + req.onerror = function () { + var msg = 'Failed to open indexedDB, are you in private browsing mode?'; + guardedConsole('error', msg); + callback(createError(IDB_ERROR, msg)); + }; +} + +IdbPouch.valid = function () { + // Issue #2533, we finally gave up on doing bug + // detection instead of browser sniffing. Safari brought us + // to our knees. + var isSafari = typeof openDatabase !== 'undefined' && + /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && + !/Chrome/.test(navigator.userAgent) && + !/BlackBerry/.test(navigator.platform); + + // Safari <10.1 does not meet our requirements for IDB support (#5572) + // since Safari 10.1 shipped with fetch, we can use that to detect it + var hasFetch = typeof fetch === 'function' && + fetch.toString().indexOf('[native code') !== -1; + + // On Firefox SecurityError is thrown while referencing indexedDB if cookies + // are not allowed. `typeof indexedDB` also triggers the error. + try { + // some outdated implementations of IDB that appear on Samsung + // and HTC Android devices <4.4 are missing IDBKeyRange + return (!isSafari || hasFetch) && typeof indexedDB !== 'undefined' && + typeof IDBKeyRange !== 'undefined'; + } catch (e) { + return false; + } +}; + +function tryStorageOption(dbName, storage) { + try { // option only available in Firefox 26+ + return indexedDB.open(dbName, { + version: ADAPTER_VERSION, + storage: storage + }); + } catch (err) { + return indexedDB.open(dbName, ADAPTER_VERSION); + } +} + +function IDBPouch (PouchDB) { + PouchDB.adapter('idb', IdbPouch, true); +} + +// +// Parsing hex strings. Yeah. +// +// So basically we need this because of a bug in WebSQL: +// https://code.google.com/p/chromium/issues/detail?id=422690 +// https://bugs.webkit.org/show_bug.cgi?id=137637 +// +// UTF-8 and UTF-16 are provided as separate functions +// for meager performance improvements +// + +function decodeUtf8(str) { + return decodeURIComponent(escape(str)); +} + +function hexToInt(charCode) { + // '0'-'9' is 48-57 + // 'A'-'F' is 65-70 + // SQLite will only give us uppercase hex + return charCode < 65 ? (charCode - 48) : (charCode - 55); +} + + +// Example: +// pragma encoding=utf8; +// select hex('A'); +// returns '41' +function parseHexUtf8(str, start, end) { + var result = ''; + while (start < end) { + result += String.fromCharCode( + (hexToInt(str.charCodeAt(start++)) << 4) | + hexToInt(str.charCodeAt(start++))); + } + return result; +} + +// Example: +// pragma encoding=utf16; +// select hex('A'); +// returns '4100' +// notice that the 00 comes after the 41 (i.e. it's swizzled) +function parseHexUtf16(str, start, end) { + var result = ''; + while (start < end) { + // UTF-16, so swizzle the bytes + result += String.fromCharCode( + (hexToInt(str.charCodeAt(start + 2)) << 12) | + (hexToInt(str.charCodeAt(start + 3)) << 8) | + (hexToInt(str.charCodeAt(start)) << 4) | + hexToInt(str.charCodeAt(start + 1))); + start += 4; + } + return result; +} + +function parseHexString(str, encoding) { + if (encoding === 'UTF-8') { + return decodeUtf8(parseHexUtf8(str, 0, str.length)); + } else { + return parseHexUtf16(str, 0, str.length); + } +} + +function quote(str) { + return "'" + str + "'"; +} + +var ADAPTER_VERSION$1 = 7; // used to manage migrations + +// The object stores created for each database +// DOC_STORE stores the document meta data, its revision history and state +var DOC_STORE$1 = quote('document-store'); +// BY_SEQ_STORE stores a particular version of a document, keyed by its +// sequence id +var BY_SEQ_STORE$1 = quote('by-sequence'); +// Where we store attachments +var ATTACH_STORE$1 = quote('attach-store'); +var LOCAL_STORE$1 = quote('local-store'); +var META_STORE$1 = quote('metadata-store'); +// where we store many-to-many relations between attachment +// digests and seqs +var ATTACH_AND_SEQ_STORE$1 = quote('attach-seq-store'); + +// escapeBlob and unescapeBlob are workarounds for a websql bug: +// https://code.google.com/p/chromium/issues/detail?id=422690 +// https://bugs.webkit.org/show_bug.cgi?id=137637 +// The goal is to never actually insert the \u0000 character +// in the database. +function escapeBlob(str) { + return str + .replace(/\u0002/g, '\u0002\u0002') + .replace(/\u0001/g, '\u0001\u0002') + .replace(/\u0000/g, '\u0001\u0001'); +} + +function unescapeBlob(str) { + return str + .replace(/\u0001\u0001/g, '\u0000') + .replace(/\u0001\u0002/g, '\u0001') + .replace(/\u0002\u0002/g, '\u0002'); +} + +function stringifyDoc(doc) { + // don't bother storing the id/rev. it uses lots of space, + // in persistent map/reduce especially + delete doc._id; + delete doc._rev; + return JSON.stringify(doc); +} + +function unstringifyDoc(doc, id, rev$$1) { + doc = JSON.parse(doc); + doc._id = id; + doc._rev = rev$$1; + return doc; +} + +// question mark groups IN queries, e.g. 3 -> '(?,?,?)' +function qMarks(num) { + var s = '('; + while (num--) { + s += '?'; + if (num) { + s += ','; + } + } + return s + ')'; +} + +function select(selector, table, joiner, where, orderBy) { + return 'SELECT ' + selector + ' FROM ' + + (typeof table === 'string' ? table : table.join(' JOIN ')) + + (joiner ? (' ON ' + joiner) : '') + + (where ? (' WHERE ' + + (typeof where === 'string' ? where : where.join(' AND '))) : '') + + (orderBy ? (' ORDER BY ' + orderBy) : ''); +} + +function compactRevs$1(revs, docId, tx) { + + if (!revs.length) { + return; + } + + var numDone = 0; + var seqs = []; + + function checkDone() { + if (++numDone === revs.length) { // done + deleteOrphans(); + } + } + + function deleteOrphans() { + // find orphaned attachment digests + + if (!seqs.length) { + return; + } + + var sql = 'SELECT DISTINCT digest AS digest FROM ' + + ATTACH_AND_SEQ_STORE$1 + ' WHERE seq IN ' + qMarks(seqs.length); + + tx.executeSql(sql, seqs, function (tx, res) { + + var digestsToCheck = []; + for (var i = 0; i < res.rows.length; i++) { + digestsToCheck.push(res.rows.item(i).digest); + } + if (!digestsToCheck.length) { + return; + } + + var sql = 'DELETE FROM ' + ATTACH_AND_SEQ_STORE$1 + + ' WHERE seq IN (' + + seqs.map(function () { return '?'; }).join(',') + + ')'; + tx.executeSql(sql, seqs, function (tx) { + + var sql = 'SELECT digest FROM ' + ATTACH_AND_SEQ_STORE$1 + + ' WHERE digest IN (' + + digestsToCheck.map(function () { return '?'; }).join(',') + + ')'; + tx.executeSql(sql, digestsToCheck, function (tx, res) { + var nonOrphanedDigests = new ExportedSet(); + for (var i = 0; i < res.rows.length; i++) { + nonOrphanedDigests.add(res.rows.item(i).digest); + } + digestsToCheck.forEach(function (digest) { + if (nonOrphanedDigests.has(digest)) { + return; + } + tx.executeSql( + 'DELETE FROM ' + ATTACH_AND_SEQ_STORE$1 + ' WHERE digest=?', + [digest]); + tx.executeSql( + 'DELETE FROM ' + ATTACH_STORE$1 + ' WHERE digest=?', [digest]); + }); + }); + }); + }); + } + + // update by-seq and attach stores in parallel + revs.forEach(function (rev$$1) { + var sql = 'SELECT seq FROM ' + BY_SEQ_STORE$1 + + ' WHERE doc_id=? AND rev=?'; + + tx.executeSql(sql, [docId, rev$$1], function (tx, res) { + if (!res.rows.length) { // already deleted + return checkDone(); + } + var seq = res.rows.item(0).seq; + seqs.push(seq); + + tx.executeSql( + 'DELETE FROM ' + BY_SEQ_STORE$1 + ' WHERE seq=?', [seq], checkDone); + }); + }); +} + +function websqlError(callback) { + return function (event) { + guardedConsole('error', 'WebSQL threw an error', event); + // event may actually be a SQLError object, so report is as such + var errorNameMatch = event && event.constructor.toString() + .match(/function ([^(]+)/); + var errorName = (errorNameMatch && errorNameMatch[1]) || event.type; + var errorReason = event.target || event.message; + callback(createError(WSQ_ERROR, errorReason, errorName)); + }; +} + +function getSize(opts) { + if ('size' in opts) { + // triggers immediate popup in iOS, fixes #2347 + // e.g. 5000001 asks for 5 MB, 10000001 asks for 10 MB, + return opts.size * 1000000; + } + // In iOS, doesn't matter as long as it's <= 5000000. + // Except that if you request too much, our tests fail + // because of the native "do you accept?" popup. + // In Android <=4.3, this value is actually used as an + // honest-to-god ceiling for data, so we need to + // set it to a decently high number. + var isAndroid = typeof navigator !== 'undefined' && + /Android/.test(navigator.userAgent); + return isAndroid ? 5000000 : 1; // in PhantomJS, if you use 0 it will crash +} + +function websqlBulkDocs(dbOpts, req, opts, api, db, websqlChanges, callback) { + var newEdits = opts.new_edits; + var userDocs = req.docs; + + // Parse the docs, give them a sequence number for the result + var docInfos = userDocs.map(function (doc) { + if (doc._id && isLocalId(doc._id)) { + return doc; + } + var newDoc = parseDoc(doc, newEdits); + return newDoc; + }); + + var docInfoErrors = docInfos.filter(function (docInfo) { + return docInfo.error; + }); + if (docInfoErrors.length) { + return callback(docInfoErrors[0]); + } + + var tx; + var results = new Array(docInfos.length); + var fetchedDocs = new ExportedMap(); + + var preconditionErrored; + function complete() { + if (preconditionErrored) { + return callback(preconditionErrored); + } + websqlChanges.notify(api._name); + callback(null, results); + } + + function verifyAttachment(digest, callback) { + var sql = 'SELECT count(*) as cnt FROM ' + ATTACH_STORE$1 + + ' WHERE digest=?'; + tx.executeSql(sql, [digest], function (tx, result) { + if (result.rows.item(0).cnt === 0) { + var err = createError(MISSING_STUB, + 'unknown stub attachment with digest ' + + digest); + callback(err); + } else { + callback(); + } + }); + } + + function verifyAttachments(finish) { + var digests = []; + docInfos.forEach(function (docInfo) { + if (docInfo.data && docInfo.data._attachments) { + Object.keys(docInfo.data._attachments).forEach(function (filename) { + var att = docInfo.data._attachments[filename]; + if (att.stub) { + digests.push(att.digest); + } + }); + } + }); + if (!digests.length) { + return finish(); + } + var numDone = 0; + var err; + + function checkDone() { + if (++numDone === digests.length) { + finish(err); + } + } + digests.forEach(function (digest) { + verifyAttachment(digest, function (attErr) { + if (attErr && !err) { + err = attErr; + } + checkDone(); + }); + }); + } + + function writeDoc(docInfo, winningRev$$1, winningRevIsDeleted, newRevIsDeleted, + isUpdate, delta, resultsIdx, callback) { + + function finish() { + var data = docInfo.data; + var deletedInt = newRevIsDeleted ? 1 : 0; + + var id = data._id; + var rev = data._rev; + var json = stringifyDoc(data); + var sql = 'INSERT INTO ' + BY_SEQ_STORE$1 + + ' (doc_id, rev, json, deleted) VALUES (?, ?, ?, ?);'; + var sqlArgs = [id, rev, json, deletedInt]; + + // map seqs to attachment digests, which + // we will need later during compaction + function insertAttachmentMappings(seq, callback) { + var attsAdded = 0; + var attsToAdd = Object.keys(data._attachments || {}); + + if (!attsToAdd.length) { + return callback(); + } + function checkDone() { + if (++attsAdded === attsToAdd.length) { + callback(); + } + return false; // ack handling a constraint error + } + function add(att) { + var sql = 'INSERT INTO ' + ATTACH_AND_SEQ_STORE$1 + + ' (digest, seq) VALUES (?,?)'; + var sqlArgs = [data._attachments[att].digest, seq]; + tx.executeSql(sql, sqlArgs, checkDone, checkDone); + // second callback is for a constaint error, which we ignore + // because this docid/rev has already been associated with + // the digest (e.g. when new_edits == false) + } + for (var i = 0; i < attsToAdd.length; i++) { + add(attsToAdd[i]); // do in parallel + } + } + + tx.executeSql(sql, sqlArgs, function (tx, result) { + var seq = result.insertId; + insertAttachmentMappings(seq, function () { + dataWritten(tx, seq); + }); + }, function () { + // constraint error, recover by updating instead (see #1638) + var fetchSql = select('seq', BY_SEQ_STORE$1, null, + 'doc_id=? AND rev=?'); + tx.executeSql(fetchSql, [id, rev], function (tx, res) { + var seq = res.rows.item(0).seq; + var sql = 'UPDATE ' + BY_SEQ_STORE$1 + + ' SET json=?, deleted=? WHERE doc_id=? AND rev=?;'; + var sqlArgs = [json, deletedInt, id, rev]; + tx.executeSql(sql, sqlArgs, function (tx) { + insertAttachmentMappings(seq, function () { + dataWritten(tx, seq); + }); + }); + }); + return false; // ack that we've handled the error + }); + } + + function collectResults(attachmentErr) { + if (!err) { + if (attachmentErr) { + err = attachmentErr; + callback(err); + } else if (recv === attachments.length) { + finish(); + } + } + } + + var err = null; + var recv = 0; + + docInfo.data._id = docInfo.metadata.id; + docInfo.data._rev = docInfo.metadata.rev; + var attachments = Object.keys(docInfo.data._attachments || {}); + + + if (newRevIsDeleted) { + docInfo.data._deleted = true; + } + + function attachmentSaved(err) { + recv++; + collectResults(err); + } + + attachments.forEach(function (key) { + var att = docInfo.data._attachments[key]; + if (!att.stub) { + var data = att.data; + delete att.data; + att.revpos = parseInt(winningRev$$1, 10); + var digest = att.digest; + saveAttachment(digest, data, attachmentSaved); + } else { + recv++; + collectResults(); + } + }); + + if (!attachments.length) { + finish(); + } + + function dataWritten(tx, seq) { + var id = docInfo.metadata.id; + + var revsToCompact = docInfo.stemmedRevs || []; + if (isUpdate && api.auto_compaction) { + revsToCompact = compactTree(docInfo.metadata).concat(revsToCompact); + } + if (revsToCompact.length) { + compactRevs$1(revsToCompact, id, tx); + } + + docInfo.metadata.seq = seq; + var rev = docInfo.metadata.rev; + delete docInfo.metadata.rev; + + var sql = isUpdate ? + 'UPDATE ' + DOC_STORE$1 + + ' SET json=?, max_seq=?, winningseq=' + + '(SELECT seq FROM ' + BY_SEQ_STORE$1 + + ' WHERE doc_id=' + DOC_STORE$1 + '.id AND rev=?) WHERE id=?' + : 'INSERT INTO ' + DOC_STORE$1 + + ' (id, winningseq, max_seq, json) VALUES (?,?,?,?);'; + var metadataStr = safeJsonStringify(docInfo.metadata); + var params = isUpdate ? + [metadataStr, seq, winningRev$$1, id] : + [id, seq, seq, metadataStr]; + tx.executeSql(sql, params, function () { + results[resultsIdx] = { + ok: true, + id: docInfo.metadata.id, + rev: rev + }; + fetchedDocs.set(id, docInfo.metadata); + callback(); + }); + } + } + + function websqlProcessDocs() { + processDocs(dbOpts.revs_limit, docInfos, api, fetchedDocs, tx, + results, writeDoc, opts); + } + + function fetchExistingDocs(callback) { + if (!docInfos.length) { + return callback(); + } + + var numFetched = 0; + + function checkDone() { + if (++numFetched === docInfos.length) { + callback(); + } + } + + docInfos.forEach(function (docInfo) { + if (docInfo._id && isLocalId(docInfo._id)) { + return checkDone(); // skip local docs + } + var id = docInfo.metadata.id; + tx.executeSql('SELECT json FROM ' + DOC_STORE$1 + + ' WHERE id = ?', [id], function (tx, result) { + if (result.rows.length) { + var metadata = safeJsonParse(result.rows.item(0).json); + fetchedDocs.set(id, metadata); + } + checkDone(); + }); + }); + } + + function saveAttachment(digest, data, callback) { + var sql = 'SELECT digest FROM ' + ATTACH_STORE$1 + ' WHERE digest=?'; + tx.executeSql(sql, [digest], function (tx, result) { + if (result.rows.length) { // attachment already exists + return callback(); + } + // we could just insert before selecting and catch the error, + // but my hunch is that it's cheaper not to serialize the blob + // from JS to C if we don't have to (TODO: confirm this) + sql = 'INSERT INTO ' + ATTACH_STORE$1 + + ' (digest, body, escaped) VALUES (?,?,1)'; + tx.executeSql(sql, [digest, escapeBlob(data)], function () { + callback(); + }, function () { + // ignore constaint errors, means it already exists + callback(); + return false; // ack we handled the error + }); + }); + } + + preprocessAttachments(docInfos, 'binary', function (err) { + if (err) { + return callback(err); + } + db.transaction(function (txn) { + tx = txn; + verifyAttachments(function (err) { + if (err) { + preconditionErrored = err; + } else { + fetchExistingDocs(websqlProcessDocs); + } + }); + }, websqlError(callback), complete); + }); +} + +var cachedDatabases = new ExportedMap(); + +// openDatabase passed in through opts (e.g. for node-websql) +function openDatabaseWithOpts(opts) { + return opts.websql(opts.name, opts.version, opts.description, opts.size); +} + +function openDBSafely(opts) { + try { + return { + db: openDatabaseWithOpts(opts) + }; + } catch (err) { + return { + error: err + }; + } +} + +function openDB(opts) { + var cachedResult = cachedDatabases.get(opts.name); + if (!cachedResult) { + cachedResult = openDBSafely(opts); + cachedDatabases.set(opts.name, cachedResult); + } + return cachedResult; +} + +var websqlChanges = new Changes(); + +function fetchAttachmentsIfNecessary$1(doc, opts, api, txn, cb) { + var attachments = Object.keys(doc._attachments || {}); + if (!attachments.length) { + return cb && cb(); + } + var numDone = 0; + + function checkDone() { + if (++numDone === attachments.length && cb) { + cb(); + } + } + + function fetchAttachment(doc, att) { + var attObj = doc._attachments[att]; + var attOpts = {binary: opts.binary, ctx: txn}; + api._getAttachment(doc._id, att, attObj, attOpts, function (_, data) { + doc._attachments[att] = $inject_Object_assign( + pick(attObj, ['digest', 'content_type']), + { data: data } + ); + checkDone(); + }); + } + + attachments.forEach(function (att) { + if (opts.attachments && opts.include_docs) { + fetchAttachment(doc, att); + } else { + doc._attachments[att].stub = true; + checkDone(); + } + }); +} + +var POUCH_VERSION = 1; + +// these indexes cover the ground for most allDocs queries +var BY_SEQ_STORE_DELETED_INDEX_SQL = + 'CREATE INDEX IF NOT EXISTS \'by-seq-deleted-idx\' ON ' + + BY_SEQ_STORE$1 + ' (seq, deleted)'; +var BY_SEQ_STORE_DOC_ID_REV_INDEX_SQL = + 'CREATE UNIQUE INDEX IF NOT EXISTS \'by-seq-doc-id-rev\' ON ' + + BY_SEQ_STORE$1 + ' (doc_id, rev)'; +var DOC_STORE_WINNINGSEQ_INDEX_SQL = + 'CREATE INDEX IF NOT EXISTS \'doc-winningseq-idx\' ON ' + + DOC_STORE$1 + ' (winningseq)'; +var ATTACH_AND_SEQ_STORE_SEQ_INDEX_SQL = + 'CREATE INDEX IF NOT EXISTS \'attach-seq-seq-idx\' ON ' + + ATTACH_AND_SEQ_STORE$1 + ' (seq)'; +var ATTACH_AND_SEQ_STORE_ATTACH_INDEX_SQL = + 'CREATE UNIQUE INDEX IF NOT EXISTS \'attach-seq-digest-idx\' ON ' + + ATTACH_AND_SEQ_STORE$1 + ' (digest, seq)'; + +var DOC_STORE_AND_BY_SEQ_JOINER = BY_SEQ_STORE$1 + + '.seq = ' + DOC_STORE$1 + '.winningseq'; + +var SELECT_DOCS = BY_SEQ_STORE$1 + '.seq AS seq, ' + + BY_SEQ_STORE$1 + '.deleted AS deleted, ' + + BY_SEQ_STORE$1 + '.json AS data, ' + + BY_SEQ_STORE$1 + '.rev AS rev, ' + + DOC_STORE$1 + '.json AS metadata'; + +function WebSqlPouch(opts, callback) { + var api = this; + var instanceId = null; + var size = getSize(opts); + var idRequests = []; + var encoding; + + api._name = opts.name; + + // extend the options here, because sqlite plugin has a ton of options + // and they are constantly changing, so it's more prudent to allow anything + var websqlOpts = $inject_Object_assign({}, opts, { + version: POUCH_VERSION, + description: opts.name, + size: size + }); + var openDBResult = openDB(websqlOpts); + if (openDBResult.error) { + return websqlError(callback)(openDBResult.error); + } + var db = openDBResult.db; + if (typeof db.readTransaction !== 'function') { + // doesn't exist in sqlite plugin + db.readTransaction = db.transaction; + } + + function dbCreated() { + // note the db name in case the browser upgrades to idb + if (hasLocalStorage()) { + window.localStorage['_pouch__websqldb_' + api._name] = true; + } + callback(null, api); + } + + // In this migration, we added the 'deleted' and 'local' columns to the + // by-seq and doc store tables. + // To preserve existing user data, we re-process all the existing JSON + // and add these values. + // Called migration2 because it corresponds to adapter version (db_version) #2 + function runMigration2(tx, callback) { + // index used for the join in the allDocs query + tx.executeSql(DOC_STORE_WINNINGSEQ_INDEX_SQL); + + tx.executeSql('ALTER TABLE ' + BY_SEQ_STORE$1 + + ' ADD COLUMN deleted TINYINT(1) DEFAULT 0', [], function () { + tx.executeSql(BY_SEQ_STORE_DELETED_INDEX_SQL); + tx.executeSql('ALTER TABLE ' + DOC_STORE$1 + + ' ADD COLUMN local TINYINT(1) DEFAULT 0', [], function () { + tx.executeSql('CREATE INDEX IF NOT EXISTS \'doc-store-local-idx\' ON ' + + DOC_STORE$1 + ' (local, id)'); + + var sql = 'SELECT ' + DOC_STORE$1 + '.winningseq AS seq, ' + DOC_STORE$1 + + '.json AS metadata FROM ' + BY_SEQ_STORE$1 + ' JOIN ' + DOC_STORE$1 + + ' ON ' + BY_SEQ_STORE$1 + '.seq = ' + DOC_STORE$1 + '.winningseq'; + + tx.executeSql(sql, [], function (tx, result) { + + var deleted = []; + var local = []; + + for (var i = 0; i < result.rows.length; i++) { + var item = result.rows.item(i); + var seq = item.seq; + var metadata = JSON.parse(item.metadata); + if (isDeleted(metadata)) { + deleted.push(seq); + } + if (isLocalId(metadata.id)) { + local.push(metadata.id); + } + } + tx.executeSql('UPDATE ' + DOC_STORE$1 + 'SET local = 1 WHERE id IN ' + + qMarks(local.length), local, function () { + tx.executeSql('UPDATE ' + BY_SEQ_STORE$1 + + ' SET deleted = 1 WHERE seq IN ' + + qMarks(deleted.length), deleted, callback); + }); + }); + }); + }); + } + + // in this migration, we make all the local docs unversioned + function runMigration3(tx, callback) { + var local = 'CREATE TABLE IF NOT EXISTS ' + LOCAL_STORE$1 + + ' (id UNIQUE, rev, json)'; + tx.executeSql(local, [], function () { + var sql = 'SELECT ' + DOC_STORE$1 + '.id AS id, ' + + BY_SEQ_STORE$1 + '.json AS data ' + + 'FROM ' + BY_SEQ_STORE$1 + ' JOIN ' + + DOC_STORE$1 + ' ON ' + BY_SEQ_STORE$1 + '.seq = ' + + DOC_STORE$1 + '.winningseq WHERE local = 1'; + tx.executeSql(sql, [], function (tx, res) { + var rows = []; + for (var i = 0; i < res.rows.length; i++) { + rows.push(res.rows.item(i)); + } + function doNext() { + if (!rows.length) { + return callback(tx); + } + var row = rows.shift(); + var rev$$1 = JSON.parse(row.data)._rev; + tx.executeSql('INSERT INTO ' + LOCAL_STORE$1 + + ' (id, rev, json) VALUES (?,?,?)', + [row.id, rev$$1, row.data], function (tx) { + tx.executeSql('DELETE FROM ' + DOC_STORE$1 + ' WHERE id=?', + [row.id], function (tx) { + tx.executeSql('DELETE FROM ' + BY_SEQ_STORE$1 + ' WHERE seq=?', + [row.seq], function () { + doNext(); + }); + }); + }); + } + doNext(); + }); + }); + } + + // in this migration, we remove doc_id_rev and just use rev + function runMigration4(tx, callback) { + + function updateRows(rows) { + function doNext() { + if (!rows.length) { + return callback(tx); + } + var row = rows.shift(); + var doc_id_rev = parseHexString(row.hex, encoding); + var idx = doc_id_rev.lastIndexOf('::'); + var doc_id = doc_id_rev.substring(0, idx); + var rev$$1 = doc_id_rev.substring(idx + 2); + var sql = 'UPDATE ' + BY_SEQ_STORE$1 + + ' SET doc_id=?, rev=? WHERE doc_id_rev=?'; + tx.executeSql(sql, [doc_id, rev$$1, doc_id_rev], function () { + doNext(); + }); + } + doNext(); + } + + var sql = 'ALTER TABLE ' + BY_SEQ_STORE$1 + ' ADD COLUMN doc_id'; + tx.executeSql(sql, [], function (tx) { + var sql = 'ALTER TABLE ' + BY_SEQ_STORE$1 + ' ADD COLUMN rev'; + tx.executeSql(sql, [], function (tx) { + tx.executeSql(BY_SEQ_STORE_DOC_ID_REV_INDEX_SQL, [], function (tx) { + var sql = 'SELECT hex(doc_id_rev) as hex FROM ' + BY_SEQ_STORE$1; + tx.executeSql(sql, [], function (tx, res) { + var rows = []; + for (var i = 0; i < res.rows.length; i++) { + rows.push(res.rows.item(i)); + } + updateRows(rows); + }); + }); + }); + }); + } + + // in this migration, we add the attach_and_seq table + // for issue #2818 + function runMigration5(tx, callback) { + + function migrateAttsAndSeqs(tx) { + // need to actually populate the table. this is the expensive part, + // so as an optimization, check first that this database even + // contains attachments + var sql = 'SELECT COUNT(*) AS cnt FROM ' + ATTACH_STORE$1; + tx.executeSql(sql, [], function (tx, res) { + var count = res.rows.item(0).cnt; + if (!count) { + return callback(tx); + } + + var offset = 0; + var pageSize = 10; + function nextPage() { + var sql = select( + SELECT_DOCS + ', ' + DOC_STORE$1 + '.id AS id', + [DOC_STORE$1, BY_SEQ_STORE$1], + DOC_STORE_AND_BY_SEQ_JOINER, + null, + DOC_STORE$1 + '.id ' + ); + sql += ' LIMIT ' + pageSize + ' OFFSET ' + offset; + offset += pageSize; + tx.executeSql(sql, [], function (tx, res) { + if (!res.rows.length) { + return callback(tx); + } + var digestSeqs = {}; + function addDigestSeq(digest, seq) { + // uniq digest/seq pairs, just in case there are dups + var seqs = digestSeqs[digest] = (digestSeqs[digest] || []); + if (seqs.indexOf(seq) === -1) { + seqs.push(seq); + } + } + for (var i = 0; i < res.rows.length; i++) { + var row = res.rows.item(i); + var doc = unstringifyDoc(row.data, row.id, row.rev); + var atts = Object.keys(doc._attachments || {}); + for (var j = 0; j < atts.length; j++) { + var att = doc._attachments[atts[j]]; + addDigestSeq(att.digest, row.seq); + } + } + var digestSeqPairs = []; + Object.keys(digestSeqs).forEach(function (digest) { + var seqs = digestSeqs[digest]; + seqs.forEach(function (seq) { + digestSeqPairs.push([digest, seq]); + }); + }); + if (!digestSeqPairs.length) { + return nextPage(); + } + var numDone = 0; + digestSeqPairs.forEach(function (pair) { + var sql = 'INSERT INTO ' + ATTACH_AND_SEQ_STORE$1 + + ' (digest, seq) VALUES (?,?)'; + tx.executeSql(sql, pair, function () { + if (++numDone === digestSeqPairs.length) { + nextPage(); + } + }); + }); + }); + } + nextPage(); + }); + } + + var attachAndRev = 'CREATE TABLE IF NOT EXISTS ' + + ATTACH_AND_SEQ_STORE$1 + ' (digest, seq INTEGER)'; + tx.executeSql(attachAndRev, [], function (tx) { + tx.executeSql( + ATTACH_AND_SEQ_STORE_ATTACH_INDEX_SQL, [], function (tx) { + tx.executeSql( + ATTACH_AND_SEQ_STORE_SEQ_INDEX_SQL, [], + migrateAttsAndSeqs); + }); + }); + } + + // in this migration, we use escapeBlob() and unescapeBlob() + // instead of reading out the binary as HEX, which is slow + function runMigration6(tx, callback) { + var sql = 'ALTER TABLE ' + ATTACH_STORE$1 + + ' ADD COLUMN escaped TINYINT(1) DEFAULT 0'; + tx.executeSql(sql, [], callback); + } + + // issue #3136, in this migration we need a "latest seq" as well + // as the "winning seq" in the doc store + function runMigration7(tx, callback) { + var sql = 'ALTER TABLE ' + DOC_STORE$1 + + ' ADD COLUMN max_seq INTEGER'; + tx.executeSql(sql, [], function (tx) { + var sql = 'UPDATE ' + DOC_STORE$1 + ' SET max_seq=(SELECT MAX(seq) FROM ' + + BY_SEQ_STORE$1 + ' WHERE doc_id=id)'; + tx.executeSql(sql, [], function (tx) { + // add unique index after filling, else we'll get a constraint + // error when we do the ALTER TABLE + var sql = + 'CREATE UNIQUE INDEX IF NOT EXISTS \'doc-max-seq-idx\' ON ' + + DOC_STORE$1 + ' (max_seq)'; + tx.executeSql(sql, [], callback); + }); + }); + } + + function checkEncoding(tx, cb) { + // UTF-8 on chrome/android, UTF-16 on safari < 7.1 + tx.executeSql('SELECT HEX("a") AS hex', [], function (tx, res) { + var hex = res.rows.item(0).hex; + encoding = hex.length === 2 ? 'UTF-8' : 'UTF-16'; + cb(); + } + ); + } + + function onGetInstanceId() { + while (idRequests.length > 0) { + var idCallback = idRequests.pop(); + idCallback(null, instanceId); + } + } + + function onGetVersion(tx, dbVersion) { + if (dbVersion === 0) { + // initial schema + + var meta = 'CREATE TABLE IF NOT EXISTS ' + META_STORE$1 + + ' (dbid, db_version INTEGER)'; + var attach = 'CREATE TABLE IF NOT EXISTS ' + ATTACH_STORE$1 + + ' (digest UNIQUE, escaped TINYINT(1), body BLOB)'; + var attachAndRev = 'CREATE TABLE IF NOT EXISTS ' + + ATTACH_AND_SEQ_STORE$1 + ' (digest, seq INTEGER)'; + // TODO: migrate winningseq to INTEGER + var doc = 'CREATE TABLE IF NOT EXISTS ' + DOC_STORE$1 + + ' (id unique, json, winningseq, max_seq INTEGER UNIQUE)'; + var seq = 'CREATE TABLE IF NOT EXISTS ' + BY_SEQ_STORE$1 + + ' (seq INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, ' + + 'json, deleted TINYINT(1), doc_id, rev)'; + var local = 'CREATE TABLE IF NOT EXISTS ' + LOCAL_STORE$1 + + ' (id UNIQUE, rev, json)'; + + // creates + tx.executeSql(attach); + tx.executeSql(local); + tx.executeSql(attachAndRev, [], function () { + tx.executeSql(ATTACH_AND_SEQ_STORE_SEQ_INDEX_SQL); + tx.executeSql(ATTACH_AND_SEQ_STORE_ATTACH_INDEX_SQL); + }); + tx.executeSql(doc, [], function () { + tx.executeSql(DOC_STORE_WINNINGSEQ_INDEX_SQL); + tx.executeSql(seq, [], function () { + tx.executeSql(BY_SEQ_STORE_DELETED_INDEX_SQL); + tx.executeSql(BY_SEQ_STORE_DOC_ID_REV_INDEX_SQL); + tx.executeSql(meta, [], function () { + // mark the db version, and new dbid + var initSeq = 'INSERT INTO ' + META_STORE$1 + + ' (db_version, dbid) VALUES (?,?)'; + instanceId = uuid(); + var initSeqArgs = [ADAPTER_VERSION$1, instanceId]; + tx.executeSql(initSeq, initSeqArgs, function () { + onGetInstanceId(); + }); + }); + }); + }); + } else { // version > 0 + + var setupDone = function () { + var migrated = dbVersion < ADAPTER_VERSION$1; + if (migrated) { + // update the db version within this transaction + tx.executeSql('UPDATE ' + META_STORE$1 + ' SET db_version = ' + + ADAPTER_VERSION$1); + } + // notify db.id() callers + var sql = 'SELECT dbid FROM ' + META_STORE$1; + tx.executeSql(sql, [], function (tx, result) { + instanceId = result.rows.item(0).dbid; + onGetInstanceId(); + }); + }; + + // would love to use promises here, but then websql + // ends the transaction early + var tasks = [ + runMigration2, + runMigration3, + runMigration4, + runMigration5, + runMigration6, + runMigration7, + setupDone + ]; + + // run each migration sequentially + var i = dbVersion; + var nextMigration = function (tx) { + tasks[i - 1](tx, nextMigration); + i++; + }; + nextMigration(tx); + } + } + + function setup() { + db.transaction(function (tx) { + // first check the encoding + checkEncoding(tx, function () { + // then get the version + fetchVersion(tx); + }); + }, websqlError(callback), dbCreated); + } + + function fetchVersion(tx) { + var sql = 'SELECT sql FROM sqlite_master WHERE tbl_name = ' + META_STORE$1; + tx.executeSql(sql, [], function (tx, result) { + if (!result.rows.length) { + // database hasn't even been created yet (version 0) + onGetVersion(tx, 0); + } else if (!/db_version/.test(result.rows.item(0).sql)) { + // table was created, but without the new db_version column, + // so add it. + tx.executeSql('ALTER TABLE ' + META_STORE$1 + + ' ADD COLUMN db_version INTEGER', [], function () { + // before version 2, this column didn't even exist + onGetVersion(tx, 1); + }); + } else { // column exists, we can safely get it + tx.executeSql('SELECT db_version FROM ' + META_STORE$1, + [], function (tx, result) { + var dbVersion = result.rows.item(0).db_version; + onGetVersion(tx, dbVersion); + }); + } + }); + } + + setup(); + + function getMaxSeq(tx, callback) { + var sql = 'SELECT MAX(seq) AS seq FROM ' + BY_SEQ_STORE$1; + tx.executeSql(sql, [], function (tx, res) { + var updateSeq = res.rows.item(0).seq || 0; + callback(updateSeq); + }); + } + + function countDocs(tx, callback) { + // count the total rows + var sql = select( + 'COUNT(' + DOC_STORE$1 + '.id) AS \'num\'', + [DOC_STORE$1, BY_SEQ_STORE$1], + DOC_STORE_AND_BY_SEQ_JOINER, + BY_SEQ_STORE$1 + '.deleted=0'); + + tx.executeSql(sql, [], function (tx, result) { + callback(result.rows.item(0).num); + }); + } + + api._remote = false; + api.type = function () { + return 'websql'; + }; + + api._id = toPromise(function (callback) { + callback(null, instanceId); + }); + + api._info = function (callback) { + var seq; + var docCount; + db.readTransaction(function (tx) { + getMaxSeq(tx, function (theSeq) { + seq = theSeq; + }); + countDocs(tx, function (theDocCount) { + docCount = theDocCount; + }); + }, websqlError(callback), function () { + callback(null, { + doc_count: docCount, + update_seq: seq, + websql_encoding: encoding + }); + }); + }; + + api._bulkDocs = function (req, reqOpts, callback) { + websqlBulkDocs(opts, req, reqOpts, api, db, websqlChanges, callback); + }; + + function latest$$1(tx, id, rev$$1, callback, finish) { + var sql = select( + SELECT_DOCS, + [DOC_STORE$1, BY_SEQ_STORE$1], + DOC_STORE_AND_BY_SEQ_JOINER, + DOC_STORE$1 + '.id=?'); + var sqlArgs = [id]; + + tx.executeSql(sql, sqlArgs, function (a, results) { + if (!results.rows.length) { + var err = createError(MISSING_DOC, 'missing'); + return finish(err); + } + var item = results.rows.item(0); + var metadata = safeJsonParse(item.metadata); + callback(latest(rev$$1, metadata)); + }); + } + + api._get = function (id, opts, callback) { + var doc; + var metadata; + var tx = opts.ctx; + if (!tx) { + return db.readTransaction(function (txn) { + api._get(id, $inject_Object_assign({ctx: txn}, opts), callback); + }); + } + + function finish(err) { + callback(err, {doc: doc, metadata: metadata, ctx: tx}); + } + + var sql; + var sqlArgs; + + if (!opts.rev) { + sql = select( + SELECT_DOCS, + [DOC_STORE$1, BY_SEQ_STORE$1], + DOC_STORE_AND_BY_SEQ_JOINER, + DOC_STORE$1 + '.id=?'); + sqlArgs = [id]; + } else if (opts.latest) { + latest$$1(tx, id, opts.rev, function (latestRev) { + opts.latest = false; + opts.rev = latestRev; + api._get(id, opts, callback); + }, finish); + return; + } else { + sql = select( + SELECT_DOCS, + [DOC_STORE$1, BY_SEQ_STORE$1], + DOC_STORE$1 + '.id=' + BY_SEQ_STORE$1 + '.doc_id', + [BY_SEQ_STORE$1 + '.doc_id=?', BY_SEQ_STORE$1 + '.rev=?']); + sqlArgs = [id, opts.rev]; + } + + tx.executeSql(sql, sqlArgs, function (a, results) { + if (!results.rows.length) { + var missingErr = createError(MISSING_DOC, 'missing'); + return finish(missingErr); + } + var item = results.rows.item(0); + metadata = safeJsonParse(item.metadata); + if (item.deleted && !opts.rev) { + var deletedErr = createError(MISSING_DOC, 'deleted'); + return finish(deletedErr); + } + doc = unstringifyDoc(item.data, metadata.id, item.rev); + finish(); + }); + }; + + api._allDocs = function (opts, callback) { + var results = []; + var totalRows; + var updateSeq; + + var start = 'startkey' in opts ? opts.startkey : false; + var end = 'endkey' in opts ? opts.endkey : false; + var key = 'key' in opts ? opts.key : false; + var keys = 'keys' in opts ? opts.keys : false; + var descending = 'descending' in opts ? opts.descending : false; + var limit = 'limit' in opts ? opts.limit : -1; + var offset = 'skip' in opts ? opts.skip : 0; + var inclusiveEnd = opts.inclusive_end !== false; + + var sqlArgs = []; + var criteria = []; + + if (keys) { + var destinctKeys = []; + var bindingStr = ""; + keys.forEach(function (key) { + if (destinctKeys.indexOf(key) === -1) { + destinctKeys.push(key); + bindingStr += '?,'; + } + }); + bindingStr = bindingStr.substring(0, bindingStr.length - 1); // keys is never empty + criteria.push(DOC_STORE$1 + '.id IN (' + bindingStr + ')'); + sqlArgs = sqlArgs.concat(destinctKeys); + } else if (key !== false) { + criteria.push(DOC_STORE$1 + '.id = ?'); + sqlArgs.push(key); + } else if (start !== false || end !== false) { + if (start !== false) { + criteria.push(DOC_STORE$1 + '.id ' + (descending ? '<=' : '>=') + ' ?'); + sqlArgs.push(start); + } + if (end !== false) { + var comparator = descending ? '>' : '<'; + if (inclusiveEnd) { + comparator += '='; + } + criteria.push(DOC_STORE$1 + '.id ' + comparator + ' ?'); + sqlArgs.push(end); + } + if (key !== false) { + criteria.push(DOC_STORE$1 + '.id = ?'); + sqlArgs.push(key); + } + } + + if (!keys) { + // report deleted if keys are specified + criteria.push(BY_SEQ_STORE$1 + '.deleted = 0'); + } + + db.readTransaction(function (tx) { + // count the docs in parallel to other operations + countDocs(tx, function (docCount) { + totalRows = docCount; + }); + + /* istanbul ignore if */ + if (opts.update_seq) { + // get max sequence in parallel to other operations + getMaxSeq(tx, function (theSeq) { + updateSeq = theSeq; + }); + } + + if (limit === 0) { + return; + } + + // do a single query to fetch the documents + var sql = select( + SELECT_DOCS, + [DOC_STORE$1, BY_SEQ_STORE$1], + DOC_STORE_AND_BY_SEQ_JOINER, + criteria, + DOC_STORE$1 + '.id ' + (descending ? 'DESC' : 'ASC') + ); + sql += ' LIMIT ' + limit + ' OFFSET ' + offset; + + tx.executeSql(sql, sqlArgs, function (tx, result) { + for (var i = 0, l = result.rows.length; i < l; i++) { + var item = result.rows.item(i); + var metadata = safeJsonParse(item.metadata); + var id = metadata.id; + var data = unstringifyDoc(item.data, id, item.rev); + var winningRev$$1 = data._rev; + var doc = { + id: id, + key: id, + value: {rev: winningRev$$1} + }; + if (opts.include_docs) { + doc.doc = data; + doc.doc._rev = winningRev$$1; + if (opts.conflicts) { + var conflicts = collectConflicts(metadata); + if (conflicts.length) { + doc.doc._conflicts = conflicts; + } + } + fetchAttachmentsIfNecessary$1(doc.doc, opts, api, tx); + } + if (item.deleted) { + if (keys) { + doc.value.deleted = true; + doc.doc = null; + } else { + // propably should not happen + continue; + } + } + if (!keys) { + results.push(doc); + } else { + var index = keys.indexOf(id, index); + do { + results[index] = doc; + index = keys.indexOf(id, index + 1); + } while (index > -1 && index < keys.length); + } + } + if (keys) { + keys.forEach(function (key, index) { + if (!results[index]) { + results[index] = {key: key, error: 'not_found'}; + } + }); + } + }); + }, websqlError(callback), function () { + var returnVal = { + total_rows: totalRows, + offset: opts.skip, + rows: results + }; + + /* istanbul ignore if */ + if (opts.update_seq) { + returnVal.update_seq = updateSeq; + } + callback(null, returnVal); + }); + }; + + api._changes = function (opts) { + opts = clone(opts); + + if (opts.continuous) { + var id = api._name + ':' + uuid(); + websqlChanges.addListener(api._name, id, api, opts); + websqlChanges.notify(api._name); + return { + cancel: function () { + websqlChanges.removeListener(api._name, id); + } + }; + } + + var descending = opts.descending; + + // Ignore the `since` parameter when `descending` is true + opts.since = opts.since && !descending ? opts.since : 0; + + var limit = 'limit' in opts ? opts.limit : -1; + if (limit === 0) { + limit = 1; // per CouchDB _changes spec + } + + var returnDocs; + if ('return_docs' in opts) { + returnDocs = opts.return_docs; + } else if ('returnDocs' in opts) { + // TODO: Remove 'returnDocs' in favor of 'return_docs' in a future release + returnDocs = opts.returnDocs; + } else { + returnDocs = true; + } + var results = []; + var numResults = 0; + + function fetchChanges() { + + var selectStmt = + DOC_STORE$1 + '.json AS metadata, ' + + DOC_STORE$1 + '.max_seq AS maxSeq, ' + + BY_SEQ_STORE$1 + '.json AS winningDoc, ' + + BY_SEQ_STORE$1 + '.rev AS winningRev '; + + var from = DOC_STORE$1 + ' JOIN ' + BY_SEQ_STORE$1; + + var joiner = DOC_STORE$1 + '.id=' + BY_SEQ_STORE$1 + '.doc_id' + + ' AND ' + DOC_STORE$1 + '.winningseq=' + BY_SEQ_STORE$1 + '.seq'; + + var criteria = ['maxSeq > ?']; + var sqlArgs = [opts.since]; + + if (opts.doc_ids) { + criteria.push(DOC_STORE$1 + '.id IN ' + qMarks(opts.doc_ids.length)); + sqlArgs = sqlArgs.concat(opts.doc_ids); + } + + var orderBy = 'maxSeq ' + (descending ? 'DESC' : 'ASC'); + + var sql = select(selectStmt, from, joiner, criteria, orderBy); + + var filter = filterChange(opts); + if (!opts.view && !opts.filter) { + // we can just limit in the query + sql += ' LIMIT ' + limit; + } + + var lastSeq = opts.since || 0; + db.readTransaction(function (tx) { + tx.executeSql(sql, sqlArgs, function (tx, result) { + function reportChange(change) { + return function () { + opts.onChange(change); + }; + } + for (var i = 0, l = result.rows.length; i < l; i++) { + var item = result.rows.item(i); + var metadata = safeJsonParse(item.metadata); + lastSeq = item.maxSeq; + + var doc = unstringifyDoc(item.winningDoc, metadata.id, + item.winningRev); + var change = opts.processChange(doc, metadata, opts); + change.seq = item.maxSeq; + + var filtered = filter(change); + if (typeof filtered === 'object') { + return opts.complete(filtered); + } + + if (filtered) { + numResults++; + if (returnDocs) { + results.push(change); + } + // process the attachment immediately + // for the benefit of live listeners + if (opts.attachments && opts.include_docs) { + fetchAttachmentsIfNecessary$1(doc, opts, api, tx, + reportChange(change)); + } else { + reportChange(change)(); + } + } + if (numResults === limit) { + break; + } + } + }); + }, websqlError(opts.complete), function () { + if (!opts.continuous) { + opts.complete(null, { + results: results, + last_seq: lastSeq + }); + } + }); + } + + fetchChanges(); + }; + + api._close = function (callback) { + //WebSQL databases do not need to be closed + callback(); + }; + + api._getAttachment = function (docId, attachId, attachment, opts, callback) { + var res; + var tx = opts.ctx; + var digest = attachment.digest; + var type = attachment.content_type; + var sql = 'SELECT escaped, ' + + 'CASE WHEN escaped = 1 THEN body ELSE HEX(body) END AS body FROM ' + + ATTACH_STORE$1 + ' WHERE digest=?'; + tx.executeSql(sql, [digest], function (tx, result) { + // websql has a bug where \u0000 causes early truncation in strings + // and blobs. to work around this, we used to use the hex() function, + // but that's not performant. after migration 6, we remove \u0000 + // and add it back in afterwards + var item = result.rows.item(0); + var data = item.escaped ? unescapeBlob(item.body) : + parseHexString(item.body, encoding); + if (opts.binary) { + res = binStringToBluffer(data, type); + } else { + res = thisBtoa(data); + } + callback(null, res); + }); + }; + + api._getRevisionTree = function (docId, callback) { + db.readTransaction(function (tx) { + var sql = 'SELECT json AS metadata FROM ' + DOC_STORE$1 + ' WHERE id = ?'; + tx.executeSql(sql, [docId], function (tx, result) { + if (!result.rows.length) { + callback(createError(MISSING_DOC)); + } else { + var data = safeJsonParse(result.rows.item(0).metadata); + callback(null, data.rev_tree); + } + }); + }); + }; + + api._doCompaction = function (docId, revs, callback) { + if (!revs.length) { + return callback(); + } + db.transaction(function (tx) { + + // update doc store + var sql = 'SELECT json AS metadata FROM ' + DOC_STORE$1 + ' WHERE id = ?'; + tx.executeSql(sql, [docId], function (tx, result) { + var metadata = safeJsonParse(result.rows.item(0).metadata); + traverseRevTree(metadata.rev_tree, function (isLeaf, pos, + revHash, ctx, opts) { + var rev$$1 = pos + '-' + revHash; + if (revs.indexOf(rev$$1) !== -1) { + opts.status = 'missing'; + } + }); + + var sql = 'UPDATE ' + DOC_STORE$1 + ' SET json = ? WHERE id = ?'; + tx.executeSql(sql, [safeJsonStringify(metadata), docId]); + }); + + compactRevs$1(revs, docId, tx); + }, websqlError(callback), function () { + callback(); + }); + }; + + api._getLocal = function (id, callback) { + db.readTransaction(function (tx) { + var sql = 'SELECT json, rev FROM ' + LOCAL_STORE$1 + ' WHERE id=?'; + tx.executeSql(sql, [id], function (tx, res) { + if (res.rows.length) { + var item = res.rows.item(0); + var doc = unstringifyDoc(item.json, id, item.rev); + callback(null, doc); + } else { + callback(createError(MISSING_DOC)); + } + }); + }); + }; + + api._putLocal = function (doc, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + delete doc._revisions; // ignore this, trust the rev + var oldRev = doc._rev; + var id = doc._id; + var newRev; + if (!oldRev) { + newRev = doc._rev = '0-1'; + } else { + newRev = doc._rev = '0-' + (parseInt(oldRev.split('-')[1], 10) + 1); + } + var json = stringifyDoc(doc); + + var ret; + function putLocal(tx) { + var sql; + var values; + if (oldRev) { + sql = 'UPDATE ' + LOCAL_STORE$1 + ' SET rev=?, json=? ' + + 'WHERE id=? AND rev=?'; + values = [newRev, json, id, oldRev]; + } else { + sql = 'INSERT INTO ' + LOCAL_STORE$1 + ' (id, rev, json) VALUES (?,?,?)'; + values = [id, newRev, json]; + } + tx.executeSql(sql, values, function (tx, res) { + if (res.rowsAffected) { + ret = {ok: true, id: id, rev: newRev}; + if (opts.ctx) { // return immediately + callback(null, ret); + } + } else { + callback(createError(REV_CONFLICT)); + } + }, function () { + callback(createError(REV_CONFLICT)); + return false; // ack that we handled the error + }); + } + + if (opts.ctx) { + putLocal(opts.ctx); + } else { + db.transaction(putLocal, websqlError(callback), function () { + if (ret) { + callback(null, ret); + } + }); + } + }; + + api._removeLocal = function (doc, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + var ret; + + function removeLocal(tx) { + var sql = 'DELETE FROM ' + LOCAL_STORE$1 + ' WHERE id=? AND rev=?'; + var params = [doc._id, doc._rev]; + tx.executeSql(sql, params, function (tx, res) { + if (!res.rowsAffected) { + return callback(createError(MISSING_DOC)); + } + ret = {ok: true, id: doc._id, rev: '0-0'}; + if (opts.ctx) { // return immediately + callback(null, ret); + } + }); + } + + if (opts.ctx) { + removeLocal(opts.ctx); + } else { + db.transaction(removeLocal, websqlError(callback), function () { + if (ret) { + callback(null, ret); + } + }); + } + }; + + api._destroy = function (opts, callback) { + websqlChanges.removeAllListeners(api._name); + db.transaction(function (tx) { + var stores = [DOC_STORE$1, BY_SEQ_STORE$1, ATTACH_STORE$1, META_STORE$1, + LOCAL_STORE$1, ATTACH_AND_SEQ_STORE$1]; + stores.forEach(function (store) { + tx.executeSql('DROP TABLE IF EXISTS ' + store, []); + }); + }, websqlError(callback), function () { + if (hasLocalStorage()) { + delete window.localStorage['_pouch__websqldb_' + api._name]; + delete window.localStorage[api._name]; + } + callback(null, {'ok': true}); + }); + }; +} + +function canOpenTestDB() { + try { + openDatabase('_pouch_validate_websql', 1, '', 1); + return true; + } catch (err) { + return false; + } +} + +// WKWebView had a bug where WebSQL would throw a DOM Exception 18 +// (see https://bugs.webkit.org/show_bug.cgi?id=137760 and +// https://github.com/pouchdb/pouchdb/issues/5079) +// This has been fixed in latest WebKit, so we try to detect it here. +function isValidWebSQL() { + // WKWebView UA: + // Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) + // AppleWebKit/601.1.46 (KHTML, like Gecko) Mobile/13C75 + // Chrome for iOS UA: + // Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) + // AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 + // Mobile/9B206 Safari/7534.48.3 + // Firefox for iOS UA: + // Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 + // (KHTML, like Gecko) FxiOS/1.0 Mobile/12F69 Safari/600.1.4 + + // indexedDB is null on some UIWebViews and undefined in others + // see: https://bugs.webkit.org/show_bug.cgi?id=137034 + if (typeof indexedDB === 'undefined' || indexedDB === null || + !/iP(hone|od|ad)/.test(navigator.userAgent)) { + // definitely not WKWebView, avoid creating an unnecessary database + return true; + } + // Cache the result in LocalStorage. Reason we do this is because if we + // call openDatabase() too many times, Safari craps out in SauceLabs and + // starts throwing DOM Exception 14s. + var hasLS = hasLocalStorage(); + // Include user agent in the hash, so that if Safari is upgraded, we don't + // continually think it's broken. + var localStorageKey = '_pouch__websqldb_valid_' + navigator.userAgent; + if (hasLS && localStorage[localStorageKey]) { + return localStorage[localStorageKey] === '1'; + } + var openedTestDB = canOpenTestDB(); + if (hasLS) { + localStorage[localStorageKey] = openedTestDB ? '1' : '0'; + } + return openedTestDB; +} + +function valid() { + if (typeof openDatabase !== 'function') { + return false; + } + return isValidWebSQL(); +} + +function openDB$2(name, version, description, size) { + // Traditional WebSQL API + return openDatabase(name, version, description, size); +} + +function WebSQLPouch(opts, callback) { + var msg = 'WebSQL is deprecated and will be removed in future releases of PouchDB. ' + + 'Please migrate to IndexedDB: https://pouchdb.com/2018/01/23/pouchdb-6.4.2.html'; + guardedConsole('warn', msg); + var _opts = $inject_Object_assign({ + websql: openDB$2 + }, opts); + + WebSqlPouch.call(this, _opts, callback); +} + +WebSQLPouch.valid = valid; + +WebSQLPouch.use_prefix = true; + +function WebSqlPouch$1 (PouchDB) { + PouchDB.adapter('websql', WebSQLPouch, true); +} + +/* global fetch */ +/* global Headers */ +function wrappedFetch() { + var wrappedPromise = {}; + + var promise = new PouchPromise(function (resolve, reject) { + wrappedPromise.resolve = resolve; + wrappedPromise.reject = reject; + }); + + var args = new Array(arguments.length); + + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + + wrappedPromise.promise = promise; + + PouchPromise.resolve().then(function () { + return fetch.apply(null, args); + }).then(function (response) { + wrappedPromise.resolve(response); + }).catch(function (error) { + wrappedPromise.reject(error); + }); + + return wrappedPromise; +} + +function fetchRequest(options, callback) { + var wrappedPromise, timer, response; + + var headers = new Headers(); + + var fetchOptions = { + method: options.method, + credentials: 'include', + headers: headers + }; + + if (options.json) { + headers.set('Accept', 'application/json'); + headers.set('Content-Type', options.headers['Content-Type'] || + 'application/json'); + } + + if (options.body && + options.processData && + typeof options.body !== 'string') { + fetchOptions.body = JSON.stringify(options.body); + } else if ('body' in options) { + fetchOptions.body = options.body; + } else { + fetchOptions.body = null; + } + + Object.keys(options.headers).forEach(function (key) { + if (options.headers.hasOwnProperty(key)) { + headers.set(key, options.headers[key]); + } + }); + + wrappedPromise = wrappedFetch(options.url, fetchOptions); + + if (options.timeout > 0) { + timer = setTimeout(function () { + wrappedPromise.reject(new Error('Load timeout for resource: ' + + options.url)); + }, options.timeout); + } + + wrappedPromise.promise.then(function (fetchResponse) { + response = { + statusCode: fetchResponse.status + }; + + if (options.timeout > 0) { + clearTimeout(timer); + } + + if (response.statusCode >= 200 && response.statusCode < 300) { + return options.binary ? fetchResponse.blob() : fetchResponse.text(); + } + + return fetchResponse.json(); + }).then(function (result) { + if (response.statusCode >= 200 && response.statusCode < 300) { + callback(null, response, result); + } else { + result.status = response.statusCode; + callback(result); + } + }).catch(function (error) { + if (!error) { + // this happens when the listener is canceled + error = new Error('canceled'); + } + callback(error); + }); + + return {abort: wrappedPromise.reject}; +} + +function xhRequest(options, callback) { + + var xhr, timer; + var timedout = false; + + var abortReq = function () { + xhr.abort(); + cleanUp(); + }; + + var timeoutReq = function () { + timedout = true; + xhr.abort(); + cleanUp(); + }; + + var ret = {abort: abortReq}; + + var cleanUp = function () { + clearTimeout(timer); + ret.abort = function () {}; + if (xhr) { + xhr.onprogress = undefined; + if (xhr.upload) { + xhr.upload.onprogress = undefined; + } + xhr.onreadystatechange = undefined; + xhr = undefined; + } + }; + + if (options.xhr) { + xhr = new options.xhr(); + } else { + xhr = new XMLHttpRequest(); + } + + try { + xhr.open(options.method, options.url); + } catch (exception) { + return callback(new Error(exception.name || 'Url is invalid')); + } + + xhr.withCredentials = ('withCredentials' in options) ? + options.withCredentials : true; + + if (options.method === 'GET') { + delete options.headers['Content-Type']; + } else if (options.json) { + options.headers.Accept = 'application/json'; + options.headers['Content-Type'] = options.headers['Content-Type'] || + 'application/json'; + if (options.body && + options.processData && + typeof options.body !== "string") { + options.body = JSON.stringify(options.body); + } + } + + if (options.binary) { + xhr.responseType = 'arraybuffer'; + } + + if (!('body' in options)) { + options.body = null; + } + + for (var key in options.headers) { + if (options.headers.hasOwnProperty(key)) { + xhr.setRequestHeader(key, options.headers[key]); + } + } + + if (options.timeout > 0) { + timer = setTimeout(timeoutReq, options.timeout); + xhr.onprogress = function () { + clearTimeout(timer); + if (xhr.readyState !== 4) { + timer = setTimeout(timeoutReq, options.timeout); + } + }; + if (typeof xhr.upload !== 'undefined') { // does not exist in ie9 + xhr.upload.onprogress = xhr.onprogress; + } + } + + xhr.onreadystatechange = function () { + if (xhr.readyState !== 4) { + return; + } + + var response = { + statusCode: xhr.status + }; + + if (xhr.status >= 200 && xhr.status < 300) { + var data; + if (options.binary) { + data = createBlob([xhr.response || ''], { + type: xhr.getResponseHeader('Content-Type') + }); + } else { + data = xhr.responseText; + } + callback(null, response, data); + } else { + var err = {}; + if (timedout) { + err = new Error('ETIMEDOUT'); + err.code = 'ETIMEDOUT'; + } else if (typeof xhr.response === 'string' && xhr.response !== '') { + try { + err = JSON.parse(xhr.response); + } catch (e) {} + } + + err.status = xhr.status; + + callback(err); + } + cleanUp(); + }; + + if (options.body && (options.body instanceof Blob)) { + readAsArrayBuffer(options.body, function (arrayBuffer) { + xhr.send(arrayBuffer); + }); + } else { + xhr.send(options.body); + } + + return ret; +} + +function testXhr() { + try { + new XMLHttpRequest(); + return true; + } catch (err) { + return false; + } +} + +var hasXhr = testXhr(); + +function ajax(options, callback) { + if (!false && (hasXhr || options.xhr)) { + return xhRequest(options, callback); + } else { + return fetchRequest(options, callback); + } +} + +// the blob already has a type; do nothing + +function defaultBody() { + return ''; +} + +function ajaxCore(options, callback) { + + options = clone(options); + + var defaultOptions = { + method : "GET", + headers: {}, + json: true, + processData: true, + timeout: 10000, + cache: false + }; + + options = $inject_Object_assign(defaultOptions, options); + + function onSuccess(obj, resp, cb) { + if (!options.binary && options.json && typeof obj === 'string') { + /* istanbul ignore next */ + try { + obj = JSON.parse(obj); + } catch (e) { + // Probably a malformed JSON from server + return cb(e); + } + } + if (Array.isArray(obj)) { + obj = obj.map(function (v) { + if (v.error || v.missing) { + return generateErrorFromResponse(v); + } else { + return v; + } + }); + } + if (options.binary) { + + } + cb(null, obj, resp); + } + + if (options.json) { + if (!options.binary) { + options.headers.Accept = 'application/json'; + } + options.headers['Content-Type'] = options.headers['Content-Type'] || + 'application/json'; + } + + if (options.binary) { + options.encoding = null; + options.json = false; + } + + if (!options.processData) { + options.json = false; + } + + return ajax(options, function (err, response, body) { + + if (err) { + return callback(generateErrorFromResponse(err)); + } + + var error; + var content_type = response.headers && response.headers['content-type']; + var data = body || defaultBody(); + + // CouchDB doesn't always return the right content-type for JSON data, so + // we check for ^{ and }$ (ignoring leading/trailing whitespace) + if (!options.binary && (options.json || !options.processData) && + typeof data !== 'object' && + (/json/.test(content_type) || + (/^[\s]*\{/.test(data) && /\}[\s]*$/.test(data)))) { + try { + data = JSON.parse(data.toString()); + } catch (e) {} + } + + if (response.statusCode >= 200 && response.statusCode < 300) { + onSuccess(data, response, callback); + } else { + error = generateErrorFromResponse(data); + error.status = response.statusCode; + callback(error); + } + }); +} + +function ajax$1(opts, callback) { + + // cache-buster, specifically designed to work around IE's aggressive caching + // see http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/ + // Also Safari caches POSTs, so we need to cache-bust those too. + var ua = (navigator && navigator.userAgent) ? + navigator.userAgent.toLowerCase() : ''; + + var isSafari = ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1; + var isIE = ua.indexOf('msie') !== -1; + var isTrident = ua.indexOf('trident') !== -1; + var isEdge = ua.indexOf('edge') !== -1; + + // it appears the new version of safari also caches GETs, + // see https://github.com/pouchdb/pouchdb/issues/5010 + var shouldCacheBust = (isSafari || + ((isIE || isTrident || isEdge) && opts.method === 'GET')); + + var cache = 'cache' in opts ? opts.cache : true; + + var isBlobUrl = /^blob:/.test(opts.url); // don't append nonces for blob URLs + + if (!isBlobUrl && (shouldCacheBust || !cache)) { + var hasArgs = opts.url.indexOf('?') !== -1; + opts.url += (hasArgs ? '&' : '?') + '_nonce=' + Date.now(); + } + + return ajaxCore(opts, callback); +} + +// dead simple promise pool, inspired by https://github.com/timdp/es6-promise-pool +// but much smaller in code size. limits the number of concurrent promises that are executed + + +function pool(promiseFactories, limit) { + return new PouchPromise(function (resolve, reject) { + var running = 0; + var current = 0; + var done = 0; + var len = promiseFactories.length; + var err; + + function runNext() { + running++; + promiseFactories[current++]().then(onSuccess, onError); + } + + function doNext() { + if (++done === len) { + /* istanbul ignore if */ + if (err) { + reject(err); + } else { + resolve(); + } + } else { + runNextBatch(); + } + } + + function onSuccess() { + running--; + doNext(); + } + + /* istanbul ignore next */ + function onError(thisErr) { + running--; + err = err || thisErr; + doNext(); + } + + function runNextBatch() { + while (running < limit && current < len) { + runNext(); + } + } + + runNextBatch(); + }); +} + +var CHANGES_BATCH_SIZE = 25; +var MAX_SIMULTANEOUS_REVS = 50; +var CHANGES_TIMEOUT_BUFFER = 5000; +var DEFAULT_HEARTBEAT = 10000; + +var supportsBulkGetMap = {}; + +function readAttachmentsAsBlobOrBuffer(row) { + var doc = row.doc || row.ok; + var atts = doc._attachments; + if (!atts) { + return; + } + Object.keys(atts).forEach(function (filename) { + var att = atts[filename]; + att.data = b64ToBluffer(att.data, att.content_type); + }); +} + +function encodeDocId(id) { + if (/^_design/.test(id)) { + return '_design/' + encodeURIComponent(id.slice(8)); + } + if (/^_local/.test(id)) { + return '_local/' + encodeURIComponent(id.slice(7)); + } + return encodeURIComponent(id); +} + +function preprocessAttachments$2(doc) { + if (!doc._attachments || !Object.keys(doc._attachments)) { + return PouchPromise.resolve(); + } + + return PouchPromise.all(Object.keys(doc._attachments).map(function (key) { + var attachment = doc._attachments[key]; + if (attachment.data && typeof attachment.data !== 'string') { + return new PouchPromise(function (resolve) { + blobToBase64(attachment.data, resolve); + }).then(function (b64) { + attachment.data = b64; + }); + } + })); +} + +function hasUrlPrefix(opts) { + if (!opts.prefix) { + return false; + } + + var protocol = parseUri(opts.prefix).protocol; + + return protocol === 'http' || protocol === 'https'; +} + +// Get all the information you possibly can about the URI given by name and +// return it as a suitable object. +function getHost(name, opts) { + + // encode db name if opts.prefix is a url (#5574) + if (hasUrlPrefix(opts)) { + var dbName = opts.name.substr(opts.prefix.length); + name = opts.prefix + encodeURIComponent(dbName); + } + + // Prase the URI into all its little bits + var uri = parseUri(name); + + // Store the user and password as a separate auth object + if (uri.user || uri.password) { + uri.auth = {username: uri.user, password: uri.password}; + } + + // Split the path part of the URI into parts using '/' as the delimiter + // after removing any leading '/' and any trailing '/' + var parts = uri.path.replace(/(^\/|\/$)/g, '').split('/'); + + // Store the first part as the database name and remove it from the parts + // array + uri.db = parts.pop(); + // Prevent double encoding of URI component + if (uri.db.indexOf('%') === -1) { + uri.db = encodeURIComponent(uri.db); + } + + // Restore the path by joining all the remaining parts (all the parts + // except for the database name) with '/'s + uri.path = parts.join('/'); + + return uri; +} + +// Generate a URL with the host data given by opts and the given path +function genDBUrl(opts, path) { + return genUrl(opts, opts.db + '/' + path); +} + +// Generate a URL with the host data given by opts and the given path +function genUrl(opts, path) { + // If the host already has a path, then we need to have a path delimiter + // Otherwise, the path delimiter is the empty string + var pathDel = !opts.path ? '' : '/'; + + // If the host already has a path, then we need to have a path delimiter + // Otherwise, the path delimiter is the empty string + return opts.protocol + '://' + opts.host + + (opts.port ? (':' + opts.port) : '') + + '/' + opts.path + pathDel + path; +} + +function paramsToStr(params) { + return '?' + Object.keys(params).map(function (k) { + return k + '=' + encodeURIComponent(params[k]); + }).join('&'); +} + +// Implements the PouchDB API for dealing with CouchDB instances over HTTP +function HttpPouch(opts, callback) { + + // The functions that will be publicly available for HttpPouch + var api = this; + + var host = getHost(opts.name, opts); + var dbUrl = genDBUrl(host, ''); + + opts = clone(opts); + var ajaxOpts = opts.ajax || {}; + + if (opts.auth || host.auth) { + var nAuth = opts.auth || host.auth; + var str = nAuth.username + ':' + nAuth.password; + var token = thisBtoa(unescape(encodeURIComponent(str))); + ajaxOpts.headers = ajaxOpts.headers || {}; + ajaxOpts.headers.Authorization = 'Basic ' + token; + } + + // Not strictly necessary, but we do this because numerous tests + // rely on swapping ajax in and out. + api._ajax = ajax$1; + + function ajax(userOpts, options, callback) { + var reqAjax = (userOpts || {}).ajax || {}; + var reqOpts = $inject_Object_assign(clone(ajaxOpts), reqAjax, options); + var defaultHeaders = clone(ajaxOpts.headers || {}); + reqOpts.headers = $inject_Object_assign(defaultHeaders, reqAjax.headers, + options.headers || {}); + /* istanbul ignore if */ + if (api.constructor.listeners('debug').length) { + api.constructor.emit('debug', ['http', reqOpts.method, reqOpts.url]); + } + return api._ajax(reqOpts, callback); + } + + function ajaxPromise(userOpts, opts) { + return new PouchPromise(function (resolve, reject) { + ajax(userOpts, opts, function (err, res) { + /* istanbul ignore if */ + if (err) { + return reject(err); + } + resolve(res); + }); + }); + } + + function adapterFun$$1(name, fun) { + return adapterFun(name, __WEBPACK_IMPORTED_MODULE_1_argsarray___default()(function (args) { + setup().then(function () { + return fun.apply(this, args); + }).catch(function (e) { + var callback = args.pop(); + callback(e); + }); + })); + } + + var setupPromise; + + function setup() { + // TODO: Remove `skipSetup` in favor of `skip_setup` in a future release + if (opts.skipSetup || opts.skip_setup) { + return PouchPromise.resolve(); + } + + // If there is a setup in process or previous successful setup + // done then we will use that + // If previous setups have been rejected we will try again + if (setupPromise) { + return setupPromise; + } + + var checkExists = {method: 'GET', url: dbUrl}; + setupPromise = ajaxPromise({}, checkExists).catch(function (err) { + if (err && err.status && err.status === 404) { + // Doesnt exist, create it + explainError(404, 'PouchDB is just detecting if the remote exists.'); + return ajaxPromise({}, {method: 'PUT', url: dbUrl}); + } else { + return PouchPromise.reject(err); + } + }).catch(function (err) { + // If we try to create a database that already exists, skipped in + // istanbul since its catching a race condition. + /* istanbul ignore if */ + if (err && err.status && err.status === 412) { + return true; + } + return PouchPromise.reject(err); + }); + + setupPromise.catch(function () { + setupPromise = null; + }); + + return setupPromise; + } + + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function () { + callback(null, api); + }); + + api._remote = true; + /* istanbul ignore next */ + api.type = function () { + return 'http'; + }; + + api.id = adapterFun$$1('id', function (callback) { + ajax({}, {method: 'GET', url: genUrl(host, '')}, function (err, result) { + var uuid$$1 = (result && result.uuid) ? + (result.uuid + host.db) : genDBUrl(host, ''); + callback(null, uuid$$1); + }); + }); + + api.request = adapterFun$$1('request', function (options, callback) { + options.url = genDBUrl(host, options.url); + ajax({}, options, callback); + }); + + // Sends a POST request to the host calling the couchdb _compact function + // version: The version of CouchDB it is running + api.compact = adapterFun$$1('compact', function (opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + opts = clone(opts); + ajax(opts, { + url: genDBUrl(host, '_compact'), + method: 'POST' + }, function () { + function ping() { + api.info(function (err, res) { + // CouchDB may send a "compact_running:true" if it's + // already compacting. PouchDB Server doesn't. + /* istanbul ignore else */ + if (res && !res.compact_running) { + callback(null, {ok: true}); + } else { + setTimeout(ping, opts.interval || 200); + } + }); + } + // Ping the http if it's finished compaction + ping(); + }); + }); + + api.bulkGet = adapterFun('bulkGet', function (opts, callback) { + var self = this; + + function doBulkGet(cb) { + var params = {}; + if (opts.revs) { + params.revs = true; + } + if (opts.attachments) { + /* istanbul ignore next */ + params.attachments = true; + } + if (opts.latest) { + params.latest = true; + } + ajax(opts, { + url: genDBUrl(host, '_bulk_get' + paramsToStr(params)), + method: 'POST', + body: { docs: opts.docs} + }, function (err, result) { + if (!err && opts.attachments && opts.binary) { + result.results.forEach(function (res) { + res.docs.forEach(readAttachmentsAsBlobOrBuffer); + }); + } + cb(err, result); + }); + } + + /* istanbul ignore next */ + function doBulkGetShim() { + // avoid "url too long error" by splitting up into multiple requests + var batchSize = MAX_SIMULTANEOUS_REVS; + var numBatches = Math.ceil(opts.docs.length / batchSize); + var numDone = 0; + var results = new Array(numBatches); + + function onResult(batchNum) { + return function (err, res) { + // err is impossible because shim returns a list of errs in that case + results[batchNum] = res.results; + if (++numDone === numBatches) { + callback(null, {results: flatten(results)}); + } + }; + } + + for (var i = 0; i < numBatches; i++) { + var subOpts = pick(opts, ['revs', 'attachments', 'binary', 'latest']); + subOpts.ajax = ajaxOpts; + subOpts.docs = opts.docs.slice(i * batchSize, + Math.min(opts.docs.length, (i + 1) * batchSize)); + bulkGet(self, subOpts, onResult(i)); + } + } + + // mark the whole database as either supporting or not supporting _bulk_get + var dbUrl = genUrl(host, ''); + var supportsBulkGet = supportsBulkGetMap[dbUrl]; + + /* istanbul ignore next */ + if (typeof supportsBulkGet !== 'boolean') { + // check if this database supports _bulk_get + doBulkGet(function (err, res) { + if (err) { + supportsBulkGetMap[dbUrl] = false; + explainError( + err.status, + 'PouchDB is just detecting if the remote ' + + 'supports the _bulk_get API.' + ); + doBulkGetShim(); + } else { + supportsBulkGetMap[dbUrl] = true; + callback(null, res); + } + }); + } else if (supportsBulkGet) { + doBulkGet(callback); + } else { + doBulkGetShim(); + } + }); + + // Calls GET on the host, which gets back a JSON string containing + // couchdb: A welcome string + // version: The version of CouchDB it is running + api._info = function (callback) { + setup().then(function () { + ajax({}, { + method: 'GET', + url: genDBUrl(host, '') + }, function (err, res) { + /* istanbul ignore next */ + if (err) { + return callback(err); + } + res.host = genDBUrl(host, ''); + callback(null, res); + }); + }).catch(callback); + }; + + // Get the document with the given id from the database given by host. + // The id could be solely the _id in the database, or it may be a + // _design/ID or _local/ID path + api.get = adapterFun$$1('get', function (id, opts, callback) { + // If no options were given, set the callback to the second parameter + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + opts = clone(opts); + + // List of parameters to add to the GET request + var params = {}; + + if (opts.revs) { + params.revs = true; + } + + if (opts.revs_info) { + params.revs_info = true; + } + + if (opts.latest) { + params.latest = true; + } + + if (opts.open_revs) { + if (opts.open_revs !== "all") { + opts.open_revs = JSON.stringify(opts.open_revs); + } + params.open_revs = opts.open_revs; + } + + if (opts.rev) { + params.rev = opts.rev; + } + + if (opts.conflicts) { + params.conflicts = opts.conflicts; + } + + /* istanbul ignore if */ + if (opts.update_seq) { + params.update_seq = opts.update_seq; + } + + id = encodeDocId(id); + + // Set the options for the ajax call + var options = { + method: 'GET', + url: genDBUrl(host, id + paramsToStr(params)) + }; + + function fetchAttachments(doc) { + var atts = doc._attachments; + var filenames = atts && Object.keys(atts); + if (!atts || !filenames.length) { + return; + } + // we fetch these manually in separate XHRs, because + // Sync Gateway would normally send it back as multipart/mixed, + // which we cannot parse. Also, this is more efficient than + // receiving attachments as base64-encoded strings. + function fetch(filename) { + var att = atts[filename]; + var path = encodeDocId(doc._id) + '/' + encodeAttachmentId(filename) + + '?rev=' + doc._rev; + return ajaxPromise(opts, { + method: 'GET', + url: genDBUrl(host, path), + binary: true + }).then(function (blob) { + if (opts.binary) { + return blob; + } + return new PouchPromise(function (resolve) { + blobToBase64(blob, resolve); + }); + }).then(function (data) { + delete att.stub; + delete att.length; + att.data = data; + }); + } + + var promiseFactories = filenames.map(function (filename) { + return function () { + return fetch(filename); + }; + }); + + // This limits the number of parallel xhr requests to 5 any time + // to avoid issues with maximum browser request limits + return pool(promiseFactories, 5); + } + + function fetchAllAttachments(docOrDocs) { + if (Array.isArray(docOrDocs)) { + return PouchPromise.all(docOrDocs.map(function (doc) { + if (doc.ok) { + return fetchAttachments(doc.ok); + } + })); + } + return fetchAttachments(docOrDocs); + } + + ajaxPromise(opts, options).then(function (res) { + return PouchPromise.resolve().then(function () { + if (opts.attachments) { + return fetchAllAttachments(res); + } + }).then(function () { + callback(null, res); + }); + }).catch(function (e) { + e.docId = id; + callback(e); + }); + }); + + // Delete the document given by doc from the database given by host. + api.remove = adapterFun$$1('remove', + function (docOrId, optsOrRev, opts, callback) { + var doc; + if (typeof optsOrRev === 'string') { + // id, rev, opts, callback style + doc = { + _id: docOrId, + _rev: optsOrRev + }; + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + } else { + // doc, opts, callback style + doc = docOrId; + if (typeof optsOrRev === 'function') { + callback = optsOrRev; + opts = {}; + } else { + callback = opts; + opts = optsOrRev; + } + } + + var rev$$1 = (doc._rev || opts.rev); + + // Delete the document + ajax(opts, { + method: 'DELETE', + url: genDBUrl(host, encodeDocId(doc._id)) + '?rev=' + rev$$1 + }, callback); + }); + + function encodeAttachmentId(attachmentId) { + return attachmentId.split("/").map(encodeURIComponent).join("/"); + } + + // Get the attachment + api.getAttachment = + adapterFun$$1('getAttachment', function (docId, attachmentId, opts, + callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + var params = opts.rev ? ('?rev=' + opts.rev) : ''; + var url = genDBUrl(host, encodeDocId(docId)) + '/' + + encodeAttachmentId(attachmentId) + params; + ajax(opts, { + method: 'GET', + url: url, + binary: true + }, callback); + }); + + // Remove the attachment given by the id and rev + api.removeAttachment = + adapterFun$$1('removeAttachment', function (docId, attachmentId, rev$$1, + callback) { + + var url = genDBUrl(host, encodeDocId(docId) + '/' + + encodeAttachmentId(attachmentId)) + '?rev=' + rev$$1; + + ajax({}, { + method: 'DELETE', + url: url + }, callback); + }); + + // Add the attachment given by blob and its contentType property + // to the document with the given id, the revision given by rev, and + // add it to the database given by host. + api.putAttachment = + adapterFun$$1('putAttachment', function (docId, attachmentId, rev$$1, blob, + type, callback) { + if (typeof type === 'function') { + callback = type; + type = blob; + blob = rev$$1; + rev$$1 = null; + } + var id = encodeDocId(docId) + '/' + encodeAttachmentId(attachmentId); + var url = genDBUrl(host, id); + if (rev$$1) { + url += '?rev=' + rev$$1; + } + + if (typeof blob === 'string') { + // input is assumed to be a base64 string + var binary; + try { + binary = thisAtob(blob); + } catch (err) { + return callback(createError(BAD_ARG, + 'Attachment is not a valid base64 string')); + } + blob = binary ? binStringToBluffer(binary, type) : ''; + } + + var opts = { + headers: {'Content-Type': type}, + method: 'PUT', + url: url, + processData: false, + body: blob, + timeout: ajaxOpts.timeout || 60000 + }; + // Add the attachment + ajax({}, opts, callback); + }); + + // Update/create multiple documents given by req in the database + // given by host. + api._bulkDocs = function (req, opts, callback) { + // If new_edits=false then it prevents the database from creating + // new revision numbers for the documents. Instead it just uses + // the old ones. This is used in database replication. + req.new_edits = opts.new_edits; + + setup().then(function () { + return PouchPromise.all(req.docs.map(preprocessAttachments$2)); + }).then(function () { + // Update/create the documents + ajax(opts, { + method: 'POST', + url: genDBUrl(host, '_bulk_docs'), + timeout: opts.timeout, + body: req + }, function (err, results) { + if (err) { + return callback(err); + } + results.forEach(function (result) { + result.ok = true; // smooths out cloudant not adding this + }); + callback(null, results); + }); + }).catch(callback); + }; + + + // Update/create document + api._put = function (doc, opts, callback) { + setup().then(function () { + return preprocessAttachments$2(doc); + }).then(function () { + // Update/create the document + ajax(opts, { + method: 'PUT', + url: genDBUrl(host, encodeDocId(doc._id)), + body: doc + }, function (err, result) { + if (err) { + err.docId = doc && doc._id; + return callback(err); + } + callback(null, result); + }); + }).catch(callback); + }; + + + // Get a listing of the documents in the database given + // by host and ordered by increasing id. + api.allDocs = adapterFun$$1('allDocs', function (opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + opts = clone(opts); + + // List of parameters to add to the GET request + var params = {}; + var body; + var method = 'GET'; + + if (opts.conflicts) { + params.conflicts = true; + } + + /* istanbul ignore if */ + if (opts.update_seq) { + params.update_seq = true; + } + + if (opts.descending) { + params.descending = true; + } + + if (opts.include_docs) { + params.include_docs = true; + } + + // added in CouchDB 1.6.0 + if (opts.attachments) { + params.attachments = true; + } + + if (opts.key) { + params.key = JSON.stringify(opts.key); + } + + if (opts.start_key) { + opts.startkey = opts.start_key; + } + + if (opts.startkey) { + params.startkey = JSON.stringify(opts.startkey); + } + + if (opts.end_key) { + opts.endkey = opts.end_key; + } + + if (opts.endkey) { + params.endkey = JSON.stringify(opts.endkey); + } + + if (typeof opts.inclusive_end !== 'undefined') { + params.inclusive_end = !!opts.inclusive_end; + } + + if (typeof opts.limit !== 'undefined') { + params.limit = opts.limit; + } + + if (typeof opts.skip !== 'undefined') { + params.skip = opts.skip; + } + + var paramStr = paramsToStr(params); + + if (typeof opts.keys !== 'undefined') { + method = 'POST'; + body = {keys: opts.keys}; + } + + // Get the document listing + ajaxPromise(opts, { + method: method, + url: genDBUrl(host, '_all_docs' + paramStr), + body: body + }).then(function (res) { + if (opts.include_docs && opts.attachments && opts.binary) { + res.rows.forEach(readAttachmentsAsBlobOrBuffer); + } + callback(null, res); + }).catch(callback); + }); + + // Get a list of changes made to documents in the database given by host. + // TODO According to the README, there should be two other methods here, + // api.changes.addListener and api.changes.removeListener. + api._changes = function (opts) { + + // We internally page the results of a changes request, this means + // if there is a large set of changes to be returned we can start + // processing them quicker instead of waiting on the entire + // set of changes to return and attempting to process them at once + var batchSize = 'batch_size' in opts ? opts.batch_size : CHANGES_BATCH_SIZE; + + opts = clone(opts); + + if (opts.continuous && !('heartbeat' in opts)) { + opts.heartbeat = DEFAULT_HEARTBEAT; + } + + var requestTimeout = ('timeout' in opts) ? opts.timeout : + ('timeout' in ajaxOpts) ? ajaxOpts.timeout : + 30 * 1000; + + // ensure CHANGES_TIMEOUT_BUFFER applies + if ('timeout' in opts && opts.timeout && + (requestTimeout - opts.timeout) < CHANGES_TIMEOUT_BUFFER) { + requestTimeout = opts.timeout + CHANGES_TIMEOUT_BUFFER; + } + + if ('heartbeat' in opts && opts.heartbeat && + (requestTimeout - opts.heartbeat) < CHANGES_TIMEOUT_BUFFER) { + requestTimeout = opts.heartbeat + CHANGES_TIMEOUT_BUFFER; + } + + var params = {}; + if ('timeout' in opts && opts.timeout) { + params.timeout = opts.timeout; + } + + var limit = (typeof opts.limit !== 'undefined') ? opts.limit : false; + var returnDocs; + if ('return_docs' in opts) { + returnDocs = opts.return_docs; + } else if ('returnDocs' in opts) { + // TODO: Remove 'returnDocs' in favor of 'return_docs' in a future release + returnDocs = opts.returnDocs; + } else { + returnDocs = true; + } + // + var leftToFetch = limit; + + if (opts.style) { + params.style = opts.style; + } + + if (opts.include_docs || opts.filter && typeof opts.filter === 'function') { + params.include_docs = true; + } + + if (opts.attachments) { + params.attachments = true; + } + + if (opts.continuous) { + params.feed = 'longpoll'; + } + + if (opts.seq_interval) { + params.seq_interval = opts.seq_interval; + } + + if (opts.conflicts) { + params.conflicts = true; + } + + if (opts.descending) { + params.descending = true; + } + + /* istanbul ignore if */ + if (opts.update_seq) { + params.update_seq = true; + } + + if ('heartbeat' in opts) { + // If the heartbeat value is false, it disables the default heartbeat + if (opts.heartbeat) { + params.heartbeat = opts.heartbeat; + } + } + + if (opts.filter && typeof opts.filter === 'string') { + params.filter = opts.filter; + } + + if (opts.view && typeof opts.view === 'string') { + params.filter = '_view'; + params.view = opts.view; + } + + // If opts.query_params exists, pass it through to the changes request. + // These parameters may be used by the filter on the source database. + if (opts.query_params && typeof opts.query_params === 'object') { + for (var param_name in opts.query_params) { + /* istanbul ignore else */ + if (opts.query_params.hasOwnProperty(param_name)) { + params[param_name] = opts.query_params[param_name]; + } + } + } + + var method = 'GET'; + var body; + + if (opts.doc_ids) { + // set this automagically for the user; it's annoying that couchdb + // requires both a "filter" and a "doc_ids" param. + params.filter = '_doc_ids'; + method = 'POST'; + body = {doc_ids: opts.doc_ids }; + } + /* istanbul ignore next */ + else if (opts.selector) { + // set this automagically for the user, similar to above + params.filter = '_selector'; + method = 'POST'; + body = {selector: opts.selector }; + } + + var xhr; + var lastFetchedSeq; + + // Get all the changes starting wtih the one immediately after the + // sequence number given by since. + var fetch = function (since, callback) { + if (opts.aborted) { + return; + } + params.since = since; + // "since" can be any kind of json object in Coudant/CouchDB 2.x + /* istanbul ignore next */ + if (typeof params.since === "object") { + params.since = JSON.stringify(params.since); + } + + if (opts.descending) { + if (limit) { + params.limit = leftToFetch; + } + } else { + params.limit = (!limit || leftToFetch > batchSize) ? + batchSize : leftToFetch; + } + + // Set the options for the ajax call + var xhrOpts = { + method: method, + url: genDBUrl(host, '_changes' + paramsToStr(params)), + timeout: requestTimeout, + body: body + }; + lastFetchedSeq = since; + + /* istanbul ignore if */ + if (opts.aborted) { + return; + } + + // Get the changes + setup().then(function () { + xhr = ajax(opts, xhrOpts, callback); + }).catch(callback); + }; + + // If opts.since exists, get all the changes from the sequence + // number given by opts.since. Otherwise, get all the changes + // from the sequence number 0. + var results = {results: []}; + + var fetched = function (err, res) { + if (opts.aborted) { + return; + } + var raw_results_length = 0; + // If the result of the ajax call (res) contains changes (res.results) + if (res && res.results) { + raw_results_length = res.results.length; + results.last_seq = res.last_seq; + var pending = null; + var lastSeq = null; + // Attach 'pending' property if server supports it (CouchDB 2.0+) + /* istanbul ignore if */ + if (typeof res.pending === 'number') { + pending = res.pending; + } + if (typeof results.last_seq === 'string' || typeof results.last_seq === 'number') { + lastSeq = results.last_seq; + } + // For each change + var req = {}; + req.query = opts.query_params; + res.results = res.results.filter(function (c) { + leftToFetch--; + var ret = filterChange(opts)(c); + if (ret) { + if (opts.include_docs && opts.attachments && opts.binary) { + readAttachmentsAsBlobOrBuffer(c); + } + if (returnDocs) { + results.results.push(c); + } + opts.onChange(c, pending, lastSeq); + } + return ret; + }); + } else if (err) { + // In case of an error, stop listening for changes and call + // opts.complete + opts.aborted = true; + opts.complete(err); + return; + } + + // The changes feed may have timed out with no results + // if so reuse last update sequence + if (res && res.last_seq) { + lastFetchedSeq = res.last_seq; + } + + var finished = (limit && leftToFetch <= 0) || + (res && raw_results_length < batchSize) || + (opts.descending); + + if ((opts.continuous && !(limit && leftToFetch <= 0)) || !finished) { + // Queue a call to fetch again with the newest sequence number + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function () { fetch(lastFetchedSeq, fetched); }); + } else { + // We're done, call the callback + opts.complete(null, results); + } + }; + + fetch(opts.since || 0, fetched); + + // Return a method to cancel this method from processing any more + return { + cancel: function () { + opts.aborted = true; + if (xhr) { + xhr.abort(); + } + } + }; + }; + + // Given a set of document/revision IDs (given by req), tets the subset of + // those that do NOT correspond to revisions stored in the database. + // See http://wiki.apache.org/couchdb/HttpPostRevsDiff + api.revsDiff = adapterFun$$1('revsDiff', function (req, opts, callback) { + // If no options were given, set the callback to be the second parameter + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + + // Get the missing document/revision IDs + ajax(opts, { + method: 'POST', + url: genDBUrl(host, '_revs_diff'), + body: req + }, callback); + }); + + api._close = function (callback) { + callback(); + }; + + api._destroy = function (options, callback) { + ajax(options, { + url: genDBUrl(host, ''), + method: 'DELETE' + }, function (err, resp) { + if (err && err.status && err.status !== 404) { + return callback(err); + } + callback(null, resp); + }); + }; +} + +// HttpPouch is a valid adapter. +HttpPouch.valid = function () { + return true; +}; + +function HttpPouch$1 (PouchDB) { + PouchDB.adapter('http', HttpPouch, false); + PouchDB.adapter('https', HttpPouch, false); +} + +function QueryParseError(message) { + this.status = 400; + this.name = 'query_parse_error'; + this.message = message; + this.error = true; + try { + Error.captureStackTrace(this, QueryParseError); + } catch (e) {} +} + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(QueryParseError, Error); + +function NotFoundError(message) { + this.status = 404; + this.name = 'not_found'; + this.message = message; + this.error = true; + try { + Error.captureStackTrace(this, NotFoundError); + } catch (e) {} +} + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(NotFoundError, Error); + +function BuiltInError(message) { + this.status = 500; + this.name = 'invalid_value'; + this.message = message; + this.error = true; + try { + Error.captureStackTrace(this, BuiltInError); + } catch (e) {} +} + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(BuiltInError, Error); + +function promisedCallback(promise, callback) { + if (callback) { + promise.then(function (res) { + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function () { + callback(null, res); + }); + }, function (reason) { + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function () { + callback(reason); + }); + }); + } + return promise; +} + +function callbackify(fun) { + return __WEBPACK_IMPORTED_MODULE_1_argsarray___default()(function (args) { + var cb = args.pop(); + var promise = fun.apply(this, args); + if (typeof cb === 'function') { + promisedCallback(promise, cb); + } + return promise; + }); +} + +// Promise finally util similar to Q.finally +function fin(promise, finalPromiseFactory) { + return promise.then(function (res) { + return finalPromiseFactory().then(function () { + return res; + }); + }, function (reason) { + return finalPromiseFactory().then(function () { + throw reason; + }); + }); +} + +function sequentialize(queue, promiseFactory) { + return function () { + var args = arguments; + var that = this; + return queue.add(function () { + return promiseFactory.apply(that, args); + }); + }; +} + +// uniq an array of strings, order not guaranteed +// similar to underscore/lodash _.uniq +function uniq(arr) { + var theSet = new ExportedSet(arr); + var result = new Array(theSet.size); + var index = -1; + theSet.forEach(function (value) { + result[++index] = value; + }); + return result; +} + +function mapToKeysArray(map) { + var result = new Array(map.size); + var index = -1; + map.forEach(function (value, key) { + result[++index] = key; + }); + return result; +} + +function createBuiltInError(name) { + var message = 'builtin ' + name + + ' function requires map values to be numbers' + + ' or number arrays'; + return new BuiltInError(message); +} + +function sum(values) { + var result = 0; + for (var i = 0, len = values.length; i < len; i++) { + var num = values[i]; + if (typeof num !== 'number') { + if (Array.isArray(num)) { + // lists of numbers are also allowed, sum them separately + result = typeof result === 'number' ? [result] : result; + for (var j = 0, jLen = num.length; j < jLen; j++) { + var jNum = num[j]; + if (typeof jNum !== 'number') { + throw createBuiltInError('_sum'); + } else if (typeof result[j] === 'undefined') { + result.push(jNum); + } else { + result[j] += jNum; + } + } + } else { // not array/number + throw createBuiltInError('_sum'); + } + } else if (typeof result === 'number') { + result += num; + } else { // add number to array + result[0] += num; + } + } + return result; +} + +var log = guardedConsole.bind(null, 'log'); +var isArray = Array.isArray; +var toJSON = JSON.parse; + +function evalFunctionWithEval(func, emit) { + return scopeEval( + "return (" + func.replace(/;\s*$/, "") + ");", + { + emit: emit, + sum: sum, + log: log, + isArray: isArray, + toJSON: toJSON + } + ); +} + +/* + * Simple task queue to sequentialize actions. Assumes + * callbacks will eventually fire (once). + */ + + +function TaskQueue$2() { + this.promise = new PouchPromise(function (fulfill) {fulfill(); }); +} +TaskQueue$2.prototype.add = function (promiseFactory) { + this.promise = this.promise.catch(function () { + // just recover + }).then(function () { + return promiseFactory(); + }); + return this.promise; +}; +TaskQueue$2.prototype.finish = function () { + return this.promise; +}; + +function stringify(input) { + if (!input) { + return 'undefined'; // backwards compat for empty reduce + } + // for backwards compat with mapreduce, functions/strings are stringified + // as-is. everything else is JSON-stringified. + switch (typeof input) { + case 'function': + // e.g. a mapreduce map + return input.toString(); + case 'string': + // e.g. a mapreduce built-in _reduce function + return input.toString(); + default: + // e.g. a JSON object in the case of mango queries + return JSON.stringify(input); + } +} + +/* create a string signature for a view so we can cache it and uniq it */ +function createViewSignature(mapFun, reduceFun) { + // the "undefined" part is for backwards compatibility + return stringify(mapFun) + stringify(reduceFun) + 'undefined'; +} + +function createView(sourceDB, viewName, mapFun, reduceFun, temporary, localDocName) { + var viewSignature = createViewSignature(mapFun, reduceFun); + + var cachedViews; + if (!temporary) { + // cache this to ensure we don't try to update the same view twice + cachedViews = sourceDB._cachedViews = sourceDB._cachedViews || {}; + if (cachedViews[viewSignature]) { + return cachedViews[viewSignature]; + } + } + + var promiseForView = sourceDB.info().then(function (info) { + + var depDbName = info.db_name + '-mrview-' + + (temporary ? 'temp' : stringMd5(viewSignature)); + + // save the view name in the source db so it can be cleaned up if necessary + // (e.g. when the _design doc is deleted, remove all associated view data) + function diffFunction(doc) { + doc.views = doc.views || {}; + var fullViewName = viewName; + if (fullViewName.indexOf('/') === -1) { + fullViewName = viewName + '/' + viewName; + } + var depDbs = doc.views[fullViewName] = doc.views[fullViewName] || {}; + /* istanbul ignore if */ + if (depDbs[depDbName]) { + return; // no update necessary + } + depDbs[depDbName] = true; + return doc; + } + return upsert(sourceDB, '_local/' + localDocName, diffFunction).then(function () { + return sourceDB.registerDependentDatabase(depDbName).then(function (res) { + var db = res.db; + db.auto_compaction = true; + var view = { + name: depDbName, + db: db, + sourceDB: sourceDB, + adapter: sourceDB.adapter, + mapFun: mapFun, + reduceFun: reduceFun + }; + return view.db.get('_local/lastSeq').catch(function (err) { + /* istanbul ignore if */ + if (err.status !== 404) { + throw err; + } + }).then(function (lastSeqDoc) { + view.seq = lastSeqDoc ? lastSeqDoc.seq : 0; + if (cachedViews) { + view.db.once('destroyed', function () { + delete cachedViews[viewSignature]; + }); + } + return view; + }); + }); + }); + }); + + if (cachedViews) { + cachedViews[viewSignature] = promiseForView; + } + return promiseForView; +} + +var persistentQueues = {}; +var tempViewQueue = new TaskQueue$2(); +var CHANGES_BATCH_SIZE$1 = 50; + +function parseViewName(name) { + // can be either 'ddocname/viewname' or just 'viewname' + // (where the ddoc name is the same) + return name.indexOf('/') === -1 ? [name, name] : name.split('/'); +} + +function isGenOne(changes) { + // only return true if the current change is 1- + // and there are no other leafs + return changes.length === 1 && /^1-/.test(changes[0].rev); +} + +function emitError(db, e) { + try { + db.emit('error', e); + } catch (err) { + guardedConsole('error', + 'The user\'s map/reduce function threw an uncaught error.\n' + + 'You can debug this error by doing:\n' + + 'myDatabase.on(\'error\', function (err) { debugger; });\n' + + 'Please double-check your map/reduce function.'); + guardedConsole('error', e); + } +} + +/** + * Returns an "abstract" mapreduce object of the form: + * + * { + * query: queryFun, + * viewCleanup: viewCleanupFun + * } + * + * Arguments are: + * + * localDoc: string + * This is for the local doc that gets saved in order to track the + * "dependent" DBs and clean them up for viewCleanup. It should be + * unique, so that indexer plugins don't collide with each other. + * mapper: function (mapFunDef, emit) + * Returns a map function based on the mapFunDef, which in the case of + * normal map/reduce is just the de-stringified function, but may be + * something else, such as an object in the case of pouchdb-find. + * reducer: function (reduceFunDef) + * Ditto, but for reducing. Modules don't have to support reducing + * (e.g. pouchdb-find). + * ddocValidator: function (ddoc, viewName) + * Throws an error if the ddoc or viewName is not valid. + * This could be a way to communicate to the user that the configuration for the + * indexer is invalid. + */ +function createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator) { + + function tryMap(db, fun, doc) { + // emit an event if there was an error thrown by a map function. + // putting try/catches in a single function also avoids deoptimizations. + try { + fun(doc); + } catch (e) { + emitError(db, e); + } + } + + function tryReduce(db, fun, keys, values, rereduce) { + // same as above, but returning the result or an error. there are two separate + // functions to avoid extra memory allocations since the tryCode() case is used + // for custom map functions (common) vs this function, which is only used for + // custom reduce functions (rare) + try { + return {output : fun(keys, values, rereduce)}; + } catch (e) { + emitError(db, e); + return {error: e}; + } + } + + function sortByKeyThenValue(x, y) { + var keyCompare = collate(x.key, y.key); + return keyCompare !== 0 ? keyCompare : collate(x.value, y.value); + } + + function sliceResults(results, limit, skip) { + skip = skip || 0; + if (typeof limit === 'number') { + return results.slice(skip, limit + skip); + } else if (skip > 0) { + return results.slice(skip); + } + return results; + } + + function rowToDocId(row) { + var val = row.value; + // Users can explicitly specify a joined doc _id, or it + // defaults to the doc _id that emitted the key/value. + var docId = (val && typeof val === 'object' && val._id) || row.id; + return docId; + } + + function readAttachmentsAsBlobOrBuffer(res) { + res.rows.forEach(function (row) { + var atts = row.doc && row.doc._attachments; + if (!atts) { + return; + } + Object.keys(atts).forEach(function (filename) { + var att = atts[filename]; + atts[filename].data = b64ToBluffer(att.data, att.content_type); + }); + }); + } + + function postprocessAttachments(opts) { + return function (res) { + if (opts.include_docs && opts.attachments && opts.binary) { + readAttachmentsAsBlobOrBuffer(res); + } + return res; + }; + } + + function addHttpParam(paramName, opts, params, asJson) { + // add an http param from opts to params, optionally json-encoded + var val = opts[paramName]; + if (typeof val !== 'undefined') { + if (asJson) { + val = encodeURIComponent(JSON.stringify(val)); + } + params.push(paramName + '=' + val); + } + } + + function coerceInteger(integerCandidate) { + if (typeof integerCandidate !== 'undefined') { + var asNumber = Number(integerCandidate); + // prevents e.g. '1foo' or '1.1' being coerced to 1 + if (!isNaN(asNumber) && asNumber === parseInt(integerCandidate, 10)) { + return asNumber; + } else { + return integerCandidate; + } + } + } + + function coerceOptions(opts) { + opts.group_level = coerceInteger(opts.group_level); + opts.limit = coerceInteger(opts.limit); + opts.skip = coerceInteger(opts.skip); + return opts; + } + + function checkPositiveInteger(number) { + if (number) { + if (typeof number !== 'number') { + return new QueryParseError('Invalid value for integer: "' + + number + '"'); + } + if (number < 0) { + return new QueryParseError('Invalid value for positive integer: ' + + '"' + number + '"'); + } + } + } + + function checkQueryParseError(options, fun) { + var startkeyName = options.descending ? 'endkey' : 'startkey'; + var endkeyName = options.descending ? 'startkey' : 'endkey'; + + if (typeof options[startkeyName] !== 'undefined' && + typeof options[endkeyName] !== 'undefined' && + collate(options[startkeyName], options[endkeyName]) > 0) { + throw new QueryParseError('No rows can match your key range, ' + + 'reverse your start_key and end_key or set {descending : true}'); + } else if (fun.reduce && options.reduce !== false) { + if (options.include_docs) { + throw new QueryParseError('{include_docs:true} is invalid for reduce'); + } else if (options.keys && options.keys.length > 1 && + !options.group && !options.group_level) { + throw new QueryParseError('Multi-key fetches for reduce views must use ' + + '{group: true}'); + } + } + ['group_level', 'limit', 'skip'].forEach(function (optionName) { + var error = checkPositiveInteger(options[optionName]); + if (error) { + throw error; + } + }); + } + + function httpQuery(db, fun, opts) { + // List of parameters to add to the PUT request + var params = []; + var body; + var method = 'GET'; + + // If opts.reduce exists and is defined, then add it to the list + // of parameters. + // If reduce=false then the results are that of only the map function + // not the final result of map and reduce. + addHttpParam('reduce', opts, params); + addHttpParam('include_docs', opts, params); + addHttpParam('attachments', opts, params); + addHttpParam('limit', opts, params); + addHttpParam('descending', opts, params); + addHttpParam('group', opts, params); + addHttpParam('group_level', opts, params); + addHttpParam('skip', opts, params); + addHttpParam('stale', opts, params); + addHttpParam('conflicts', opts, params); + addHttpParam('startkey', opts, params, true); + addHttpParam('start_key', opts, params, true); + addHttpParam('endkey', opts, params, true); + addHttpParam('end_key', opts, params, true); + addHttpParam('inclusive_end', opts, params); + addHttpParam('key', opts, params, true); + addHttpParam('update_seq', opts, params); + + // Format the list of parameters into a valid URI query string + params = params.join('&'); + params = params === '' ? '' : '?' + params; + + // If keys are supplied, issue a POST to circumvent GET query string limits + // see http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options + if (typeof opts.keys !== 'undefined') { + var MAX_URL_LENGTH = 2000; + // according to http://stackoverflow.com/a/417184/680742, + // the de facto URL length limit is 2000 characters + + var keysAsString = + 'keys=' + encodeURIComponent(JSON.stringify(opts.keys)); + if (keysAsString.length + params.length + 1 <= MAX_URL_LENGTH) { + // If the keys are short enough, do a GET. we do this to work around + // Safari not understanding 304s on POSTs (see pouchdb/pouchdb#1239) + params += (params[0] === '?' ? '&' : '?') + keysAsString; + } else { + method = 'POST'; + if (typeof fun === 'string') { + body = {keys: opts.keys}; + } else { // fun is {map : mapfun}, so append to this + fun.keys = opts.keys; + } + } + } + + // We are referencing a query defined in the design doc + if (typeof fun === 'string') { + var parts = parseViewName(fun); + return db.request({ + method: method, + url: '_design/' + parts[0] + '/_view/' + parts[1] + params, + body: body + }).then( + /* istanbul ignore next */ + function (result) { + // fail the entire request if the result contains an error + result.rows.forEach(function (row) { + if (row.value && row.value.error && row.value.error === "builtin_reduce_error") { + throw new Error(row.reason); + } + }); + + return result; + }) + .then(postprocessAttachments(opts)); + } + + // We are using a temporary view, terrible for performance, good for testing + body = body || {}; + Object.keys(fun).forEach(function (key) { + if (Array.isArray(fun[key])) { + body[key] = fun[key]; + } else { + body[key] = fun[key].toString(); + } + }); + return db.request({ + method: 'POST', + url: '_temp_view' + params, + body: body + }).then(postprocessAttachments(opts)); + } + + // custom adapters can define their own api._query + // and override the default behavior + /* istanbul ignore next */ + function customQuery(db, fun, opts) { + return new PouchPromise(function (resolve, reject) { + db._query(fun, opts, function (err, res) { + if (err) { + return reject(err); + } + resolve(res); + }); + }); + } + + // custom adapters can define their own api._viewCleanup + // and override the default behavior + /* istanbul ignore next */ + function customViewCleanup(db) { + return new PouchPromise(function (resolve, reject) { + db._viewCleanup(function (err, res) { + if (err) { + return reject(err); + } + resolve(res); + }); + }); + } + + function defaultsTo(value) { + return function (reason) { + /* istanbul ignore else */ + if (reason.status === 404) { + return value; + } else { + throw reason; + } + }; + } + + // returns a promise for a list of docs to update, based on the input docId. + // the order doesn't matter, because post-3.2.0, bulkDocs + // is an atomic operation in all three adapters. + function getDocsToPersist(docId, view, docIdsToChangesAndEmits) { + var metaDocId = '_local/doc_' + docId; + var defaultMetaDoc = {_id: metaDocId, keys: []}; + var docData = docIdsToChangesAndEmits.get(docId); + var indexableKeysToKeyValues = docData[0]; + var changes = docData[1]; + + function getMetaDoc() { + if (isGenOne(changes)) { + // generation 1, so we can safely assume initial state + // for performance reasons (avoids unnecessary GETs) + return PouchPromise.resolve(defaultMetaDoc); + } + return view.db.get(metaDocId).catch(defaultsTo(defaultMetaDoc)); + } + + function getKeyValueDocs(metaDoc) { + if (!metaDoc.keys.length) { + // no keys, no need for a lookup + return PouchPromise.resolve({rows: []}); + } + return view.db.allDocs({ + keys: metaDoc.keys, + include_docs: true + }); + } + + function processKeyValueDocs(metaDoc, kvDocsRes) { + var kvDocs = []; + var oldKeys = new ExportedSet(); + + for (var i = 0, len = kvDocsRes.rows.length; i < len; i++) { + var row = kvDocsRes.rows[i]; + var doc = row.doc; + if (!doc) { // deleted + continue; + } + kvDocs.push(doc); + oldKeys.add(doc._id); + doc._deleted = !indexableKeysToKeyValues.has(doc._id); + if (!doc._deleted) { + var keyValue = indexableKeysToKeyValues.get(doc._id); + if ('value' in keyValue) { + doc.value = keyValue.value; + } + } + } + var newKeys = mapToKeysArray(indexableKeysToKeyValues); + newKeys.forEach(function (key) { + if (!oldKeys.has(key)) { + // new doc + var kvDoc = { + _id: key + }; + var keyValue = indexableKeysToKeyValues.get(key); + if ('value' in keyValue) { + kvDoc.value = keyValue.value; + } + kvDocs.push(kvDoc); + } + }); + metaDoc.keys = uniq(newKeys.concat(metaDoc.keys)); + kvDocs.push(metaDoc); + + return kvDocs; + } + + return getMetaDoc().then(function (metaDoc) { + return getKeyValueDocs(metaDoc).then(function (kvDocsRes) { + return processKeyValueDocs(metaDoc, kvDocsRes); + }); + }); + } + + // updates all emitted key/value docs and metaDocs in the mrview database + // for the given batch of documents from the source database + function saveKeyValues(view, docIdsToChangesAndEmits, seq) { + var seqDocId = '_local/lastSeq'; + return view.db.get(seqDocId) + .catch(defaultsTo({_id: seqDocId, seq: 0})) + .then(function (lastSeqDoc) { + var docIds = mapToKeysArray(docIdsToChangesAndEmits); + return PouchPromise.all(docIds.map(function (docId) { + return getDocsToPersist(docId, view, docIdsToChangesAndEmits); + })).then(function (listOfDocsToPersist) { + var docsToPersist = flatten(listOfDocsToPersist); + lastSeqDoc.seq = seq; + docsToPersist.push(lastSeqDoc); + // write all docs in a single operation, update the seq once + return view.db.bulkDocs({docs : docsToPersist}); + }); + }); + } + + function getQueue(view) { + var viewName = typeof view === 'string' ? view : view.name; + var queue = persistentQueues[viewName]; + if (!queue) { + queue = persistentQueues[viewName] = new TaskQueue$2(); + } + return queue; + } + + function updateView(view) { + return sequentialize(getQueue(view), function () { + return updateViewInQueue(view); + })(); + } + + function updateViewInQueue(view) { + // bind the emit function once + var mapResults; + var doc; + + function emit(key, value) { + var output = {id: doc._id, key: normalizeKey(key)}; + // Don't explicitly store the value unless it's defined and non-null. + // This saves on storage space, because often people don't use it. + if (typeof value !== 'undefined' && value !== null) { + output.value = normalizeKey(value); + } + mapResults.push(output); + } + + var mapFun = mapper(view.mapFun, emit); + + var currentSeq = view.seq || 0; + + function processChange(docIdsToChangesAndEmits, seq) { + return function () { + return saveKeyValues(view, docIdsToChangesAndEmits, seq); + }; + } + + var queue = new TaskQueue$2(); + + function processNextBatch() { + return view.sourceDB.changes({ + conflicts: true, + include_docs: true, + style: 'all_docs', + since: currentSeq, + limit: CHANGES_BATCH_SIZE$1 + }).then(processBatch); + } + + function processBatch(response) { + var results = response.results; + if (!results.length) { + return; + } + var docIdsToChangesAndEmits = createDocIdsToChangesAndEmits(results); + queue.add(processChange(docIdsToChangesAndEmits, currentSeq)); + if (results.length < CHANGES_BATCH_SIZE$1) { + return; + } + return processNextBatch(); + } + + function createDocIdsToChangesAndEmits(results) { + var docIdsToChangesAndEmits = new ExportedMap(); + for (var i = 0, len = results.length; i < len; i++) { + var change = results[i]; + if (change.doc._id[0] !== '_') { + mapResults = []; + doc = change.doc; + + if (!doc._deleted) { + tryMap(view.sourceDB, mapFun, doc); + } + mapResults.sort(sortByKeyThenValue); + + var indexableKeysToKeyValues = createIndexableKeysToKeyValues(mapResults); + docIdsToChangesAndEmits.set(change.doc._id, [ + indexableKeysToKeyValues, + change.changes + ]); + } + currentSeq = change.seq; + } + return docIdsToChangesAndEmits; + } + + function createIndexableKeysToKeyValues(mapResults) { + var indexableKeysToKeyValues = new ExportedMap(); + var lastKey; + for (var i = 0, len = mapResults.length; i < len; i++) { + var emittedKeyValue = mapResults[i]; + var complexKey = [emittedKeyValue.key, emittedKeyValue.id]; + if (i > 0 && collate(emittedKeyValue.key, lastKey) === 0) { + complexKey.push(i); // dup key+id, so make it unique + } + indexableKeysToKeyValues.set(toIndexableString(complexKey), emittedKeyValue); + lastKey = emittedKeyValue.key; + } + return indexableKeysToKeyValues; + } + + return processNextBatch().then(function () { + return queue.finish(); + }).then(function () { + view.seq = currentSeq; + }); + } + + function reduceView(view, results, options) { + if (options.group_level === 0) { + delete options.group_level; + } + + var shouldGroup = options.group || options.group_level; + + var reduceFun = reducer(view.reduceFun); + + var groups = []; + var lvl = isNaN(options.group_level) ? Number.POSITIVE_INFINITY : + options.group_level; + results.forEach(function (e) { + var last = groups[groups.length - 1]; + var groupKey = shouldGroup ? e.key : null; + + // only set group_level for array keys + if (shouldGroup && Array.isArray(groupKey)) { + groupKey = groupKey.slice(0, lvl); + } + + if (last && collate(last.groupKey, groupKey) === 0) { + last.keys.push([e.key, e.id]); + last.values.push(e.value); + return; + } + groups.push({ + keys: [[e.key, e.id]], + values: [e.value], + groupKey: groupKey + }); + }); + results = []; + for (var i = 0, len = groups.length; i < len; i++) { + var e = groups[i]; + var reduceTry = tryReduce(view.sourceDB, reduceFun, e.keys, e.values, false); + if (reduceTry.error && reduceTry.error instanceof BuiltInError) { + // CouchDB returns an error if a built-in errors out + throw reduceTry.error; + } + results.push({ + // CouchDB just sets the value to null if a non-built-in errors out + value: reduceTry.error ? null : reduceTry.output, + key: e.groupKey + }); + } + // no total_rows/offset when reducing + return {rows: sliceResults(results, options.limit, options.skip)}; + } + + function queryView(view, opts) { + return sequentialize(getQueue(view), function () { + return queryViewInQueue(view, opts); + })(); + } + + function queryViewInQueue(view, opts) { + var totalRows; + var shouldReduce = view.reduceFun && opts.reduce !== false; + var skip = opts.skip || 0; + if (typeof opts.keys !== 'undefined' && !opts.keys.length) { + // equivalent query + opts.limit = 0; + delete opts.keys; + } + + function fetchFromView(viewOpts) { + viewOpts.include_docs = true; + return view.db.allDocs(viewOpts).then(function (res) { + totalRows = res.total_rows; + return res.rows.map(function (result) { + + // implicit migration - in older versions of PouchDB, + // we explicitly stored the doc as {id: ..., key: ..., value: ...} + // this is tested in a migration test + /* istanbul ignore next */ + if ('value' in result.doc && typeof result.doc.value === 'object' && + result.doc.value !== null) { + var keys = Object.keys(result.doc.value).sort(); + // this detection method is not perfect, but it's unlikely the user + // emitted a value which was an object with these 3 exact keys + var expectedKeys = ['id', 'key', 'value']; + if (!(keys < expectedKeys || keys > expectedKeys)) { + return result.doc.value; + } + } + + var parsedKeyAndDocId = parseIndexableString(result.doc._id); + return { + key: parsedKeyAndDocId[0], + id: parsedKeyAndDocId[1], + value: ('value' in result.doc ? result.doc.value : null) + }; + }); + }); + } + + function onMapResultsReady(rows) { + var finalResults; + if (shouldReduce) { + finalResults = reduceView(view, rows, opts); + } else { + finalResults = { + total_rows: totalRows, + offset: skip, + rows: rows + }; + } + /* istanbul ignore if */ + if (opts.update_seq) { + finalResults.update_seq = view.seq; + } + if (opts.include_docs) { + var docIds = uniq(rows.map(rowToDocId)); + + return view.sourceDB.allDocs({ + keys: docIds, + include_docs: true, + conflicts: opts.conflicts, + attachments: opts.attachments, + binary: opts.binary + }).then(function (allDocsRes) { + var docIdsToDocs = new ExportedMap(); + allDocsRes.rows.forEach(function (row) { + docIdsToDocs.set(row.id, row.doc); + }); + rows.forEach(function (row) { + var docId = rowToDocId(row); + var doc = docIdsToDocs.get(docId); + if (doc) { + row.doc = doc; + } + }); + return finalResults; + }); + } else { + return finalResults; + } + } + + if (typeof opts.keys !== 'undefined') { + var keys = opts.keys; + var fetchPromises = keys.map(function (key) { + var viewOpts = { + startkey : toIndexableString([key]), + endkey : toIndexableString([key, {}]) + }; + /* istanbul ignore if */ + if (opts.update_seq) { + viewOpts.update_seq = true; + } + return fetchFromView(viewOpts); + }); + return PouchPromise.all(fetchPromises).then(flatten).then(onMapResultsReady); + } else { // normal query, no 'keys' + var viewOpts = { + descending : opts.descending + }; + /* istanbul ignore if */ + if (opts.update_seq) { + viewOpts.update_seq = true; + } + var startkey; + var endkey; + if ('start_key' in opts) { + startkey = opts.start_key; + } + if ('startkey' in opts) { + startkey = opts.startkey; + } + if ('end_key' in opts) { + endkey = opts.end_key; + } + if ('endkey' in opts) { + endkey = opts.endkey; + } + if (typeof startkey !== 'undefined') { + viewOpts.startkey = opts.descending ? + toIndexableString([startkey, {}]) : + toIndexableString([startkey]); + } + if (typeof endkey !== 'undefined') { + var inclusiveEnd = opts.inclusive_end !== false; + if (opts.descending) { + inclusiveEnd = !inclusiveEnd; + } + + viewOpts.endkey = toIndexableString( + inclusiveEnd ? [endkey, {}] : [endkey]); + } + if (typeof opts.key !== 'undefined') { + var keyStart = toIndexableString([opts.key]); + var keyEnd = toIndexableString([opts.key, {}]); + if (viewOpts.descending) { + viewOpts.endkey = keyStart; + viewOpts.startkey = keyEnd; + } else { + viewOpts.startkey = keyStart; + viewOpts.endkey = keyEnd; + } + } + if (!shouldReduce) { + if (typeof opts.limit === 'number') { + viewOpts.limit = opts.limit; + } + viewOpts.skip = skip; + } + return fetchFromView(viewOpts).then(onMapResultsReady); + } + } + + function httpViewCleanup(db) { + return db.request({ + method: 'POST', + url: '_view_cleanup' + }); + } + + function localViewCleanup(db) { + return db.get('_local/' + localDocName).then(function (metaDoc) { + var docsToViews = new ExportedMap(); + Object.keys(metaDoc.views).forEach(function (fullViewName) { + var parts = parseViewName(fullViewName); + var designDocName = '_design/' + parts[0]; + var viewName = parts[1]; + var views = docsToViews.get(designDocName); + if (!views) { + views = new ExportedSet(); + docsToViews.set(designDocName, views); + } + views.add(viewName); + }); + var opts = { + keys : mapToKeysArray(docsToViews), + include_docs : true + }; + return db.allDocs(opts).then(function (res) { + var viewsToStatus = {}; + res.rows.forEach(function (row) { + var ddocName = row.key.substring(8); // cuts off '_design/' + docsToViews.get(row.key).forEach(function (viewName) { + var fullViewName = ddocName + '/' + viewName; + /* istanbul ignore if */ + if (!metaDoc.views[fullViewName]) { + // new format, without slashes, to support PouchDB 2.2.0 + // migration test in pouchdb's browser.migration.js verifies this + fullViewName = viewName; + } + var viewDBNames = Object.keys(metaDoc.views[fullViewName]); + // design doc deleted, or view function nonexistent + var statusIsGood = row.doc && row.doc.views && + row.doc.views[viewName]; + viewDBNames.forEach(function (viewDBName) { + viewsToStatus[viewDBName] = + viewsToStatus[viewDBName] || statusIsGood; + }); + }); + }); + var dbsToDelete = Object.keys(viewsToStatus).filter( + function (viewDBName) { return !viewsToStatus[viewDBName]; }); + var destroyPromises = dbsToDelete.map(function (viewDBName) { + return sequentialize(getQueue(viewDBName), function () { + return new db.constructor(viewDBName, db.__opts).destroy(); + })(); + }); + return PouchPromise.all(destroyPromises).then(function () { + return {ok: true}; + }); + }); + }, defaultsTo({ok: true})); + } + + function queryPromised(db, fun, opts) { + /* istanbul ignore next */ + if (typeof db._query === 'function') { + return customQuery(db, fun, opts); + } + if (isRemote(db)) { + return httpQuery(db, fun, opts); + } + + if (typeof fun !== 'string') { + // temp_view + checkQueryParseError(opts, fun); + + tempViewQueue.add(function () { + var createViewPromise = createView( + /* sourceDB */ db, + /* viewName */ 'temp_view/temp_view', + /* mapFun */ fun.map, + /* reduceFun */ fun.reduce, + /* temporary */ true, + /* localDocName */ localDocName); + return createViewPromise.then(function (view) { + return fin(updateView(view).then(function () { + return queryView(view, opts); + }), function () { + return view.db.destroy(); + }); + }); + }); + return tempViewQueue.finish(); + } else { + // persistent view + var fullViewName = fun; + var parts = parseViewName(fullViewName); + var designDocName = parts[0]; + var viewName = parts[1]; + return db.get('_design/' + designDocName).then(function (doc) { + var fun = doc.views && doc.views[viewName]; + + if (!fun) { + // basic validator; it's assumed that every subclass would want this + throw new NotFoundError('ddoc ' + doc._id + ' has no view named ' + + viewName); + } + + ddocValidator(doc, viewName); + checkQueryParseError(opts, fun); + + var createViewPromise = createView( + /* sourceDB */ db, + /* viewName */ fullViewName, + /* mapFun */ fun.map, + /* reduceFun */ fun.reduce, + /* temporary */ false, + /* localDocName */ localDocName); + return createViewPromise.then(function (view) { + if (opts.stale === 'ok' || opts.stale === 'update_after') { + if (opts.stale === 'update_after') { + __WEBPACK_IMPORTED_MODULE_2_immediate___default()(function () { + updateView(view); + }); + } + return queryView(view, opts); + } else { // stale not ok + return updateView(view).then(function () { + return queryView(view, opts); + }); + } + }); + }); + } + } + + function abstractQuery(fun, opts, callback) { + var db = this; + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + opts = opts ? coerceOptions(opts) : {}; + + if (typeof fun === 'function') { + fun = {map : fun}; + } + + var promise = PouchPromise.resolve().then(function () { + return queryPromised(db, fun, opts); + }); + promisedCallback(promise, callback); + return promise; + } + + var abstractViewCleanup = callbackify(function () { + var db = this; + /* istanbul ignore next */ + if (typeof db._viewCleanup === 'function') { + return customViewCleanup(db); + } + if (isRemote(db)) { + return httpViewCleanup(db); + } + return localViewCleanup(db); + }); + + return { + query: abstractQuery, + viewCleanup: abstractViewCleanup + }; +} + +var builtInReduce = { + _sum: function (keys, values) { + return sum(values); + }, + + _count: function (keys, values) { + return values.length; + }, + + _stats: function (keys, values) { + // no need to implement rereduce=true, because Pouch + // will never call it + function sumsqr(values) { + var _sumsqr = 0; + for (var i = 0, len = values.length; i < len; i++) { + var num = values[i]; + _sumsqr += (num * num); + } + return _sumsqr; + } + return { + sum : sum(values), + min : Math.min.apply(null, values), + max : Math.max.apply(null, values), + count : values.length, + sumsqr : sumsqr(values) + }; + } +}; + +function getBuiltIn(reduceFunString) { + if (/^_sum/.test(reduceFunString)) { + return builtInReduce._sum; + } else if (/^_count/.test(reduceFunString)) { + return builtInReduce._count; + } else if (/^_stats/.test(reduceFunString)) { + return builtInReduce._stats; + } else if (/^_/.test(reduceFunString)) { + throw new Error(reduceFunString + ' is not a supported reduce function.'); + } +} + +function mapper(mapFun, emit) { + // for temp_views one can use emit(doc, emit), see #38 + if (typeof mapFun === "function" && mapFun.length === 2) { + var origMap = mapFun; + return function (doc) { + return origMap(doc, emit); + }; + } else { + return evalFunctionWithEval(mapFun.toString(), emit); + } +} + +function reducer(reduceFun) { + var reduceFunString = reduceFun.toString(); + var builtIn = getBuiltIn(reduceFunString); + if (builtIn) { + return builtIn; + } else { + return evalFunctionWithEval(reduceFunString); + } +} + +function ddocValidator(ddoc, viewName) { + var fun = ddoc.views && ddoc.views[viewName]; + if (typeof fun.map !== 'string') { + throw new NotFoundError('ddoc ' + ddoc._id + ' has no string view named ' + + viewName + ', instead found object of type: ' + typeof fun.map); + } +} + +var localDocName = 'mrviews'; +var abstract = createAbstractMapReduce(localDocName, mapper, reducer, ddocValidator); + +function query(fun, opts, callback) { + return abstract.query.call(this, fun, opts, callback); +} + +function viewCleanup(callback) { + return abstract.viewCleanup.call(this, callback); +} + +var mapreduce = { + query: query, + viewCleanup: viewCleanup +}; + +function isGenOne$1(rev$$1) { + return /^1-/.test(rev$$1); +} + +function fileHasChanged(localDoc, remoteDoc, filename) { + return !localDoc._attachments || + !localDoc._attachments[filename] || + localDoc._attachments[filename].digest !== remoteDoc._attachments[filename].digest; +} + +function getDocAttachments(db, doc) { + var filenames = Object.keys(doc._attachments); + return PouchPromise.all(filenames.map(function (filename) { + return db.getAttachment(doc._id, filename, {rev: doc._rev}); + })); +} + +function getDocAttachmentsFromTargetOrSource(target, src, doc) { + var doCheckForLocalAttachments = isRemote(src) && !isRemote(target); + var filenames = Object.keys(doc._attachments); + + if (!doCheckForLocalAttachments) { + return getDocAttachments(src, doc); + } + + return target.get(doc._id).then(function (localDoc) { + return PouchPromise.all(filenames.map(function (filename) { + if (fileHasChanged(localDoc, doc, filename)) { + return src.getAttachment(doc._id, filename); + } + + return target.getAttachment(localDoc._id, filename); + })); + }).catch(function (error) { + /* istanbul ignore if */ + if (error.status !== 404) { + throw error; + } + + return getDocAttachments(src, doc); + }); +} + +function createBulkGetOpts(diffs) { + var requests = []; + Object.keys(diffs).forEach(function (id) { + var missingRevs = diffs[id].missing; + missingRevs.forEach(function (missingRev) { + requests.push({ + id: id, + rev: missingRev + }); + }); + }); + + return { + docs: requests, + revs: true, + latest: true + }; +} + +// +// Fetch all the documents from the src as described in the "diffs", +// which is a mapping of docs IDs to revisions. If the state ever +// changes to "cancelled", then the returned promise will be rejected. +// Else it will be resolved with a list of fetched documents. +// +function getDocs(src, target, diffs, state) { + diffs = clone(diffs); // we do not need to modify this + + var resultDocs = [], + ok = true; + + function getAllDocs() { + + var bulkGetOpts = createBulkGetOpts(diffs); + + if (!bulkGetOpts.docs.length) { // optimization: skip empty requests + return; + } + + return src.bulkGet(bulkGetOpts).then(function (bulkGetResponse) { + /* istanbul ignore if */ + if (state.cancelled) { + throw new Error('cancelled'); + } + return PouchPromise.all(bulkGetResponse.results.map(function (bulkGetInfo) { + return PouchPromise.all(bulkGetInfo.docs.map(function (doc) { + var remoteDoc = doc.ok; + + if (doc.error) { + // when AUTO_COMPACTION is set, docs can be returned which look + // like this: {"missing":"1-7c3ac256b693c462af8442f992b83696"} + ok = false; + } + + if (!remoteDoc || !remoteDoc._attachments) { + return remoteDoc; + } + + return getDocAttachmentsFromTargetOrSource(target, src, remoteDoc) + .then(function (attachments) { + var filenames = Object.keys(remoteDoc._attachments); + attachments + .forEach(function (attachment, i) { + var att = remoteDoc._attachments[filenames[i]]; + delete att.stub; + delete att.length; + att.data = attachment; + }); + + return remoteDoc; + }); + })); + })) + + .then(function (results) { + resultDocs = resultDocs.concat(flatten(results).filter(Boolean)); + }); + }); + } + + function hasAttachments(doc) { + return doc._attachments && Object.keys(doc._attachments).length > 0; + } + + function hasConflicts(doc) { + return doc._conflicts && doc._conflicts.length > 0; + } + + function fetchRevisionOneDocs(ids) { + // Optimization: fetch gen-1 docs and attachments in + // a single request using _all_docs + return src.allDocs({ + keys: ids, + include_docs: true, + conflicts: true + }).then(function (res) { + if (state.cancelled) { + throw new Error('cancelled'); + } + res.rows.forEach(function (row) { + if (row.deleted || !row.doc || !isGenOne$1(row.value.rev) || + hasAttachments(row.doc) || hasConflicts(row.doc)) { + // if any of these conditions apply, we need to fetch using get() + return; + } + + // strip _conflicts array to appease CSG (#5793) + /* istanbul ignore if */ + if (row.doc._conflicts) { + delete row.doc._conflicts; + } + + // the doc we got back from allDocs() is sufficient + resultDocs.push(row.doc); + delete diffs[row.id]; + }); + }); + } + + function getRevisionOneDocs() { + // filter out the generation 1 docs and get them + // leaving the non-generation one docs to be got otherwise + var ids = Object.keys(diffs).filter(function (id) { + var missing = diffs[id].missing; + return missing.length === 1 && isGenOne$1(missing[0]); + }); + if (ids.length > 0) { + return fetchRevisionOneDocs(ids); + } + } + + function returnResult() { + return { ok:ok, docs:resultDocs }; + } + + return PouchPromise.resolve() + .then(getRevisionOneDocs) + .then(getAllDocs) + .then(returnResult); +} + +var CHECKPOINT_VERSION = 1; +var REPLICATOR = "pouchdb"; +// This is an arbitrary number to limit the +// amount of replication history we save in the checkpoint. +// If we save too much, the checkpoing docs will become very big, +// if we save fewer, we'll run a greater risk of having to +// read all the changes from 0 when checkpoint PUTs fail +// CouchDB 2.0 has a more involved history pruning, +// but let's go for the simple version for now. +var CHECKPOINT_HISTORY_SIZE = 5; +var LOWEST_SEQ = 0; + +function updateCheckpoint(db, id, checkpoint, session, returnValue) { + return db.get(id).catch(function (err) { + if (err.status === 404) { + if (db.adapter === 'http' || db.adapter === 'https') { + explainError( + 404, 'PouchDB is just checking if a remote checkpoint exists.' + ); + } + return { + session_id: session, + _id: id, + history: [], + replicator: REPLICATOR, + version: CHECKPOINT_VERSION + }; + } + throw err; + }).then(function (doc) { + if (returnValue.cancelled) { + return; + } + + // if the checkpoint has not changed, do not update + if (doc.last_seq === checkpoint) { + return; + } + + // Filter out current entry for this replication + doc.history = (doc.history || []).filter(function (item) { + return item.session_id !== session; + }); + + // Add the latest checkpoint to history + doc.history.unshift({ + last_seq: checkpoint, + session_id: session + }); + + // Just take the last pieces in history, to + // avoid really big checkpoint docs. + // see comment on history size above + doc.history = doc.history.slice(0, CHECKPOINT_HISTORY_SIZE); + + doc.version = CHECKPOINT_VERSION; + doc.replicator = REPLICATOR; + + doc.session_id = session; + doc.last_seq = checkpoint; + + return db.put(doc).catch(function (err) { + if (err.status === 409) { + // retry; someone is trying to write a checkpoint simultaneously + return updateCheckpoint(db, id, checkpoint, session, returnValue); + } + throw err; + }); + }); +} + +function Checkpointer(src, target, id, returnValue, opts) { + this.src = src; + this.target = target; + this.id = id; + this.returnValue = returnValue; + this.opts = opts || {}; +} + +Checkpointer.prototype.writeCheckpoint = function (checkpoint, session) { + var self = this; + return this.updateTarget(checkpoint, session).then(function () { + return self.updateSource(checkpoint, session); + }); +}; + +Checkpointer.prototype.updateTarget = function (checkpoint, session) { + if (this.opts.writeTargetCheckpoint) { + return updateCheckpoint(this.target, this.id, checkpoint, + session, this.returnValue); + } else { + return PouchPromise.resolve(true); + } +}; + +Checkpointer.prototype.updateSource = function (checkpoint, session) { + if (this.opts.writeSourceCheckpoint) { + var self = this; + return updateCheckpoint(this.src, this.id, checkpoint, + session, this.returnValue) + .catch(function (err) { + if (isForbiddenError(err)) { + self.opts.writeSourceCheckpoint = false; + return true; + } + throw err; + }); + } else { + return PouchPromise.resolve(true); + } +}; + +var comparisons = { + "undefined": function (targetDoc, sourceDoc) { + // This is the previous comparison function + if (collate(targetDoc.last_seq, sourceDoc.last_seq) === 0) { + return sourceDoc.last_seq; + } + /* istanbul ignore next */ + return 0; + }, + "1": function (targetDoc, sourceDoc) { + // This is the comparison function ported from CouchDB + return compareReplicationLogs(sourceDoc, targetDoc).last_seq; + } +}; + +Checkpointer.prototype.getCheckpoint = function () { + var self = this; + + if (self.opts && self.opts.writeSourceCheckpoint && !self.opts.writeTargetCheckpoint) { + return self.src.get(self.id).then(function (sourceDoc) { + return sourceDoc.last_seq || LOWEST_SEQ; + }).catch(function (err) { + /* istanbul ignore if */ + if (err.status !== 404) { + throw err; + } + return LOWEST_SEQ; + }); + } + + return self.target.get(self.id).then(function (targetDoc) { + if (self.opts && self.opts.writeTargetCheckpoint && !self.opts.writeSourceCheckpoint) { + return targetDoc.last_seq || LOWEST_SEQ; + } + + return self.src.get(self.id).then(function (sourceDoc) { + // Since we can't migrate an old version doc to a new one + // (no session id), we just go with the lowest seq in this case + /* istanbul ignore if */ + if (targetDoc.version !== sourceDoc.version) { + return LOWEST_SEQ; + } + + var version; + if (targetDoc.version) { + version = targetDoc.version.toString(); + } else { + version = "undefined"; + } + + if (version in comparisons) { + return comparisons[version](targetDoc, sourceDoc); + } + /* istanbul ignore next */ + return LOWEST_SEQ; + }, function (err) { + if (err.status === 404 && targetDoc.last_seq) { + return self.src.put({ + _id: self.id, + last_seq: LOWEST_SEQ + }).then(function () { + return LOWEST_SEQ; + }, function (err) { + if (isForbiddenError(err)) { + self.opts.writeSourceCheckpoint = false; + return targetDoc.last_seq; + } + /* istanbul ignore next */ + return LOWEST_SEQ; + }); + } + throw err; + }); + }).catch(function (err) { + if (err.status !== 404) { + throw err; + } + return LOWEST_SEQ; + }); +}; +// This checkpoint comparison is ported from CouchDBs source +// they come from here: +// https://github.com/apache/couchdb-couch-replicator/blob/master/src/couch_replicator.erl#L863-L906 + +function compareReplicationLogs(srcDoc, tgtDoc) { + if (srcDoc.session_id === tgtDoc.session_id) { + return { + last_seq: srcDoc.last_seq, + history: srcDoc.history + }; + } + + return compareReplicationHistory(srcDoc.history, tgtDoc.history); +} + +function compareReplicationHistory(sourceHistory, targetHistory) { + // the erlang loop via function arguments is not so easy to repeat in JS + // therefore, doing this as recursion + var S = sourceHistory[0]; + var sourceRest = sourceHistory.slice(1); + var T = targetHistory[0]; + var targetRest = targetHistory.slice(1); + + if (!S || targetHistory.length === 0) { + return { + last_seq: LOWEST_SEQ, + history: [] + }; + } + + var sourceId = S.session_id; + /* istanbul ignore if */ + if (hasSessionId(sourceId, targetHistory)) { + return { + last_seq: S.last_seq, + history: sourceHistory + }; + } + + var targetId = T.session_id; + if (hasSessionId(targetId, sourceRest)) { + return { + last_seq: T.last_seq, + history: targetRest + }; + } + + return compareReplicationHistory(sourceRest, targetRest); +} + +function hasSessionId(sessionId, history) { + var props = history[0]; + var rest = history.slice(1); + + if (!sessionId || history.length === 0) { + return false; + } + + if (sessionId === props.session_id) { + return true; + } + + return hasSessionId(sessionId, rest); +} + +function isForbiddenError(err) { + return typeof err.status === 'number' && Math.floor(err.status / 100) === 4; +} + +var STARTING_BACK_OFF = 0; + +function backOff(opts, returnValue, error, callback) { + if (opts.retry === false) { + returnValue.emit('error', error); + returnValue.removeAllListeners(); + return; + } + if (typeof opts.back_off_function !== 'function') { + opts.back_off_function = defaultBackOff; + } + returnValue.emit('requestError', error); + if (returnValue.state === 'active' || returnValue.state === 'pending') { + returnValue.emit('paused', error); + returnValue.state = 'stopped'; + var backOffSet = function backoffTimeSet() { + opts.current_back_off = STARTING_BACK_OFF; + }; + var removeBackOffSetter = function removeBackOffTimeSet() { + returnValue.removeListener('active', backOffSet); + }; + returnValue.once('paused', removeBackOffSetter); + returnValue.once('active', backOffSet); + } + + opts.current_back_off = opts.current_back_off || STARTING_BACK_OFF; + opts.current_back_off = opts.back_off_function(opts.current_back_off); + setTimeout(callback, opts.current_back_off); +} + +function sortObjectPropertiesByKey(queryParams) { + return Object.keys(queryParams).sort(collate).reduce(function (result, key) { + result[key] = queryParams[key]; + return result; + }, {}); +} + +// Generate a unique id particular to this replication. +// Not guaranteed to align perfectly with CouchDB's rep ids. +function generateReplicationId(src, target, opts) { + var docIds = opts.doc_ids ? opts.doc_ids.sort(collate) : ''; + var filterFun = opts.filter ? opts.filter.toString() : ''; + var queryParams = ''; + var filterViewName = ''; + var selector = ''; + + // possibility for checkpoints to be lost here as behaviour of + // JSON.stringify is not stable (see #6226) + /* istanbul ignore if */ + if (opts.selector) { + selector = JSON.stringify(opts.selector); + } + + if (opts.filter && opts.query_params) { + queryParams = JSON.stringify(sortObjectPropertiesByKey(opts.query_params)); + } + + if (opts.filter && opts.filter === '_view') { + filterViewName = opts.view.toString(); + } + + return PouchPromise.all([src.id(), target.id()]).then(function (res) { + var queryData = res[0] + res[1] + filterFun + filterViewName + + queryParams + docIds + selector; + return new PouchPromise(function (resolve) { + binaryMd5(queryData, resolve); + }); + }).then(function (md5sum) { + // can't use straight-up md5 alphabet, because + // the char '/' is interpreted as being for attachments, + // and + is also not url-safe + md5sum = md5sum.replace(/\//g, '.').replace(/\+/g, '_'); + return '_local/' + md5sum; + }); +} + +function replicate(src, target, opts, returnValue, result) { + var batches = []; // list of batches to be processed + var currentBatch; // the batch currently being processed + var pendingBatch = { + seq: 0, + changes: [], + docs: [] + }; // next batch, not yet ready to be processed + var writingCheckpoint = false; // true while checkpoint is being written + var changesCompleted = false; // true when all changes received + var replicationCompleted = false; // true when replication has completed + var last_seq = 0; + var continuous = opts.continuous || opts.live || false; + var batch_size = opts.batch_size || 100; + var batches_limit = opts.batches_limit || 10; + var changesPending = false; // true while src.changes is running + var doc_ids = opts.doc_ids; + var selector = opts.selector; + var repId; + var checkpointer; + var changedDocs = []; + // Like couchdb, every replication gets a unique session id + var session = uuid(); + var seq_interval = opts.seq_interval; + + result = result || { + ok: true, + start_time: new Date(), + docs_read: 0, + docs_written: 0, + doc_write_failures: 0, + errors: [] + }; + + var changesOpts = {}; + returnValue.ready(src, target); + + function initCheckpointer() { + if (checkpointer) { + return PouchPromise.resolve(); + } + return generateReplicationId(src, target, opts).then(function (res) { + repId = res; + + var checkpointOpts = {}; + if (opts.checkpoint === false) { + checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: false }; + } else if (opts.checkpoint === 'source') { + checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: false }; + } else if (opts.checkpoint === 'target') { + checkpointOpts = { writeSourceCheckpoint: false, writeTargetCheckpoint: true }; + } else { + checkpointOpts = { writeSourceCheckpoint: true, writeTargetCheckpoint: true }; + } + + checkpointer = new Checkpointer(src, target, repId, returnValue, checkpointOpts); + }); + } + + function writeDocs() { + changedDocs = []; + + if (currentBatch.docs.length === 0) { + return; + } + var docs = currentBatch.docs; + var bulkOpts = {timeout: opts.timeout}; + return target.bulkDocs({docs: docs, new_edits: false}, bulkOpts).then(function (res) { + /* istanbul ignore if */ + if (returnValue.cancelled) { + completeReplication(); + throw new Error('cancelled'); + } + + // `res` doesn't include full documents (which live in `docs`), so we create a map of + // (id -> error), and check for errors while iterating over `docs` + var errorsById = Object.create(null); + res.forEach(function (res) { + if (res.error) { + errorsById[res.id] = res; + } + }); + + var errorsNo = Object.keys(errorsById).length; + result.doc_write_failures += errorsNo; + result.docs_written += docs.length - errorsNo; + + docs.forEach(function (doc) { + var error = errorsById[doc._id]; + if (error) { + result.errors.push(error); + // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway) + var errorName = (error.name || '').toLowerCase(); + if (errorName === 'unauthorized' || errorName === 'forbidden') { + returnValue.emit('denied', clone(error)); + } else { + throw error; + } + } else { + changedDocs.push(doc); + } + }); + + }, function (err) { + result.doc_write_failures += docs.length; + throw err; + }); + } + + function finishBatch() { + if (currentBatch.error) { + throw new Error('There was a problem getting docs.'); + } + result.last_seq = last_seq = currentBatch.seq; + var outResult = clone(result); + if (changedDocs.length) { + outResult.docs = changedDocs; + // Attach 'pending' property if server supports it (CouchDB 2.0+) + /* istanbul ignore if */ + if (typeof currentBatch.pending === 'number') { + outResult.pending = currentBatch.pending; + delete currentBatch.pending; + } + returnValue.emit('change', outResult); + } + writingCheckpoint = true; + return checkpointer.writeCheckpoint(currentBatch.seq, + session).then(function () { + writingCheckpoint = false; + /* istanbul ignore if */ + if (returnValue.cancelled) { + completeReplication(); + throw new Error('cancelled'); + } + currentBatch = undefined; + getChanges(); + }).catch(function (err) { + onCheckpointError(err); + throw err; + }); + } + + function getDiffs() { + var diff = {}; + currentBatch.changes.forEach(function (change) { + // Couchbase Sync Gateway emits these, but we can ignore them + /* istanbul ignore if */ + if (change.id === "_user/") { + return; + } + diff[change.id] = change.changes.map(function (x) { + return x.rev; + }); + }); + return target.revsDiff(diff).then(function (diffs) { + /* istanbul ignore if */ + if (returnValue.cancelled) { + completeReplication(); + throw new Error('cancelled'); + } + // currentBatch.diffs elements are deleted as the documents are written + currentBatch.diffs = diffs; + }); + } + + function getBatchDocs() { + return getDocs(src, target, currentBatch.diffs, returnValue).then(function (got) { + currentBatch.error = !got.ok; + got.docs.forEach(function (doc) { + delete currentBatch.diffs[doc._id]; + result.docs_read++; + currentBatch.docs.push(doc); + }); + }); + } + + function startNextBatch() { + if (returnValue.cancelled || currentBatch) { + return; + } + if (batches.length === 0) { + processPendingBatch(true); + return; + } + currentBatch = batches.shift(); + getDiffs() + .then(getBatchDocs) + .then(writeDocs) + .then(finishBatch) + .then(startNextBatch) + .catch(function (err) { + abortReplication('batch processing terminated with error', err); + }); + } + + + function processPendingBatch(immediate) { + if (pendingBatch.changes.length === 0) { + if (batches.length === 0 && !currentBatch) { + if ((continuous && changesOpts.live) || changesCompleted) { + returnValue.state = 'pending'; + returnValue.emit('paused'); + } + if (changesCompleted) { + completeReplication(); + } + } + return; + } + if ( + immediate || + changesCompleted || + pendingBatch.changes.length >= batch_size + ) { + batches.push(pendingBatch); + pendingBatch = { + seq: 0, + changes: [], + docs: [] + }; + if (returnValue.state === 'pending' || returnValue.state === 'stopped') { + returnValue.state = 'active'; + returnValue.emit('active'); + } + startNextBatch(); + } + } + + + function abortReplication(reason, err) { + if (replicationCompleted) { + return; + } + if (!err.message) { + err.message = reason; + } + result.ok = false; + result.status = 'aborting'; + batches = []; + pendingBatch = { + seq: 0, + changes: [], + docs: [] + }; + completeReplication(err); + } + + + function completeReplication(fatalError) { + if (replicationCompleted) { + return; + } + /* istanbul ignore if */ + if (returnValue.cancelled) { + result.status = 'cancelled'; + if (writingCheckpoint) { + return; + } + } + result.status = result.status || 'complete'; + result.end_time = new Date(); + result.last_seq = last_seq; + replicationCompleted = true; + + if (fatalError) { + // need to extend the error because Firefox considers ".result" read-only + fatalError = createError(fatalError); + fatalError.result = result; + + // Normalize error name. i.e. 'Unauthorized' -> 'unauthorized' (eg Sync Gateway) + var errorName = (fatalError.name || '').toLowerCase(); + if (errorName === 'unauthorized' || errorName === 'forbidden') { + returnValue.emit('error', fatalError); + returnValue.removeAllListeners(); + } else { + backOff(opts, returnValue, fatalError, function () { + replicate(src, target, opts, returnValue); + }); + } + } else { + returnValue.emit('complete', result); + returnValue.removeAllListeners(); + } + } + + + function onChange(change, pending, lastSeq) { + /* istanbul ignore if */ + if (returnValue.cancelled) { + return completeReplication(); + } + // Attach 'pending' property if server supports it (CouchDB 2.0+) + /* istanbul ignore if */ + if (typeof pending === 'number') { + pendingBatch.pending = pending; + } + + var filter = filterChange(opts)(change); + if (!filter) { + return; + } + pendingBatch.seq = change.seq || lastSeq; + pendingBatch.changes.push(change); + processPendingBatch(batches.length === 0 && changesOpts.live); + } + + + function onChangesComplete(changes) { + changesPending = false; + /* istanbul ignore if */ + if (returnValue.cancelled) { + return completeReplication(); + } + + // if no results were returned then we're done, + // else fetch more + if (changes.results.length > 0) { + changesOpts.since = changes.last_seq; + getChanges(); + processPendingBatch(true); + } else { + + var complete = function () { + if (continuous) { + changesOpts.live = true; + getChanges(); + } else { + changesCompleted = true; + } + processPendingBatch(true); + }; + + // update the checkpoint so we start from the right seq next time + if (!currentBatch && changes.results.length === 0) { + writingCheckpoint = true; + checkpointer.writeCheckpoint(changes.last_seq, + session).then(function () { + writingCheckpoint = false; + result.last_seq = last_seq = changes.last_seq; + complete(); + }) + .catch(onCheckpointError); + } else { + complete(); + } + } + } + + + function onChangesError(err) { + changesPending = false; + /* istanbul ignore if */ + if (returnValue.cancelled) { + return completeReplication(); + } + abortReplication('changes rejected', err); + } + + + function getChanges() { + if (!( + !changesPending && + !changesCompleted && + batches.length < batches_limit + )) { + return; + } + changesPending = true; + function abortChanges() { + changes.cancel(); + } + function removeListener() { + returnValue.removeListener('cancel', abortChanges); + } + + if (returnValue._changes) { // remove old changes() and listeners + returnValue.removeListener('cancel', returnValue._abortChanges); + returnValue._changes.cancel(); + } + returnValue.once('cancel', abortChanges); + + var changes = src.changes(changesOpts) + .on('change', onChange); + changes.then(removeListener, removeListener); + changes.then(onChangesComplete) + .catch(onChangesError); + + if (opts.retry) { + // save for later so we can cancel if necessary + returnValue._changes = changes; + returnValue._abortChanges = abortChanges; + } + } + + + function startChanges() { + initCheckpointer().then(function () { + /* istanbul ignore if */ + if (returnValue.cancelled) { + completeReplication(); + return; + } + return checkpointer.getCheckpoint().then(function (checkpoint) { + last_seq = checkpoint; + changesOpts = { + since: last_seq, + limit: batch_size, + batch_size: batch_size, + style: 'all_docs', + doc_ids: doc_ids, + selector: selector, + return_docs: true // required so we know when we're done + }; + if (seq_interval !== false) { + changesOpts.seq_interval = seq_interval || batch_size; + } + if (opts.filter) { + if (typeof opts.filter !== 'string') { + // required for the client-side filter in onChange + changesOpts.include_docs = true; + } else { // ddoc filter + changesOpts.filter = opts.filter; + } + } + if ('heartbeat' in opts) { + changesOpts.heartbeat = opts.heartbeat; + } + if ('timeout' in opts) { + changesOpts.timeout = opts.timeout; + } + if (opts.query_params) { + changesOpts.query_params = opts.query_params; + } + if (opts.view) { + changesOpts.view = opts.view; + } + getChanges(); + }); + }).catch(function (err) { + abortReplication('getCheckpoint rejected with ', err); + }); + } + + /* istanbul ignore next */ + function onCheckpointError(err) { + writingCheckpoint = false; + abortReplication('writeCheckpoint completed with error', err); + } + + /* istanbul ignore if */ + if (returnValue.cancelled) { // cancelled immediately + completeReplication(); + return; + } + + if (!returnValue._addedListeners) { + returnValue.once('cancel', completeReplication); + + if (typeof opts.complete === 'function') { + returnValue.once('error', opts.complete); + returnValue.once('complete', function (result) { + opts.complete(null, result); + }); + } + returnValue._addedListeners = true; + } + + if (typeof opts.since === 'undefined') { + startChanges(); + } else { + initCheckpointer().then(function () { + writingCheckpoint = true; + return checkpointer.writeCheckpoint(opts.since, session); + }).then(function () { + writingCheckpoint = false; + /* istanbul ignore if */ + if (returnValue.cancelled) { + completeReplication(); + return; + } + last_seq = opts.since; + startChanges(); + }).catch(onCheckpointError); + } +} + +// We create a basic promise so the caller can cancel the replication possibly +// before we have actually started listening to changes etc +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(Replication, __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"]); +function Replication() { + __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"].call(this); + this.cancelled = false; + this.state = 'pending'; + var self = this; + var promise = new PouchPromise(function (fulfill, reject) { + self.once('complete', fulfill); + self.once('error', reject); + }); + self.then = function (resolve, reject) { + return promise.then(resolve, reject); + }; + self.catch = function (reject) { + return promise.catch(reject); + }; + // As we allow error handling via "error" event as well, + // put a stub in here so that rejecting never throws UnhandledError. + self.catch(function () {}); +} + +Replication.prototype.cancel = function () { + this.cancelled = true; + this.state = 'cancelled'; + this.emit('cancel'); +}; + +Replication.prototype.ready = function (src, target) { + var self = this; + if (self._readyCalled) { + return; + } + self._readyCalled = true; + + function onDestroy() { + self.cancel(); + } + src.once('destroyed', onDestroy); + target.once('destroyed', onDestroy); + function cleanup() { + src.removeListener('destroyed', onDestroy); + target.removeListener('destroyed', onDestroy); + } + self.once('complete', cleanup); +}; + +function toPouch(db, opts) { + var PouchConstructor = opts.PouchConstructor; + if (typeof db === 'string') { + return new PouchConstructor(db, opts); + } else { + return db; + } +} + +function replicateWrapper(src, target, opts, callback) { + + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + if (typeof opts === 'undefined') { + opts = {}; + } + + if (opts.doc_ids && !Array.isArray(opts.doc_ids)) { + throw createError(BAD_REQUEST, + "`doc_ids` filter parameter is not a list."); + } + + opts.complete = callback; + opts = clone(opts); + opts.continuous = opts.continuous || opts.live; + opts.retry = ('retry' in opts) ? opts.retry : false; + /*jshint validthis:true */ + opts.PouchConstructor = opts.PouchConstructor || this; + var replicateRet = new Replication(opts); + var srcPouch = toPouch(src, opts); + var targetPouch = toPouch(target, opts); + replicate(srcPouch, targetPouch, opts, replicateRet); + return replicateRet; +} + +__WEBPACK_IMPORTED_MODULE_4_inherits___default()(Sync, __WEBPACK_IMPORTED_MODULE_3_events__["EventEmitter"]); +function sync$1(src, target, opts, callback) { + if (typeof opts === 'function') { + callback = opts; + opts = {}; + } + if (typeof opts === 'undefined') { + opts = {}; + } + opts = clone(opts); + /*jshint validthis:true */ + opts.PouchConstructor = opts.PouchConstructor || this; + src = toPouch(src, opts); + target = toPouch(target, opts); + return new Sync(src, target, opts, callback); +} + +function Sync(src, target, opts, callback) { + var self = this; + this.canceled = false; + + var optsPush = opts.push ? $inject_Object_assign({}, opts, opts.push) : opts; + var optsPull = opts.pull ? $inject_Object_assign({}, opts, opts.pull) : opts; + + this.push = replicateWrapper(src, target, optsPush); + this.pull = replicateWrapper(target, src, optsPull); + + this.pushPaused = true; + this.pullPaused = true; + + function pullChange(change) { + self.emit('change', { + direction: 'pull', + change: change + }); + } + function pushChange(change) { + self.emit('change', { + direction: 'push', + change: change + }); + } + function pushDenied(doc) { + self.emit('denied', { + direction: 'push', + doc: doc + }); + } + function pullDenied(doc) { + self.emit('denied', { + direction: 'pull', + doc: doc + }); + } + function pushPaused() { + self.pushPaused = true; + /* istanbul ignore if */ + if (self.pullPaused) { + self.emit('paused'); + } + } + function pullPaused() { + self.pullPaused = true; + /* istanbul ignore if */ + if (self.pushPaused) { + self.emit('paused'); + } + } + function pushActive() { + self.pushPaused = false; + /* istanbul ignore if */ + if (self.pullPaused) { + self.emit('active', { + direction: 'push' + }); + } + } + function pullActive() { + self.pullPaused = false; + /* istanbul ignore if */ + if (self.pushPaused) { + self.emit('active', { + direction: 'pull' + }); + } + } + + var removed = {}; + + function removeAll(type) { // type is 'push' or 'pull' + return function (event, func) { + var isChange = event === 'change' && + (func === pullChange || func === pushChange); + var isDenied = event === 'denied' && + (func === pullDenied || func === pushDenied); + var isPaused = event === 'paused' && + (func === pullPaused || func === pushPaused); + var isActive = event === 'active' && + (func === pullActive || func === pushActive); + + if (isChange || isDenied || isPaused || isActive) { + if (!(event in removed)) { + removed[event] = {}; + } + removed[event][type] = true; + if (Object.keys(removed[event]).length === 2) { + // both push and pull have asked to be removed + self.removeAllListeners(event); + } + } + }; + } + + if (opts.live) { + this.push.on('complete', self.pull.cancel.bind(self.pull)); + this.pull.on('complete', self.push.cancel.bind(self.push)); + } + + function addOneListener(ee, event, listener) { + if (ee.listeners(event).indexOf(listener) == -1) { + ee.on(event, listener); + } + } + + this.on('newListener', function (event) { + if (event === 'change') { + addOneListener(self.pull, 'change', pullChange); + addOneListener(self.push, 'change', pushChange); + } else if (event === 'denied') { + addOneListener(self.pull, 'denied', pullDenied); + addOneListener(self.push, 'denied', pushDenied); + } else if (event === 'active') { + addOneListener(self.pull, 'active', pullActive); + addOneListener(self.push, 'active', pushActive); + } else if (event === 'paused') { + addOneListener(self.pull, 'paused', pullPaused); + addOneListener(self.push, 'paused', pushPaused); + } + }); + + this.on('removeListener', function (event) { + if (event === 'change') { + self.pull.removeListener('change', pullChange); + self.push.removeListener('change', pushChange); + } else if (event === 'denied') { + self.pull.removeListener('denied', pullDenied); + self.push.removeListener('denied', pushDenied); + } else if (event === 'active') { + self.pull.removeListener('active', pullActive); + self.push.removeListener('active', pushActive); + } else if (event === 'paused') { + self.pull.removeListener('paused', pullPaused); + self.push.removeListener('paused', pushPaused); + } + }); + + this.pull.on('removeListener', removeAll('pull')); + this.push.on('removeListener', removeAll('push')); + + var promise = PouchPromise.all([ + this.push, + this.pull + ]).then(function (resp) { + var out = { + push: resp[0], + pull: resp[1] + }; + self.emit('complete', out); + if (callback) { + callback(null, out); + } + self.removeAllListeners(); + return out; + }, function (err) { + self.cancel(); + if (callback) { + // if there's a callback, then the callback can receive + // the error event + callback(err); + } else { + // if there's no callback, then we're safe to emit an error + // event, which would otherwise throw an unhandled error + // due to 'error' being a special event in EventEmitters + self.emit('error', err); + } + self.removeAllListeners(); + if (callback) { + // no sense throwing if we're already emitting an 'error' event + throw err; + } + }); + + this.then = function (success, err) { + return promise.then(success, err); + }; + + this.catch = function (err) { + return promise.catch(err); + }; +} + +Sync.prototype.cancel = function () { + if (!this.canceled) { + this.canceled = true; + this.push.cancel(); + this.pull.cancel(); + } +}; + +function replication(PouchDB) { + PouchDB.replicate = replicateWrapper; + PouchDB.sync = sync$1; + + Object.defineProperty(PouchDB.prototype, 'replicate', { + get: function () { + var self = this; + if (typeof this.replicateMethods === 'undefined') { + this.replicateMethods = { + from: function (other, opts, callback) { + return self.constructor.replicate(other, self, opts, callback); + }, + to: function (other, opts, callback) { + return self.constructor.replicate(self, other, opts, callback); + } + }; + } + return this.replicateMethods; + } + }); + + PouchDB.prototype.sync = function (dbName, opts, callback) { + return this.constructor.sync(this, dbName, opts, callback); + }; +} + +PouchDB.plugin(IDBPouch) + .plugin(WebSqlPouch$1) + .plugin(HttpPouch$1) + .plugin(mapreduce) + .plugin(replication); + +// Pull from src because pouchdb-node/pouchdb-browser themselves +// are aggressively optimized and jsnext:main would normally give us this +// aggressive bundle. + +/* harmony default export */ __webpack_exports__["default"] = (PouchDB); + +/* WEBPACK VAR INJECTION */}.call(__webpack_exports__, __webpack_require__(11))) + +/***/ }), +/* 298 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(global) { +var Mutation = global.MutationObserver || global.WebKitMutationObserver; + +var scheduleDrain; + +{ + if (Mutation) { + var called = 0; + var observer = new Mutation(nextTick); + var element = global.document.createTextNode(''); + observer.observe(element, { + characterData: true + }); + scheduleDrain = function () { + element.data = (called = ++called % 2); + }; + } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') { + var channel = new global.MessageChannel(); + channel.port1.onmessage = nextTick; + scheduleDrain = function () { + channel.port2.postMessage(0); + }; + } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) { + scheduleDrain = function () { + + // Create a \n\n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 52 */ +/***/ (function(module, exports) { + +/** + * Translates the list format produced by css-loader into something + * easier to manipulate. + */ +module.exports = function listToStyles (parentId, list) { + var styles = [] + var newStyles = {} + for (var i = 0; i < list.length; i++) { + var item = list[i] + var id = item[0] + var css = item[1] + var media = item[2] + var sourceMap = item[3] + var part = { + id: parentId + ':' + i, + css: css, + media: media, + sourceMap: sourceMap + } + if (!newStyles[id]) { + styles.push(newStyles[id] = { id: id, parts: [part] }) + } else { + newStyles[id].parts.push(part) + } + } + return styles +} + + +/***/ }), +/* 53 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Wallet_vue__ = __webpack_require__(15); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_8087f122_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Wallet_vue__ = __webpack_require__(106); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(54) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Wallet_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_8087f122_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Wallet_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Wallet.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-8087f122", Component.options) + } else { + hotAPI.reload("data-v-8087f122", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 54 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 56 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 58 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "svg", + { + staticClass: "webdollarFont", + attrs: { + xmlns: "http://www.w3.org/2000/svg", + width: this.width, + height: this.height, + viewBox: "0 0 " + this.width + " " + this.width + }, + on: { click: this.handleClick } + }, + [ + _vm.icon === "chevron-double-down" + ? _c("path", { + attrs: { + d: + "M16.797 13.5c0 0.125-0.063 0.266-0.156 0.359l-7.281 7.281c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-7.281-7.281c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l0.781-0.781c0.094-0.094 0.219-0.156 0.359-0.156 0.125 0 0.266 0.063 0.359 0.156l6.141 6.141 6.141-6.141c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l0.781 0.781c0.094 0.094 0.156 0.234 0.156 0.359zM16.797 7.5c0 0.125-0.063 0.266-0.156 0.359l-7.281 7.281c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-7.281-7.281c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l0.781-0.781c0.094-0.094 0.219-0.156 0.359-0.156 0.125 0 0.266 0.063 0.359 0.156l6.141 6.141 6.141-6.141c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l0.781 0.781c0.094 0.094 0.156 0.234 0.156 0.359z" + } + }) + : _vm._e(), + _vm.icon === "chevron-double-up" + ? _c("path", { + attrs: { + d: + "M16.797 20.5c0 0.125-0.063 0.266-0.156 0.359l-0.781 0.781c-0.094 0.094-0.219 0.156-0.359 0.156-0.125 0-0.266-0.063-0.359-0.156l-6.141-6.141-6.141 6.141c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-0.781-0.781c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l7.281-7.281c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l7.281 7.281c0.094 0.094 0.156 0.234 0.156 0.359zM16.797 14.5c0 0.125-0.063 0.266-0.156 0.359l-0.781 0.781c-0.094 0.094-0.219 0.156-0.359 0.156-0.125 0-0.266-0.063-0.359-0.156l-6.141-6.141-6.141 6.141c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-0.781-0.781c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l7.281-7.281c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l7.281 7.281c0.094 0.094 0.156 0.234 0.156 0.359z" + } + }) + : _vm._e(), + _vm.icon === "chevron-down" + ? _c("path", { + attrs: { + d: + "M22.54 10.821l-9.938 9.924c-0.335 0.335-0.871 0.335-1.205 0l-9.938-9.924c-0.335-0.335-0.335-0.884 0-1.219l2.223-2.21c0.335-0.335 0.871-0.335 1.205 0l7.112 7.112 7.112-7.112c0.335-0.335 0.871-0.335 1.205 0l2.223 2.21c0.335 0.335 0.335 0.884 0 1.219z" + } + }) + : _vm._e(), + _vm.icon === "chevron-up" + ? _c("path", { + attrs: { + d: + "M22.54 17.826l-2.223 2.21c-0.335 0.335-0.871 0.335-1.205 0l-7.112-7.112-7.112 7.112c-0.335 0.335-0.871 0.335-1.205 0l-2.223-2.21c-0.335-0.335-0.335-0.884 0-1.219l9.938-9.924c0.335-0.335 0.871-0.335 1.205 0l9.938 9.924c0.335 0.335 0.335 0.884 0 1.219z" + } + }) + : _vm._e(), + _vm.icon === "download" || _vm.icon === "down" + ? _c("path", { + attrs: { d: "M12 23.25l11.25-11.25h-6.75v-12h-9v12h-6.75z" } + }) + : _vm._e(), + _vm.icon === "key" + ? _c("path", { + attrs: { + d: + "M12.804 9c1.038-1.793 2.977-3 5.196-3 3.311 0 6 2.689 6 6s-2.689 6-6 6c-2.219 0-4.158-1.207-5.196-3h-3.804l-1.506-1.503-1.494 1.503-1.48-1.503-1.52 1.503-3-3.032 2.53-2.968h10.274zm7.696 1.5c.828 0 1.5.672 1.5 1.5s-.672 1.5-1.5 1.5-1.5-.672-1.5-1.5.672-1.5 1.5-1.5z" + } + }) + : _vm._e(), + _vm.icon === "lock-closed" + ? _c("path", { + attrs: { + d: + "M18 10v-4c0-3.313-2.687-6-6-6s-6 2.687-6 6v4h-3v14h18v-14h-3zm-5 7.723v2.277h-2v-2.277c-.595-.347-1-.984-1-1.723 0-1.104.896-2 2-2s2 .896 2 2c0 .738-.404 1.376-1 1.723zm-5-7.723v-4c0-2.206 1.794-4 4-4 2.205 0 4 1.794 4 4v4h-8z" + } + }) + : _vm._e(), + _vm.icon === "lock-open" + ? _c("path", { + attrs: { + d: + "M12 10v-4c0-3.313-2.687-6-6-6s-6 2.687-6 6v3h2v-3c0-2.206 1.794-4 4-4s4 1.794 4 4v4h-4v14h18v-14h-12z" + } + }) + : _vm._e(), + _vm.icon === "plus" + ? _c("path", { attrs: { d: "M24 9h-9v-9h-6v9h-9v6h9v9h6v-9h9z" } }) + : _vm._e(), + _vm.icon === "plus-square" + ? _c("path", { + attrs: { + d: + "M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm7 14h-5v5h-4v-5h-5v-4h5v-5h4v5h5v4z" + } + }) + : _vm._e(), + _vm.icon === "x" + ? _c("path", { + attrs: { + d: + "M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z" + } + }) + : _vm._e(), + _vm.icon === "upload" || _vm.icon === "up" + ? _c("path", { + attrs: { d: "M12 0.75l-11.25 11.25h6.75v12h9v-12h6.75z" } + }) + : _vm._e(), + _vm.icon === "mining" + ? _c("path", { + attrs: { + d: + "M23.672 19.429l-7.067-7.067c-0.438-0.438-1.153-0.438-1.591 0l-0.53 0.53-4.313-4.313 7.079-7.079h-7.5l-3.329 3.329-0.33-0.329h-1.591v1.591l0.329 0.329-4.829 4.83 3.75 3.75 4.829-4.829 4.313 4.313-0.53 0.53c-0.438 0.438-0.438 1.153 0 1.591l7.067 7.067c0.438 0.438 1.153 0.438 1.591 0l2.652-2.652c0.438-0.437 0.438-1.153 0-1.591z" + } + }) + : _vm._e(), + _vm.icon === "sun-glasses" + ? _c("path", { + attrs: { + d: + "M16.5 10.707c0.063-0.010 0.126-0.021 0.19-0.035 3.203-0.802 7.718-0.765 10.041-0.409 0.28 0.043 0.325 1.215 0.075 1.256-0.459 0.169-0.655 0.59-0.655 0.59s-0.137 0.374-0.535 1.894c-0.398 1.52-1.347 1.702-1.347 1.702s-1.162 0.261-2.502 0.261c-1.34 0-2.142-0.055-3-0.446s-1.233-1.477-1.233-1.477c0 0-0.432-0.937-0.73-1.82-0.045-0.134-0.163-0.225-0.304-0.284-0.14 0.058-0.259 0.15-0.304 0.284-0.298 0.884-0.73 1.82-0.73 1.82s-0.375 1.087-1.233 1.477c-0.858 0.39-1.66 0.446-3 0.446s-2.502-0.261-2.502-0.261c0 0-0.949-0.182-1.347-1.702s-0.535-1.894-0.535-1.894c0 0-0.196-0.421-0.655-0.59-0.249-0.041-0.205-1.213 0.075-1.256 2.323-0.356 6.839-0.393 10.041 0.409 0.064 0.013 0.127 0.025 0.19 0.035zM16.5 29c6.904 0 12.5-5.596 12.5-12.5s-5.596-12.5-12.5-12.5c-6.904 0-12.5 5.596-12.5 12.5s5.596 12.5 12.5 12.5zM16.481 22c3.481 0 5.519-2 5.519-2v1c0 0-2.037 2-5.519 2s-5.481-2-5.481-2v-1c0 0 2 2 5.481 2z" + } + }) + : _vm._e(), + _vm.icon === "sun-glasses2" + ? _c("path", { + attrs: { + d: + "M26.11 10.181v0c-2.442-0.275-6.483-0.245-9.42 0.491-0.064 0.013-0.127 0.025-0.19 0.035-0.063-0.010-0.126-0.021-0.19-0.035-2.937-0.736-6.978-0.765-9.42-0.491v0c2.056-3.121 5.593-5.181 9.61-5.181s7.554 2.060 9.61 5.181zM26.856 11.494c0.733 1.513 1.144 3.212 1.144 5.006 0 6.351-5.149 11.5-11.5 11.5s-11.5-5.149-11.5-11.5c0-1.794 0.411-3.493 1.144-5.006 0.015 0.014 0.031 0.023 0.049 0.026 0.459 0.169 0.655 0.59 0.655 0.59s0.137 0.374 0.535 1.894c0.398 1.52 1.347 1.702 1.347 1.702s1.162 0.261 2.502 0.261c1.34 0 2.142-0.055 3-0.446s1.233-1.477 1.233-1.477c0 0 0.432-0.937 0.73-1.82 0.045-0.134 0.163-0.225 0.304-0.284 0.14 0.058 0.259 0.15 0.304 0.284 0.298 0.884 0.73 1.82 0.73 1.82s0.375 1.087 1.233 1.477c0.858 0.39 1.66 0.446 3 0.446s2.502-0.261 2.502-0.261c0 0 0.949-0.182 1.347-1.702s0.535-1.894 0.535-1.894c0 0 0.196-0.421 0.655-0.59 0.018-0.003 0.034-0.012 0.049-0.026v0zM16.5 29c6.904 0 12.5-5.596 12.5-12.5s-5.596-12.5-12.5-12.5c-6.904 0-12.5 5.596-12.5 12.5s5.596 12.5 12.5 12.5v0zM16.481 22c-3.481 0-5.481-2-5.481-2v1c0 0 2 2 5.481 2s5.519-2 5.519-2v-1c0 0-2.037 2-5.519 2v0z" + } + }) + : _vm._e(), + _vm.icon === "terminal" + ? _c("path", { + attrs: { + d: + "M0 2v28h32v-28h-32zM30 28h-28v-24h28v24zM28 6h-24v20h24v-20zM14 16h-2v2h-2v2h-2v-2h2v-2h2v-2h-2v-2h-2v-2h2v2h2v2h2v2zM22 20h-6v-2h6v2z" + } + }) + : _vm._e(), + _vm.icon === "network" + ? _c("path", { + attrs: { + d: + "M16 0c-8.837 0-16 7.163-16 16s7.163 16 16 16 16-7.163 16-16-7.163-16-16-16zM16 30c-1.967 0-3.84-0.407-5.538-1.139l7.286-8.197c0.163-0.183 0.253-0.419 0.253-0.664v-3c0-0.552-0.448-1-1-1-3.531 0-7.256-3.671-7.293-3.707-0.188-0.188-0.442-0.293-0.707-0.293h-4c-0.552 0-1 0.448-1 1v6c0 0.379 0.214 0.725 0.553 0.894l3.447 1.724v5.871c-3.627-2.53-6-6.732-6-11.489 0-2.147 0.484-4.181 1.348-6h3.652c0.265 0 0.52-0.105 0.707-0.293l4-4c0.188-0.188 0.293-0.442 0.293-0.707v-2.419c1.268-0.377 2.61-0.581 4-0.581 2.2 0 4.281 0.508 6.134 1.412-0.13 0.109-0.256 0.224-0.376 0.345-1.133 1.133-1.757 2.64-1.757 4.243s0.624 3.109 1.757 4.243c1.139 1.139 2.663 1.758 4.239 1.758 0.099 0 0.198-0.002 0.297-0.007 0.432 1.619 1.211 5.833-0.263 11.635-0.014 0.055-0.022 0.109-0.026 0.163-2.541 2.596-6.084 4.208-10.004 4.208z" + } + }) + : _vm._e() + ] + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-4a4e8449", esExports) + } +} + +/***/ }), +/* 59 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a \n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 61 */ +/***/ (function(module, exports) { + +module.exports = function() { + throw new Error("define cannot be used indirect"); +}; + + +/***/ }), +/* 62 */ +/***/ (function(module, exports) { + +/* WEBPACK VAR INJECTION */(function(__webpack_amd_options__) {/* globals __webpack_amd_options__ */ +module.exports = __webpack_amd_options__; + +/* WEBPACK VAR INJECTION */}.call(exports, {})) + +/***/ }), +/* 63 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Address_main_modal_vue__ = __webpack_require__(20); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_fe1c3922_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Address_main_modal_vue__ = __webpack_require__(96); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(64) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Address_main_modal_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_fe1c3922_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Address_main_modal_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-fe1c3922", Component.options) + } else { + hotAPI.reload("data-v-fe1c3922", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 64 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a \n\n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 66 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 68 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return this.modalOpened + ? _c("div", [ + _c("div", { + staticClass: "modalBackground", + on: { click: this.closeModal } + }), + _c("div", { ref: "refModal", staticClass: "modal" }, [ + _c("div", { staticClass: "close", on: { click: this.closeModal } }, [ + _vm._v("\n x\n ") + ]), + _c("div", { staticClass: "headerModal" }, [ + _c("div", { staticClass: "title" }, [ + _vm._v( + "\n " + _vm._s(this.title) + "\n " + ) + ]) + ]), + _c( + "div", + { staticClass: "content modifyPadding" }, + [_vm._t("content")], + 2 + ) + ]) + ]) + : _vm._e() +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-d4961080", esExports) + } +} + +/***/ }), +/* 69 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 71 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "svg", + { + staticStyle: { "enable-background": "new 0 0 50 50" }, + attrs: { + version: "1.1", + xmlns: "http://www.w3.org/2000/svg", + "xmlns:xlink": "http://www.w3.org/1999/xlink", + x: "0px", + y: "0px", + width: this.width, + height: this.height, + viewBox: "0 0 50 50", + "xml:space": "preserve" + } + }, + [ + _c( + "path", + { + attrs: { + d: + "M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z" + } + }, + [ + _c("animateTransform", { + attrs: { + attributeType: "xml", + attributeName: "transform", + type: "rotate", + from: "0 25 25", + to: "360 25 25", + dur: "0.6s", + repeatCount: "indefinite" + } + }) + ], + 1 + ) + ] + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-f5858e2a", esExports) + } +} + +/***/ }), +/* 72 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + { + staticClass: "balanceShowContent", + staticStyle: { display: "inline-block" } + }, + [ + !this.loaded + ? _c("loading-spinner", { staticClass: "fontColor spinnerBalance" }) + : _vm._e(), + this.loaded + ? _c("div", { staticClass: "show-balance-span" }, [ + _vm._v( + "\n " + + _vm._s( + this.formatMoneyNumber( + this.computePrice + + (this.showPoolReward === true + ? this.computePoolReward + : 0), + 2 + ) + ) + + "\n " + ) + ]) + : _vm._e() + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-53087030", esExports) + } +} + +/***/ }), +/* 73 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 75 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + { staticStyle: { display: "inline-block" } }, + [ + !this.loaded + ? _c("loading-spinner", { staticClass: "fontColor" }) + : _vm._e(), + this.loaded + ? _c("div", { staticClass: "show-balance-span" }, [ + _vm._v( + "\n " + + _vm._s( + this.formatMoneyNumber( + this.sum + + (this.showPoolReward === true + ? this.computePoolReward + : 0), + 2 + ) + ) + + "\n " + ) + ]) + : _vm._e() + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-0a5495d6", esExports) + } +} + +/***/ }), +/* 76 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transactions_part_vue__ = __webpack_require__(26); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2382f042_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transactions_part_vue__ = __webpack_require__(91); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(77) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transactions_part_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2382f042_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transactions_part_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-2382f042", Component.options) + } else { + hotAPI.reload("data-v-2382f042", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 77 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 79 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transaction_element_vue__ = __webpack_require__(27); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0eff801f_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transaction_element_vue__ = __webpack_require__(90); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(80) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transaction_element_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0eff801f_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transaction_element_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-0eff801f", Component.options) + } else { + hotAPI.reload("data-v-0eff801f", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 80 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 82 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transaction_From_element_vue__ = __webpack_require__(28); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4868e878_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transaction_From_element_vue__ = __webpack_require__(85); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(83) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transaction_From_element_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_4868e878_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transaction_From_element_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-4868e878", Component.options) + } else { + hotAPI.reload("data-v-4868e878", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 83 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 85 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("ul", { staticClass: "destinations" }, [ + _c("li", { staticClass: "destinationElement transactionElement" }, [ + _c("img", { + staticClass: "walletAddressImage", + attrs: { title: this.fromAddress.address, src: this.getAddressPic }, + on: { click: _vm.copyToClipboard } + }), + _c("div", { staticClass: "money", attrs: { title: "Amount" } }, [ + _c("span", { staticClass: "amount" }, [ + _vm._v("-" + _vm._s(_vm.getAmount)) + ]), + _c("span", { staticClass: "currency" }, [_vm._v("WEBD")]) + ]) + ]) + ]) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-4868e878", esExports) + } +} + +/***/ }), +/* 86 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transaction_To_element_vue__ = __webpack_require__(29); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6a9e5e15_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transaction_To_element_vue__ = __webpack_require__(89); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(87) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transaction_To_element_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6a9e5e15_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transaction_To_element_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-6a9e5e15", Component.options) + } else { + hotAPI.reload("data-v-6a9e5e15", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 87 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 89 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("ul", { staticClass: "destinations" }, [ + _c("li", { staticClass: "destinationElement transactionElement" }, [ + _c("img", { + staticClass: "walletAddressImage", + attrs: { title: this.toAddress.address, src: this.getAddressPic }, + on: { click: _vm.copyToClipboard } + }), + _c("div", { staticClass: "money", attrs: { title: "Amount" } }, [ + _c("span", { staticClass: "amount" }, [_vm._v(_vm._s(_vm.getAmount))]), + _c("span", { staticClass: "currency" }, [_vm._v("WEBD")]) + ]) + ]) + ]) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-6a9e5e15", esExports) + } +} + +/***/ }), +/* 90 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _vm.transaction !== null + ? _c( + "li", + { + staticClass: "transferListElement", + class: !this.transaction.confirmed + ? "statusPending" + : "statusConfirmed" + }, + [ + _c( + "ul", + { staticClass: "sources" }, + _vm._l(_vm.transaction.from.addresses, function( + fromAddress, + index + ) { + return _c("transaction-from", { + key: "transactionSource" + index, + attrs: { fromAddress: fromAddress } + }) + }) + ), + _c( + "ul", + { staticClass: "destinations" }, + _vm._l(_vm.transaction.to.addresses, function(toAddress, index) { + return _c("transaction-to", { + key: "transactionDestination" + index, + attrs: { toAddress: toAddress } + }) + }) + ), + _c("div", { staticClass: "status" }, [ + _vm._v( + "\n\n " + + _vm._s(this.transaction.confirmed ? "Confirmed" : "Pending") + + "\n\n " + ) + ]) + ] + ) + : _vm._e() +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-0eff801f", esExports) + } +} + +/***/ }), +/* 91 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div", { ref: "refTransferList", staticClass: "transferList" }, [ + _c( + "div", + { + directives: [ + { + name: "show", + rawName: "v-show", + value: _vm.objectIsEmpty(_vm.transactions), + expression: "objectIsEmpty(transactions)" + } + ], + staticClass: "noTransactions" + }, + [ + _c( + "span", + { + staticClass: "miningAddress", + staticStyle: { color: "white!important" } + }, + [_vm._v("You don't have any transaction in last 20 blocks")] + ) + ] + ), + _c( + "div", + { + directives: [ + { + name: "show", + rawName: "v-show", + value: !_vm.objectIsEmpty(_vm.transactions), + expression: "!objectIsEmpty(transactions)" + } + ] + }, + [ + _c( + "span", + { + staticClass: "miningAddress", + staticStyle: { color: "white!important" } + }, + [_vm._v("Transactions from last 20 blocks")] + ), + _vm._m(0), + _c( + "ul", + { staticClass: "transferListContainer" }, + _vm._l(_vm.orderedTransactions, function(tx, index) { + return _c("transaction", { + key: "transaction" + index, + attrs: { transaction: tx } + }) + }) + ) + ] + ) + ]) +} +var staticRenderFns = [ + function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div", { staticClass: "headerTable" }, [ + _c("span", { staticClass: "headerElement fromItem" }, [_vm._v("From")]), + _c("span", { staticClass: "headerElement" }, [_vm._v("To")]), + _c("span", { staticClass: "headerElement" }, [_vm._v("Status")]) + ]) + } +] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-2382f042", esExports) + } +} + +/***/ }), +/* 92 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transfer_part_vue__ = __webpack_require__(30); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_cff1114e_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transfer_part_vue__ = __webpack_require__(95); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(93) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Transfer_part_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_cff1114e_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Transfer_part_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-cff1114e", Component.options) + } else { + hotAPI.reload("data-v-cff1114e", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 93 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 95 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div", { staticClass: "transferList" }, [ + _c("p", { staticClass: "title" }, [_vm._v("Transfer WEBD")]), + _c( + "div", + { + staticClass: "transfer", + on: { + keyup: function($event) { + if ( + !("button" in $event) && + _vm._k($event.keyCode, "enter", 13, $event.key, "Enter") + ) { + return null + } + return _vm.handleCreateTransaction($event) + } + } + }, + [ + _c("div", [ + _c("div", { staticClass: "imageAndInput" }, [ + _c("div", [ + _c("img", { + staticClass: "walletAddressImage transferWalletAddressImage", + class: + this.errorToAddressMessage === "Invalid Address" + ? "hide" + : "", + attrs: { src: this.getAddressPic } + }) + ]), + _c("div", [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.toAddress, + expression: "toAddress" + } + ], + staticClass: "address ", + attrs: { placeholder: "Recipient Address" }, + domProps: { value: _vm.toAddress }, + on: { + keyup: this.handleChangeToAddress, + input: function($event) { + if ($event.target.composing) { + return + } + _vm.toAddress = $event.target.value + } + } + }) + ]) + ]), + _c("span", { + staticClass: "editError", + class: this.errorToAddressMessage ? "" : "hide", + domProps: { innerHTML: _vm._s(this.errorToAddressMessage) } + }) + ]), + _c("div", [ + _c("div", { staticClass: "moneyBox" }, [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.toAmount, + expression: "toAmount" + } + ], + staticClass: "amount", + attrs: { type: "number", placeholder: "WEBD Amount" }, + domProps: { value: _vm.toAmount }, + on: { + keyup: this.handleChangeToAmount, + input: function($event) { + if ($event.target.composing) { + return + } + _vm.toAmount = $event.target.value + } + } + }), + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.fee, + expression: "fee" + } + ], + staticClass: "amount", + attrs: { type: "number", placeholder: "Fee" }, + domProps: { value: _vm.fee }, + on: { + keyup: this.handleChangeToFee, + input: function($event) { + if ($event.target.composing) { + return + } + _vm.fee = $event.target.value + } + } + }) + ]) + ]), + _c("span", { + staticClass: "editError editError2", + class: this.errorToAmountMessage ? "" : "hide", + domProps: { innerHTML: _vm._s(this.errorToAmountMessage) } + }), + _c( + "button", + { + staticClass: "button", + class: this.successMessage ? "hide" : "", + on: { click: this.handleCreateTransaction } + }, + [_vm._v("\n SEND WEBD\n ")] + ) + ] + ) + ]) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-cff1114e", esExports) + } +} + +/***/ }), +/* 96 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return this.address !== null && this.address !== undefined + ? _c( + "div", + [ + _c( + "modal", + { + ref: "refModal", + staticClass: "addressMainModal", + attrs: { title: "Wallet Address" } + }, + [ + _c( + "div", + { attrs: { slot: "content" }, slot: "content" }, + [ + _c("div", { staticClass: "twoColumns" }, [ + _c("div", { staticClass: "section" }, [ + _c("div", [ + _c("img", { + staticClass: "walletAddressImage", + attrs: { src: this.getAddressPic } + }), + _c( + "b", + { + staticStyle: { color: "gray" }, + attrs: { id: "walletID" } + }, + [_vm._v(_vm._s(this.address.toString()))] + ) + ]), + _c( + "div", + { + staticClass: "copyButton", + class: + this.clipboardText != "Copied" + ? "modalButton2" + : "modalButton2Success", + on: { click: _vm.copyToClipboard } + }, + [ + _vm._v( + "\n " + + _vm._s(this.clipboardText) + + "\n " + ) + ] + ) + ]), + _c("div", { staticClass: "section balanceContent" }, [ + _c("div", { staticClass: "balanceText" }, [ + _c( + "div", + { + staticClass: "balanceTitle", + attrs: { title: "Balance available to be spent" } + }, + [ + _vm._v( + "\n Available Balance:\n " + ) + ] + ), + _c( + "div", + { + staticClass: "balanceAmount", + attrs: { title: "Balance available to be spent" } + }, + [ + _c("show-balance", { + attrs: { address: this.address, currency: "0x01" } + }) + ], + 1 + ), + _c( + "div", + { + staticClass: "balanceTitle", + staticStyle: { "letter-spacing": "0.1px" }, + attrs: { + title: + "The balance you will have at the next block mined by your pool" + } + }, + [ + _vm._v( + "\n Potential Balance:\n " + ) + ] + ), + _c( + "div", + { + staticClass: "balanceAmount", + attrs: { + title: + "The balance you will have at the next block mined by your pool" + } + }, + [ + _c("show-balance", { + attrs: { + showPoolReward: _vm.isMiningAddress, + address: this.address, + currency: "0x01" + } + }) + ], + 1 + ) + ]), + _vm.isMiningAddress + ? _c("div", { staticClass: "miningAddress" }, [ + _vm._v( + "\n You are mining on this Address\n " + ) + ]) + : _vm._e(), + !_vm.isMiningAddress + ? _c( + "div", + { + staticClass: "modalButton2", + on: { click: _vm.handleSetAddress } + }, + [ + _vm._v( + "\n Mine on this address\n " + ) + ] + ) + : _vm._e() + ]) + ]), + _c("div", { staticClass: "addressActions" }, [ + _c( + "div", + { + class: [ + this.partActivated === "transfer" + ? "actionButton activeActionButton" + : "actionButton" + ], + on: { click: this.showTransfer } + }, + [ + _vm._v( + "\n Transfer\n " + ) + ] + ), + _c( + "div", + { + class: [ + this.partActivated === "transactions" + ? "actionButton activeActionButton" + : "actionButton" + ], + on: { click: this.showTransactions } + }, + [ + _vm._v( + "\n Transactions\n " + ) + ] + ) + ]), + _c("transfer", { + style: { + display: + this.partActivated === "transfer" ? "block" : "none" + }, + attrs: { address: this.address }, + on: { onTransferSuccess: this.handleTransferSuccess } + }), + _c("transactions", { + style: { + display: + this.partActivated === "transactions" ? "block" : "none" + }, + attrs: { address: this.address } + }) + ], + 1 + ) + ] + ) + ], + 1 + ) + : _vm._e() +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-fe1c3922", esExports) + } +} + +/***/ }), +/* 97 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Lock_modal_vue__ = __webpack_require__(31); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3b585992_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Lock_modal_vue__ = __webpack_require__(100); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(98) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Lock_modal_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3b585992_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Lock_modal_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Lock.modal.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-3b585992", Component.options) + } else { + hotAPI.reload("data-v-3b585992", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 98 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a \n\n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 100 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + [ + _c("div", { ref: "refClipboardCopy" }), + _c( + "Modal", + { ref: "refPassModal", attrs: { title: "Wallet Address Secure" } }, + [ + _c("div", { attrs: { slot: "content" }, slot: "content" }, [ + _c("div", [ + _c("span", { staticClass: "info" }, [ + _vm._v( + "Misplacement of your password will result in loss of access to your WEBD." + ) + ]), + _c("div", { staticClass: "inputAndGeneratorPass" }, [ + _c("div", [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.walletAddressPassword, + expression: "walletAddressPassword" + } + ], + staticClass: "inputDeleteModalPass", + attrs: { placeholder: "Your 12 words Password" }, + domProps: { value: _vm.walletAddressPassword }, + on: { + input: function($event) { + if ($event.target.composing) { + return + } + _vm.walletAddressPassword = $event.target.value + } + } + }) + ]), + _c("div", [ + _c( + "div", + { + staticClass: "modalButtonPass generatorButtonPass", + on: { click: this.generateRandomPassword } + }, + [ + _vm._v( + "\n Generate random password\n " + ) + ] + ) + ]) + ]), + _c("span", { staticClass: "errorMessage" }, [ + _vm._v(_vm._s(this.errorMessage)) + ]), + _c( + "div", + { + staticClass: "modalButtonPass", + on: { click: this.createPassword } + }, + [_vm._v("\n Set Password\n ")] + ) + ]) + ]) + ] + ) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-3b585992", esExports) + } +} + +/***/ }), +/* 101 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Delete_modal_vue__ = __webpack_require__(32); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_dc2c73dc_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Delete_modal_vue__ = __webpack_require__(104); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(102) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Delete_modal_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_dc2c73dc_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Delete_modal_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Wallet/Address/Modals/Delete.modal.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-dc2c73dc", Component.options) + } else { + hotAPI.reload("data-v-dc2c73dc", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 102 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a \n\n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 104 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + [ + _c("Modal", { ref: "refModal", attrs: { title: "Delete Address" } }, [ + _c( + "div", + { + attrs: { slot: "content" }, + on: { + keyup: function($event) { + if ( + !("button" in $event) && + _vm._k($event.keyCode, "enter", 13, $event.key, "Enter") + ) { + return null + } + return _vm.deleteAddress($event) + } + }, + slot: "content" + }, + [ + _c("div", { staticClass: "descriptionText" }, [ + _vm._v("\n\n To delete this address please type "), + _c("span", { staticClass: "coloredText" }, [_vm._v("DELETE")]) + ]), + _c("div", [ + _c("input", { + directives: [ + { + name: "model", + rawName: "v-model", + value: _vm.inputValue, + expression: "inputValue" + } + ], + staticClass: "inputDeleteModal", + domProps: { value: _vm.inputValue }, + on: { + input: function($event) { + if ($event.target.composing) { + return + } + _vm.inputValue = $event.target.value + } + } + }), + _c( + "div", + { + staticClass: "modalButton", + on: { click: this.deleteAddress } + }, + [_vm._v("\n Delete\n ")] + ) + ]) + ] + ) + ]) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-dc2c73dc", esExports) + } +} + +/***/ }), +/* 105 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + { staticClass: "walletAddress hoverAddress" }, + [ + _c( + "div", + { + staticClass: "addressIdentityBox", + on: { + click: function($event) { + $event.stopPropagation() + return _vm.handleTransferFunds($event) + } + } + }, + [ + _c("img", { + staticClass: "walletAddressImage", + attrs: { src: this.getAddressPic } + }), + this.isMiningAddress + ? _c("icon", { + staticClass: "btn actuallMiningAddress isImining", + staticStyle: { display: "inline-block" }, + attrs: { alt: "Mining", text: "Mining Address", icon: "mining" } + }) + : _vm._e(), + _c( + "b", + { staticClass: "fontColor" }, + [ + _c("show-balance", { + attrs: { + showPoolReward: _vm.isMiningAddress, + address: this.address, + currency: "0x01" + } + }) + ], + 1 + ), + _c("b", { staticClass: "amountCurrency currencyName" }, [ + _vm._v("WEBD") + ]), + _c( + "div", + { attrs: { id: "transactionAddressStatus" } }, + [ + _c("icon", { + directives: [ + { + name: "show", + rawName: "v-show", + value: Object.keys(this.sendingMoney).length !== 0, + expression: "Object.keys(this.sendingMoney).length !== 0" + } + ], + staticClass: "walletMiningStatus walletSendingImg", + attrs: { icon: "chevron-double-up" } + }), + _c("icon", { + directives: [ + { + name: "show", + rawName: "v-show", + value: Object.keys(this.receivingMoney).length !== 0, + expression: "Object.keys(this.receivingMoney).length !== 0" + } + ], + staticClass: "walletMiningStatus walletReceivingImg", + attrs: { icon: "chevron-double-down" } + }) + ], + 1 + ) + ], + 1 + ), + _c( + "div", + { + staticClass: "actionsBox hoverAddress", + style: { + marginBottom: this.opened + ? this.walletButtonMarginOpened + "px" + : this.walletButtonMarginClosed + "px" + } + }, + [ + _c( + "div", + { + staticClass: "addressButton", + on: { + click: function($event) { + $event.stopPropagation() + return _vm.handleExport($event) + } + } + }, + [ + _c("icon", { + staticClass: "btn", + attrs: { + alt: "Secure Wallet", + text: "Download Address", + icon: "download" + } + }) + ], + 1 + ), + _c( + "div", + { + staticClass: "addressButton", + on: { + click: function($event) { + $event.stopPropagation() + return _vm.handleLock($event) + } + } + }, + [ + _c("icon", { + staticClass: "btn", + attrs: { + alt: "Secure Wallet", + text: "Lock Address", + icon: this.addressLocked ? "lock-closed" : "lock-open" + } + }) + ], + 1 + ), + _c( + "div", + { + staticClass: "addressButton", + on: { + click: function($event) { + $event.stopPropagation() + return _vm.handleDelete($event) + } + } + }, + [ + _c("icon", { + staticClass: "btn", + attrs: { + alt: "Secure Wallet", + text: "Delete Address", + icon: "x" + } + }) + ], + 1 + ) + ] + ), + _c("address-main-modal", { + ref: "refAddressMainModal", + attrs: { address: this.address, isMiningAddress: this.isMiningAddress } + }), + _c("lock-modal", { + ref: "refLockModal", + attrs: { address: this.address } + }), + _c("delete-modal", { + ref: "refDeleteModal", + attrs: { address: this.address } + }) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-6fd10b33", esExports) + } +} + +/***/ }), +/* 106 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + { ref: "dashboardWallet", staticClass: "dashboardWallet" }, + [ + _c("icon", { + directives: [ + { + name: "show", + rawName: "v-show", + value: !this.opened && _vm.isSendingMoney, + expression: "!this.opened && isSendingMoney" + } + ], + staticClass: "miningStatus sendingImg jump", + attrs: { icon: "chevron-double-up" } + }), + _c("icon", { + directives: [ + { + name: "show", + rawName: "v-show", + value: !this.opened && _vm.isReceivingMoney, + expression: "!this.opened && isReceivingMoney" + } + ], + staticClass: "miningStatus receivingImg jump", + style: { + right: _vm.isSendingMoney ? "20px" : "4px", + marginBottom: _vm.isSendingMoney ? "-2px" : "0" + }, + attrs: { icon: "chevron-double-down" } + }), + _c( + "div", + { + ref: "walletMenuButton", + style: { + marginBottom: this.opened + ? this.walletButtonMarginOpened + "px" + : this.walletButtonMarginClosed + "px", + top: this.opened + ? this.buttonTopDistanceOpen + : this.buttonTopDistanceClose, + borderTopLeftRadius: this.opened + ? this.walletButtonRadiusLeftOpen + "px" + : this.walletButtonRadiusLeftClose + "px", + borderTopRightRadius: this.opened + ? this.walletButtonRadiusRightOpen + "px" + : this.walletButtonRadiusRightClose + "px" + }, + attrs: { id: "walletButton" }, + on: { click: this.toggleWallet } + }, + [ + _c( + "span", + { attrs: { id: "walletButtonText" } }, + [ + _c( + "div", + { staticStyle: { display: "inline-block" } }, + [ + _c("icon", { + staticClass: "buttonIcon statusWalletIcon", + staticStyle: { fill: "black" }, + attrs: { icon: this.opened ? "chevron-down" : "chevron-up" } + }), + _vm._v("\n Wallet\n ") + ], + 1 + ), + _c("show-sum-balances", { + ref: "refShowSumBalances", + style: { + display: this.isMobile == false ? "none" : "inline-block" + }, + attrs: { addresses: this.addresses, currency: this.currency } + }) + ], + 1 + ) + ] + ), + _c( + "div", + { + ref: "walletMenu", + style: { + marginBottom: this.opened + ? this.walletMarginOpened + "px" + : this.walletMarginClosed + "px", + top: this.opened + ? this.buttonTopDistanceOpen + : this.buttonTopDistanceClose, + marginTop: this.opened + ? this.walletMenuMarginTopOpen + : this.walletMenuMarginTopClose, + height: this.opened + ? this.walletMenuHeightOpen + : this.walletMenuHeightClosed + }, + attrs: { id: "walletMenu" } + }, + [ + _c("div", { attrs: { id: "dashboardWallet" } }, [ + _c("div", { staticClass: "walletController" }, [ + _c( + "div", + { + staticClass: "btn buttonTextStyle", + on: { click: this.handleAddNewAddress } + }, + [_vm._v("\n Add Address\n ")] + ), + _c("label", { staticClass: "myLabel" }, [ + _c("input", { + ref: "importedAddress", + attrs: { type: "file", multiple: "", size: "50" }, + on: { change: this.handleImportAddress } + }), + _c("div", { staticClass: "btn buttonTextStyle" }, [ + _vm._v( + "\n Import Address\n " + ) + ]) + ]) + ]), + _c( + "div", + { + staticClass: "walletSection walletsContainer", + style: { height: this.walletContentHeight } + }, + [ + _c( + "div", + { attrs: { id: "allWallets" } }, + _vm._l(this.addresses, function(walletAddress, index) { + return _c("Address", { + key: walletAddress.address, + ref: "address" + index, + refInFor: true, + staticStyle: { "padding-right": "20px" }, + attrs: { + isMiningAddress: + _vm.miningAddress === walletAddress.address, + id: "address" + walletAddress.address, + address: walletAddress.address + }, + on: { + onPendingTransactionsChanges: + _vm.handlePendingTransactionsChanges + } + }) + }) + ) + ] + ) + ]) + ] + ) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-8087f122", esExports) + } +} + +/***/ }), +/* 107 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Mining_vue__ = __webpack_require__(33); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0954b78f_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Mining_vue__ = __webpack_require__(115); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(108) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Mining_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0954b78f_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Mining_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Mining/Mining.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-0954b78f", Component.options) + } else { + hotAPI.reload("data-v-0954b78f", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 108 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a \n\n\n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 110 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_slider_vue__ = __webpack_require__(34); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2b39a900_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_slider_vue__ = __webpack_require__(114); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(111) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_slider_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_2b39a900_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_slider_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/Mining/slider.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-2b39a900", Component.options) + } else { + hotAPI.reload("data-v-2b39a900", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 111 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 113 */ +/***/ (function(module, exports, __webpack_require__) { + +!function(t,e){ true?module.exports=e():"function"==typeof define&&define.amd?define("vue-slider-component",[],e):"object"==typeof exports?exports["vue-slider-component"]=e():t["vue-slider-component"]=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var r=i[s]={i:s,l:!1,exports:{}};return t[s].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,s){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:s})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,"a",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=2)}([function(t,e,i){i(7);var s=i(5)(i(1),i(6),null,null);t.exports=s.exports},function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s=function(){var t="undefined"!=typeof window?window.devicePixelRatio||1:1;return function(e){return Math.round(e*t)/t}}();e.default={name:"VueSliderComponent",props:{width:{type:[Number,String],default:"auto"},height:{type:[Number,String],default:6},data:{type:Array,default:null},dotSize:{type:Number,default:16},dotWidth:{type:Number,required:!1},dotHeight:{type:Number,required:!1},min:{type:Number,default:0},max:{type:Number,default:100},interval:{type:Number,default:1},show:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},piecewise:{type:Boolean,default:!1},tooltip:{type:[String,Boolean],default:"always"},eventType:{type:String,default:"auto"},direction:{type:String,default:"horizontal"},reverse:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},clickable:{type:Boolean,default:!0},speed:{type:Number,default:.5},realTime:{type:Boolean,default:!1},stopPropagation:{type:Boolean,default:!1},value:{type:[String,Number,Array,Object],default:0},piecewiseLabel:{type:Boolean,default:!1},debug:{type:Boolean,default:!0},fixed:{type:Boolean,default:!1},processDragable:{type:Boolean,default:!1},useKeyboard:{type:Boolean,default:!1},actionsKeyboard:{type:Array,default:function(){return[function(t){return t-1},function(t){return t+1}]}},sliderStyle:[Array,Object,Function],focusStyle:[Array,Object,Function],tooltipDir:[Array,String],formatter:[String,Function],piecewiseStyle:Object,piecewiseActiveStyle:Object,processStyle:Object,bgStyle:Object,tooltipStyle:[Array,Object,Function],labelStyle:Object,labelActiveStyle:Object},data:function(){return{flag:!1,keydownFlag:null,focusFlag:!1,processFlag:!1,processSign:null,size:0,fixedValue:0,focusSlider:0,currentValue:0,currentSlider:0,isComponentExists:!0}},computed:{dotWidthVal:function(){return"number"==typeof this.dotWidth?this.dotWidth:this.dotSize},dotHeightVal:function(){return"number"==typeof this.dotHeight?this.dotHeight:this.dotSize},flowDirection:function(){return"vue-slider-"+this.direction+(this.reverse?"-reverse":"")},tooltipDirection:function(){var t=this.tooltipDir||("vertical"===this.direction?"left":"top");return Array.isArray(t)?this.isRange?t:t[1]:this.isRange?[t,t]:t},tooltipStatus:function(){return"hover"===this.tooltip&&this.flag?"vue-slider-always":this.tooltip?"vue-slider-"+this.tooltip:""},tooltipClass:function(){return["vue-slider-tooltip-"+this.tooltipDirection,"vue-slider-tooltip"]},isDisabled:function(){return"none"===this.eventType||this.disabled},disabledClass:function(){return this.disabled?"vue-slider-disabled":""},stateClass:function(){return{"vue-slider-state-process-drag":this.processFlag,"vue-slider-state-drag":this.flag&&!this.processFlag&&!this.keydownFlag,"vue-slider-state-focus":this.focusFlag}},isRange:function(){return Array.isArray(this.value)},slider:function(){return this.isRange?[this.$refs.dot0,this.$refs.dot1]:this.$refs.dot},minimum:function(){return this.data?0:this.min},val:{get:function(){return this.data?this.isRange?[this.data[this.currentValue[0]],this.data[this.currentValue[1]]]:this.data[this.currentValue]:this.currentValue},set:function(t){if(this.data)if(this.isRange){var e=this.data.indexOf(t[0]),i=this.data.indexOf(t[1]);e>-1&&i>-1&&(this.currentValue=[e,i])}else{var s=this.data.indexOf(t);s>-1&&(this.currentValue=s)}else this.currentValue=t}},currentIndex:function(){return this.isRange?this.data?this.currentValue:[(this.currentValue[0]-this.minimum)/this.spacing,(this.currentValue[1]-this.minimum)/this.spacing]:(this.currentValue-this.minimum)/this.spacing},indexRange:function(){return this.isRange?this.currentIndex:[0,this.currentIndex]},maximum:function(){return this.data?this.data.length-1:this.max},multiple:function(){var t=(""+this.interval).split(".")[1];return t?Math.pow(10,t.length):1},spacing:function(){return this.data?1:this.interval},total:function(){return this.data?this.data.length-1:(Math.floor((this.maximum-this.minimum)*this.multiple)%(this.interval*this.multiple)!=0&&this.printError("Prop[interval] is illegal, Please make sure that the interval can be divisible"),(this.maximum-this.minimum)/this.interval)},gap:function(){return this.size/this.total},position:function(){return this.isRange?[(this.currentValue[0]-this.minimum)/this.spacing*this.gap,(this.currentValue[1]-this.minimum)/this.spacing*this.gap]:(this.currentValue-this.minimum)/this.spacing*this.gap},limit:function(){return this.isRange?this.fixed?[[0,(this.maximum-this.fixedValue*this.spacing)/this.spacing*this.gap],[(this.minimum+this.fixedValue*this.spacing)/this.spacing*this.gap,this.size]]:[[0,this.position[1]],[this.position[0],this.size]]:[0,this.size]},valueLimit:function(){return this.isRange?this.fixed?[[this.minimum,this.maximum-this.fixedValue*this.spacing],[this.minimum+this.fixedValue*this.spacing,this.maximum]]:[[this.minimum,this.currentValue[1]],[this.currentValue[0],this.maximum]]:[this.minimum,this.maximum]},idleSlider:function(){return 0===this.currentSlider?1:0},wrapStyles:function(){return"vertical"===this.direction?{height:"number"==typeof this.height?this.height+"px":this.height,padding:this.dotHeightVal/2+"px "+this.dotWidthVal/2+"px"}:{width:"number"==typeof this.width?this.width+"px":this.width,padding:this.dotHeightVal/2+"px "+this.dotWidthVal/2+"px"}},sliderStyles:function(){return Array.isArray(this.sliderStyle)?this.isRange?this.sliderStyle:this.sliderStyle[1]:"function"==typeof this.sliderStyle?this.sliderStyle(this.val,this.currentIndex):this.isRange?[this.sliderStyle,this.sliderStyle]:this.sliderStyle},focusStyles:function(){return Array.isArray(this.focusStyle)?this.isRange?this.focusStyle:this.focusStyle[1]:"function"==typeof this.focusStyle?this.focusStyle(this.val,this.currentIndex):this.isRange?[this.focusStyle,this.focusStyle]:this.focusStyle},tooltipStyles:function(){return Array.isArray(this.tooltipStyle)?this.isRange?this.tooltipStyle:this.tooltipStyle[1]:"function"==typeof this.tooltipStyle?this.tooltipStyle(this.val,this.currentIndex):this.isRange?[this.tooltipStyle,this.tooltipStyle]:this.tooltipStyle},elemStyles:function(){return"vertical"===this.direction?{width:this.width+"px",height:"100%"}:{height:this.height+"px"}},dotStyles:function(){return"vertical"===this.direction?{width:this.dotWidthVal+"px",height:this.dotHeightVal+"px",left:-(this.dotWidthVal-this.width)/2+"px"}:{width:this.dotWidthVal+"px",height:this.dotHeightVal+"px",top:-(this.dotHeightVal-this.height)/2+"px"}},piecewiseDotStyle:function(){return"vertical"===this.direction?{width:this.width+"px",height:this.width+"px"}:{width:this.height+"px",height:this.height+"px"}},piecewiseDotWrap:function(){if(!this.piecewise&&!this.piecewiseLabel)return!1;for(var t=[],e=0;e<=this.total;e++){var i="vertical"===this.direction?{bottom:this.gap*e-this.width/2+"px",left:0}:{left:this.gap*e-this.height/2+"px",top:0},s=this.reverse?this.total-e:e,r=this.data?this.data[s]:this.spacing*s+this.min;t.push({style:i,label:this.formatter?this.formatting(r):r,inRange:s>=this.indexRange[0]&&s<=this.indexRange[1]})}return t}},watch:{value:function(t){this.flag||this.setValue(t,!0)},max:function(t){if(tthis.max)return this.printError("The minimum value can not be greater than the maximum value.");var e=this.limitValue(this.val);this.setValue(e),this.refresh()},show:function(t){var e=this;t&&!this.size&&this.$nextTick(function(){e.refresh()})},fixed:function(){this.computedFixedValue()}},methods:{bindEvents:function(){document.addEventListener("touchmove",this.moving,{passive:!1}),document.addEventListener("touchend",this.moveEnd,{passive:!1}),document.addEventListener("mousedown",this.blurSlider),document.addEventListener("mousemove",this.moving),document.addEventListener("mouseup",this.moveEnd),document.addEventListener("mouseleave",this.moveEnd),document.addEventListener("keydown",this.handleKeydown),document.addEventListener("keyup",this.handleKeyup),window.addEventListener("resize",this.refresh)},unbindEvents:function(){document.removeEventListener("touchmove",this.moving),document.removeEventListener("touchend",this.moveEnd),document.removeEventListener("mousedown",this.blurSlider),document.removeEventListener("mousemove",this.moving),document.removeEventListener("mouseup",this.moveEnd),document.removeEventListener("mouseleave",this.moveEnd),document.removeEventListener("keydown",this.handleKeydown),document.removeEventListener("keyup",this.handleKeyup),window.removeEventListener("resize",this.refresh)},handleKeydown:function(t){if(!this.useKeyboard||!this.focusFlag)return!1;switch(t.keyCode){case 37:case 40:t.preventDefault(),this.keydownFlag=!0,this.flag=!0,this.changeFocusSlider(this.actionsKeyboard[0]);break;case 38:case 39:t.preventDefault(),this.keydownFlag=!0,this.flag=!0,this.changeFocusSlider(this.actionsKeyboard[1])}},handleKeyup:function(){this.keydownFlag&&(this.keydownFlag=!1,this.flag=!1)},changeFocusSlider:function(t){var e=this;if(this.isRange){var i=this.currentIndex.map(function(i,s){if(s===e.focusSlider||e.fixed){var r=t(i),n=e.fixed?e.valueLimit[s]:[e.minimum,e.maximum];if(r<=n[1]&&r>=n[0])return r}return i});i[0]>i[1]&&(this.focusSlider=0===this.focusSlider?1:0,i=i.reverse()),this.setIndex(i)}else this.setIndex(t(this.currentIndex))},blurSlider:function(t){var e=this.isRange?this.$refs["dot"+this.focusSlider]:this.$refs.dot;if(!e||e===t.target)return!1;this.focusFlag=!1},formatting:function(t){return"string"==typeof this.formatter?this.formatter.replace(/\{value\}/,t):this.formatter(t)},getPos:function(t){return this.realTime&&this.getStaticData(),"vertical"===this.direction?this.reverse?t.pageY-this.offset:this.size-(t.pageY-this.offset):this.reverse?this.size-(t.clientX-this.offset):t.clientX-this.offset},processClick:function(t){this.fixed&&t.stopPropagation()},wrapClick:function(t){if(this.isDisabled||!this.clickable||this.processFlag)return!1;var e=this.getPos(t);this.isRange&&(this.currentSlider=e>(this.position[1]-this.position[0])/2+this.position[0]?1:0),this.setValueOnPos(e)},moveStart:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments[2];if(this.isDisabled)return!1;if(this.stopPropagation&&t.stopPropagation(),this.isRange&&(this.currentSlider=e,i)){if(!this.processDragable)return!1;this.processFlag=!0,this.processSign={pos:this.position,start:this.getPos(t.targetTouches&&t.targetTouches[0]?t.targetTouches[0]:t)}}!i&&this.useKeyboard&&(this.focusFlag=!0,this.focusSlider=e),this.flag=!0,this.$emit("drag-start",this)},moving:function(t){if(this.stopPropagation&&t.stopPropagation(),!this.flag)return!1;t.preventDefault(),t.targetTouches&&t.targetTouches[0]&&(t=t.targetTouches[0]),this.processFlag?(this.currentSlider=0,this.setValueOnPos(this.processSign.pos[0]+this.getPos(t)-this.processSign.start,!0),this.currentSlider=1,this.setValueOnPos(this.processSign.pos[1]+this.getPos(t)-this.processSign.start,!0)):this.setValueOnPos(this.getPos(t),!0)},moveEnd:function(t){var e=this;if(this.stopPropagation&&t.stopPropagation(),!this.flag)return!1;this.$emit("drag-end",this),this.lazy&&this.isDiff(this.val,this.value)&&this.syncValue(),this.flag=!1,window.setTimeout(function(){e.processFlag=!1},0),this.setPosition()},setValueOnPos:function(t,e){var i=this.isRange?this.limit[this.currentSlider]:this.limit,s=this.isRange?this.valueLimit[this.currentSlider]:this.valueLimit;if(t>=i[0]&&t<=i[1]){this.setTransform(t);var r=(Math.round(t/this.gap)*(this.spacing*this.multiple)+this.minimum*this.multiple)/this.multiple;this.setCurrentValue(r,e),this.isRange&&this.fixed&&(this.setTransform(t+this.fixedValue*this.gap*(0===this.currentSlider?1:-1),!0),this.setCurrentValue(r+this.fixedValue*this.spacing*(0===this.currentSlider?1:-1),e,!0))}else tthis.maximum)return!1;this.isRange?this.isDiff(this.currentValue[s],t)&&(this.currentValue.splice(s,1,t),this.lazy&&this.flag||this.syncValue()):this.isDiff(this.currentValue,t)&&(this.currentValue=t,this.lazy&&this.flag||this.syncValue()),e||this.setPosition()},setIndex:function(t){if(Array.isArray(t)&&this.isRange){var e=void 0;e=this.data?[this.data[t[0]],this.data[t[1]]]:[this.spacing*t[0]+this.minimum,this.spacing*t[1]+this.minimum],this.setValue(e)}else t=this.spacing*t+this.minimum,this.isRange&&(this.currentSlider=t>(this.currentValue[1]-this.currentValue[0])/2+this.currentValue[0]?1:0),this.setCurrentValue(t)},setValue:function(t,e,i){var s=this;if(this.isDiff(this.val,t)){var r=this.limitValue(t);this.val=this.isRange?r.concat():r,this.computedFixedValue(),this.syncValue(e)}this.$nextTick(function(){return s.setPosition(i)})},computedFixedValue:function(){if(!this.fixed)return this.fixedValue=0,!1;this.fixedValue=this.currentIndex[1]-this.currentIndex[0]},setPosition:function(t){this.flag||this.setTransitionTime(void 0===t?this.speed:t),this.isRange?(this.setTransform(this.position[0],1===this.currentSlider),this.setTransform(this.position[1],0===this.currentSlider)):this.setTransform(this.position),this.flag||this.setTransitionTime(0)},setTransform:function(t,e){var i=e?this.idleSlider:this.currentSlider,r=s(("vertical"===this.direction?this.dotHeightVal/2-t:t-this.dotWidthVal/2)*(this.reverse?-1:1)),n="vertical"===this.direction?"translateY("+r+"px)":"translateX("+r+"px)",o=this.fixed?this.fixedValue*this.gap+"px":(0===i?this.position[1]-t:t-this.position[0])+"px",l=this.fixed?(0===i?t:t-this.fixedValue*this.gap)+"px":(0===i?t:this.position[0])+"px";this.isRange?(this.slider[i].style.transform=n,this.slider[i].style.WebkitTransform=n,this.slider[i].style.msTransform=n,"vertical"===this.direction?(this.$refs.process.style.height=o,this.$refs.process.style[this.reverse?"top":"bottom"]=l):(this.$refs.process.style.width=o,this.$refs.process.style[this.reverse?"right":"left"]=l)):(this.slider.style.transform=n,this.slider.style.WebkitTransform=n,this.slider.style.msTransform=n,"vertical"===this.direction?(this.$refs.process.style.height=t+"px",this.$refs.process.style[this.reverse?"top":"bottom"]=0):(this.$refs.process.style.width=t+"px",this.$refs.process.style[this.reverse?"right":"left"]=0))},setTransitionTime:function(t){if(t||this.$refs.process.offsetWidth,this.isRange){for(var e=0;ee.max?(e.printError("The value of the slider is "+t+", the maximum value is "+e.max+", the value of this slider can not be greater than the maximum value"),e.max):i};return this.isRange?t.map(function(t){return i(t)}):i(t)},syncValue:function(t){var e=this.isRange?this.val.concat():this.val;this.$emit("input",e),t||this.$emit("callback",e)},getValue:function(){return this.val},getIndex:function(){return this.currentIndex},getStaticData:function(){this.$refs.elem&&(this.size="vertical"===this.direction?this.$refs.elem.offsetHeight:this.$refs.elem.offsetWidth,this.offset="vertical"===this.direction?this.$refs.elem.getBoundingClientRect().top+window.pageYOffset||document.documentElement.scrollTop:this.$refs.elem.getBoundingClientRect().left)},refresh:function(){this.$refs.elem&&(this.getStaticData(),this.computedFixedValue(),this.setPosition())},printError:function(t){this.debug&&console.error("[VueSlider error]: "+t)}},mounted:function(){var t=this;if(this.isComponentExists=!0,"undefined"==typeof window||"undefined"==typeof document)return this.printError("window or document is undefined, can not be initialization.");this.$nextTick(function(){t.isComponentExists&&(t.getStaticData(),t.setValue(t.limitValue(t.value),!0,0),t.bindEvents())})},beforeDestroy:function(){this.isComponentExists=!1,this.unbindEvents()}}},function(t,e,i){"use strict";var s=i(0);t.exports=s},function(t,e,i){e=t.exports=i(4)(),e.push([t.i,'.vue-slider-component{position:relative;box-sizing:border-box;-ms-user-select:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none}.vue-slider-component.vue-slider-disabled{opacity:.5;cursor:not-allowed}.vue-slider-component.vue-slider-has-label{margin-bottom:15px}.vue-slider-component.vue-slider-disabled .vue-slider-dot{cursor:not-allowed}.vue-slider-component .vue-slider{position:relative;display:block;border-radius:15px;background-color:#ccc}.vue-slider-component .vue-slider:after{content:"";position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}.vue-slider-component .vue-slider-process{position:absolute;border-radius:15px;background-color:#3498db;transition:all 0s;z-index:1}.vue-slider-component .vue-slider-process.vue-slider-process-dragable{cursor:pointer;z-index:3}.vue-slider-component.vue-slider-horizontal .vue-slider-process{width:0;height:100%;top:0;left:0;will-change:width}.vue-slider-component.vue-slider-vertical .vue-slider-process{width:100%;height:0;bottom:0;left:0;will-change:height}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-process{width:0;height:100%;top:0;right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-process{width:100%;height:0;top:0;left:0}.vue-slider-component .vue-slider-dot{position:absolute;border-radius:50%;background-color:#fff;box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);transition:all 0s;will-change:transform;cursor:pointer;z-index:4}.vue-slider-component .vue-slider-dot.vue-slider-dot-focus{box-shadow:0 0 2px 1px #3498db}.vue-slider-component.vue-slider-horizontal .vue-slider-dot{left:0}.vue-slider-component.vue-slider-vertical .vue-slider-dot{bottom:0}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-dot{right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-dot{top:0}.vue-slider-component .vue-slider-tooltip-wrap{display:none;position:absolute;z-index:9}.vue-slider-component .vue-slider-tooltip{display:block;font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #3498db;background-color:#3498db}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top{top:-9px;left:50%;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom{bottom:-9px;left:50%;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left{top:50%;left:-9px;-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right{top:50%;right:-9px;-webkit-transform:translate(100%,-50%);transform:translate(100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip:before{content:"";position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-top-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom .vue-slider-tooltip:before{content:"";position:absolute;top:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-bottom-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left .vue-slider-tooltip:before{content:"";position:absolute;top:50%;right:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-left-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right .vue-slider-tooltip:before{content:"";position:absolute;top:50%;left:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\0;border-right-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-dot.vue-slider-hover:hover .vue-slider-tooltip-wrap{display:block}.vue-slider-component .vue-slider-dot.vue-slider-always .vue-slider-tooltip-wrap{display:block!important}.vue-slider-component .vue-slider-piecewise{position:absolute;width:100%;padding:0;margin:0;left:0;top:0;height:100%;list-style:none}.vue-slider-component .vue-slider-piecewise-item{position:absolute;width:8px;height:8px}.vue-slider-component .vue-slider-piecewise-dot{position:absolute;left:50%;top:50%;width:100%;height:100%;display:inline-block;background-color:rgba(0,0,0,.16);border-radius:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:2;transition:all .3s}.vue-slider-component .vue-slider-piecewise-item:first-child .vue-slider-piecewise-dot,.vue-slider-component .vue-slider-piecewise-item:last-child .vue-slider-piecewise-dot{visibility:hidden}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-horizontal .vue-slider-piecewise-label{position:absolute;display:inline-block;top:100%;left:50%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(-50%,8px);transform:translate(-50%,8px);visibility:visible}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-vertical .vue-slider-piecewise-label{position:absolute;display:inline-block;top:50%;left:100%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(8px,-50%);transform:translate(8px,-50%);visibility:visible}.vue-slider-component .vue-slider-sr-only{clip:rect(1px,1px,1px,1px);height:1px;width:1px;overflow:hidden;position:absolute!important}',""])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;ei.parts.length&&(s.parts.length=i.parts.length)}else{for(var o=[],r=0;r { + + if (document.getElementById('WebDollarMap') === null) + return; + + new Vue({ + el: '#WebDollarMap', + render: h => h(__WEBPACK_IMPORTED_MODULE_0_components_maps_Native_Map_Network_Native_Map_vue__["a" /* default */]) + }) +}); + +/***/ }), +/* 118 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_vue__ = __webpack_require__(36); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6f992934_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_vue__ = __webpack_require__(138); +var disposed = false +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = null +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6f992934_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/maps/Native-Map/Network-Native-Map.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-6f992934", Component.options) + } else { + hotAPI.reload("data-v-6f992934", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 119 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Projection__ = __webpack_require__(120); + + +class CircleMap { + + constructor(svgElement) { + + this._svg = svgElement; + // temporarily unhide all the circlesto get the bounding rects + + svgElement.classList.remove('hide-circles'); + + let mapDimensions = this.getDimensions(); // also enforces a style update + this._circleDiameter = 0; + let circles = svgElement.querySelectorAll('circle'); + + for (let i = 0; i < circles.length; ++i) { + circles[i].cellId = i; + let boundingBox = circles[i].getBoundingClientRect(); + // values relative to map width / height such that they work also when we resize the map + circles[i].centerX = (boundingBox.left + boundingBox.width/2 - mapDimensions.left) / mapDimensions.width; + circles[i].centerY = (boundingBox.top + boundingBox.height/2 - mapDimensions.top) / mapDimensions.height; + // the circles differ very slightly in size, so we take the biggest + this._circleDiameter = Math.max(this._circleDiameter, boundingBox.width / mapDimensions.width); + } + this._cells = circles; + this._links = []; + // after we got the circle bounding rects, we can hide them again + svgElement.classList.add('hide-circles'); + } + + getDimensions() { + return this._svg.getBoundingClientRect(); + } + + unhighlightCell(cell, index) { + cell.setAttribute('class', ''); + delete cell.data[index] + if (cell.data === {}) + cell.data = null; + } + + putCellOnTop(cell){ + // put my own cell on top of everything else. In svg the stacking is not affected by z-index, but + // only by document order. So we make the cell the last child + cell.parentElement.appendChild(cell); + } + + highlightCell(cell, className, data, index) { + + if (cell.getAttribute('class') !== 'peer-own') + if(cell.getAttribute('class') !== 'peer-connected-terminal') + if(cell.getAttribute('class') !== 'peer-connected-browser') + cell.setAttribute('class', className); + + // deleted + + // if (className === 'peer-own') + // cell.parentElement.appendChild(cell); + + + // XXX another hack + if (data) { + if (cell.data === undefined) cell.data = {}; + cell.data[index] = data; + } + } + + _convertCoordinates(latitude, longitude) { + let mapDimensions = this.getDimensions(); + // the map that we have is cropped out from the full robinson projected map. We have to make + // the computation on the full/original map, so we calculate the full size. + let fullMapWidth = 1.0946808510638297 * mapDimensions.width; + let fullMapHeight = fullMapWidth / 1.97165551906973; // RobinsonProjection maps have a fixed aspect ratio + let projection = new __WEBPACK_IMPORTED_MODULE_0__Projection__["a" /* default */](fullMapWidth, fullMapHeight); + let point = projection.project(latitude, longitude); + // the origin is centered in the middle of the map, so we translate it + // to the top left corner + point.x = fullMapWidth/2 + point.x; + point.y = fullMapHeight/2 - point.y; + // the map that we have is robinson projected and then cropped out and scaled + point.x = Math.max(0, point.x - 0.07045675413022352*fullMapWidth); + point.y = Math.max(0, point.y - 0.012380952380952381*fullMapHeight); + return point; + } + + _testCoordinateConversion(latitude, longitude) { + let testDot = window.testDot; + if (!testDot) { + testDot = document.createElement('div'); + testDot.style.background = 'red'; + testDot.style.width = '5px'; + testDot.style.height = '5px'; + testDot.style.position = 'absolute'; + document.body.appendChild(testDot); + window.testDot = testDot; + } + let convertedCoordinates = this._convertCoordinates(latitude, longitude); + console.log(convertedCoordinates); + testDot.style.left = convertedCoordinates.x-2+'px'; + testDot.style.top = convertedCoordinates.y-2+'px'; + } + + _getClosestCell(x, y) { + let mapDimensions = this.getDimensions(); + let bestDistance = 0; + let bestCell = null; + + + for (let i = 0; i < this._cells.length; ++i) { + // Calculate position from bounding box. + let cell = this._cells[i]; + let centerX = cell.centerX * mapDimensions.width; + let centerY = cell.centerY * mapDimensions.height; + let xDist = centerX - x; + let yDist = centerY - y; + let distance = xDist*xDist + yDist*yDist; + + // Update best cell accordingly. + if (!bestCell || distance < bestDistance) { + bestDistance = distance; + bestCell = cell; + } + } + + + // Return best cell only if its distance in terms of cells is not too far. + let circleDiameter = this._circleDiameter * mapDimensions.width; + return bestDistance > CircleMap.MAX_CELL_DISTANCE * circleDiameter ? null : bestCell; + } + + getCellByLocation(latitude, longitude) { + let convertedCoordinates = this._convertCoordinates(latitude, longitude); + let closestCell = this._getClosestCell(convertedCoordinates.x, convertedCoordinates.y); + return closestCell; + } + + addLink(startCell, endCell) { + + if (!startCell || !endCell) + return; + + // search whether we already drew that link + for (let i=0, link; link = this._links[i]; ++i) + if (link.start === startCell && link.end === endCell || link.end === startCell && link.start === endCell) + return; + + // draw the link + let svgBoundingRect = this.getDimensions(); + let viewBox = this._svg.viewBox; + let viewBoxWidth = viewBox.baseVal.width; + let viewBoxHeight = viewBox.baseVal.height; + let pathEl = document.createElementNS(this._svg.namespaceURI, 'path'); + + let path = 'M'+(startCell.centerX*viewBoxWidth)+' '+(startCell.centerY*viewBoxHeight) +'L'+(endCell.centerX*viewBoxWidth)+' '+(endCell.centerY*viewBoxHeight); + + pathEl.setAttributeNS(null,'d', path); + pathEl.classList.add('link'); + + this._links.push({ + start: startCell, + end: endCell, + path: pathEl + }); + + // insert the path before the startCell such that it will not be drawn over the startCell + startCell.parentElement.append(pathEl); + //startCell.parentElement.insertBefore(pathEl, startCell); + } + + removeLink(startCell, endCell) { + + for (let i=0, link; link = this._links[i]; ++i) + if (link.start === startCell && link.end === endCell || link.end === startCell && link.start === endCell) { + // we found the link + startCell.parentElement.removeChild(link.path); + this._links.splice(i, 1); + return; + } + + } +} + +CircleMap.MAX_CELL_DISTANCE = 12; // in terms of cells + + +/* harmony default export */ __webpack_exports__["a"] = (CircleMap); + +/***/ }), +/* 120 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/** + * It's a Robison Projection + * + * https://en.wikipedia.org/wiki/Robinson_projection + */ + + +class Projection { + + constructor(width) { + + this.X = [594090, 593258.274, 591357.186, 588149.1, 583515.198, 578049.5700000001, 570326.4, 560048.643, 547513.3439999999, 532423.4580000001, 515610.71099999995, 496065.14999999997, 474440.274, 451330.173, 426913.07399999996, 399941.388, 369108.11699999997, 339938.298, 316174.698] + + this.Y = [0, 58689.82, 117379.64, 176069.46000000002, 234759.28, 293449.10000000003, 352138.92000000004, 410828.74000000005, 470275.848, 527356.431, 584626.336, 640760.3089999999, 695379.706, 748105.883, 798465.5349999999, 845890.696, 889245.434, 923986.021, 946610] + + this.EPS = 1e-8; + this.INTERVAL = 5; + + this.radians = Math.PI / 180; + this.degrees = 180 / Math.PI; + + this._width = width; + this._r = this._width / 5.332539516; + } + + _project(lat, lng) + { + // 5 degree intervals, so find right indices + let lI = Math.floor((Math.abs(lat)-this.EPS)/this.INTERVAL); + lI = Math.max(lI, 0); + let hI = lI + 1; + let ratio = (Math.abs(lat)-lI*this.INTERVAL) / this.INTERVAL; + + // interpolate x and y + let xDist = this.X[hI]/700000-this.X[lI]/700000; + let yDist = this.Y[hI]/700000-this.Y[lI]/700000; + + let x = ((xDist*ratio)+this.X[lI]/700000) * (Math.abs(lng) * this.radians); + x = lng < 0 ? -x : x; + let y = (yDist*ratio)+this.Y[lI]/700000; + y = lat < 0 ? -y : y; + + return { + x : x, + y : y + }; + } + + project(lat, lng) { + let p = this._project(lat, lng); + return { + x: p.x * this._r, + y: p.y * this._r + }; + } +} + +/* harmony default export */ __webpack_exports__["a"] = (Projection); + +/***/ }), +/* 121 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +class Circles { + + constructor() { + this.cells = {}; + } + + inc(cell) { + if (!this.cells[cell.cellId]) + this.cells[cell.cellId] = 0; + + this.cells[cell.cellId]++; + } + + del(cell) { + + if (!this.cells[cell.cellId]) this.cells[cell.cellId] = 0; + + if (this.cells[cell.cellId] > 0) return --this.cells[cell.cellId]; + + return 0; + } + + get(cell) { + return this.cells[cell.cellId] || 0; + } + +} + +/* harmony default export */ __webpack_exports__["a"] = (Circles); + +/***/ }), +/* 122 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +class MapsTester{ + + constructor(parent){ + + this.parent = parent; + } + + testConnections(){ + + this._createFakeMarker({country: 'USA', lat: 37.980388, lng:-92.539714 }, 2000); + this._createFakeMarker({country: 'USA', lat: 36.828015, lng:-119.458796 }, 3100); + this._createFakeMarker({country: 'Brazil', lat: -10.252334, lng:-55.143146}, 4200); + this._createFakeMarker({country: 'Germany', lat: 51.809770, lng:8.688927}, 2000); + this._createFakeMarker({country: 'France', lat: 44.745281, lng:2.080051}, 1500); + this._createFakeMarker({country: 'Russia', lat: 56.875767, lng:41.410924}, 3500); + this._createFakeMarker({country: 'India', lat: 17.001243, lng:78.807492}, 2500); + this._createFakeMarker({country: 'UK', lat: 53.376271, lng:-0.660215}, 1500); + this._createFakeMarker({country: 'China', lat: 29.832851, lng: 120.072671}, 5000); + this._createFakeMarker({country: 'South Africa', lat: -29.256599, lng: 24.324561}, 5000); + this._createFakeMarker({country: 'Portugal', lat: 38.989770, lng: -7.430283}, 5100); + this._createFakeMarker({country: 'Australia', lat: -34.041968, lng: 150.994123}, 5200); + this._createFakeMarker({country: 'Saint Petersburg', lat: 59.884495, lng: 30.434003}, 5100); + this._createFakeMarker({country: 'Saudi', lat: 24.759399, lng: 46.640036}, 4800); + this._createFakeMarker({country: 'Mexico', lat: 19.409722, lng: -98.991313}, 2200); + this._createFakeMarker({country: 'USA', lat: 31.124374, lng: -97.531948}, 2200); + this._createFakeMarker({country: 'South Korea', lat: 37.542154, lng: 126.988170}, 3400); + this._createFakeMarker({country: 'Buenos Aires', lat: -34.534501, lng:-58.438049}, 3400); + + + } + + _createFakeMarker( coordinates, timeOut){ + + setTimeout( ()=>{ + + //console.log("coordinates", coordinates); + this.parent._addMarker(coordinates, "fake"); + + }, timeOut) + + } + + +} + +/* unused harmony default export */ var _unused_webpack_default_export = (MapsTester); + +/***/ }), +/* 123 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_Canvas_vue__ = __webpack_require__(37); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_df567280_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_Canvas_vue__ = __webpack_require__(126); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(124) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_Canvas_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_df567280_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_Canvas_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-df567280", Component.options) + } else { + hotAPI.reload("data-v-df567280", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 124 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a \n\n"],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 126 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "svg", + { + staticClass: "hide-circles WebDollarNativeMap", + attrs: { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 1082 502", + preserveAspectRatio: "xMinYMin meet", + "xml:space": "preserve" + } + }, + [ + _c("circle", { + attrs: { cx: "909.4049999999999", cy: "270.32666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.5949999999999", cy: "309.0416666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.9049999999999", cy: "304.16833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "13.805", cy: "222.02166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "5.45", cy: "217.17833333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "46.903333333333336", cy: "105.98666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "55.245000000000005", cy: "101.14333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.06166666666667", cy: "23.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.38500000000005", cy: "18.933333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.75499999999994", cy: "18.93666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.21833333333333", cy: "212.3283333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.57500000000002", cy: "217.1716666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.49999999999994", cy: "221.98333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.14500000000004", cy: "226.83833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.39", cy: "236.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.76666666666665", cy: "9.238333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.4366666666666", cy: "14.103333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.7616666666667", cy: "18.965", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.66", cy: "14.141666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "378.97499999999997", cy: "9.268333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "387.32500000000005", cy: "4.428333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.365", cy: "9.261666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.0783333333333", cy: "14.121666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.98499999999996", cy: "483.0466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.53", cy: "260.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.725", cy: "188.17500000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.71", cy: "178.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.4983333333334", cy: "270.33666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.09333333333336", cy: "309.0083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.77", cy: "294.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.79333333333335", cy: "304.17499999999995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.77", cy: "275.16333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.71", cy: "168.83333333333331", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.77", cy: "284.8333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.41666666666666", cy: "163.98833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.47", cy: "120.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.76", cy: "134.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.135", cy: "115.65666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.76", cy: "125.31666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.1", cy: "159.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.76", cy: "144.65333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.77999999999997", cy: "154.32", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.11333333333334", cy: "318.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.93", cy: "101.13666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.97499999999997", cy: "304.18833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.00666666666666", cy: "323.5216666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.595", cy: "333.1766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.3", cy: "328.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.27000000000004", cy: "279.9916666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.965", cy: "294.5133333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "320.94", cy: "110.81", r: "3.6" } }), + _c("circle", { + attrs: { cx: "320.965", cy: "284.8433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.66666666666663", cy: "328.3566666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "163.14", cy: "105.99", r: "3.6" } }), + _c("circle", { + attrs: { cx: "321.00666666666666", cy: "333.19166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.4083333333333", cy: "323.5216666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.605", cy: "342.84499999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.3", cy: "338.01666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.31", cy: "347.68333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.0133333333334", cy: "342.8633333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.0233333333333", cy: "352.52666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.99666666666667", cy: "313.84666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.645", cy: "309.02500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.66666666666663", cy: "318.69", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.3983333333333", cy: "313.8583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.0733333333333", cy: "299.3383333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.37833333333333", cy: "304.17833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.625", cy: "299.3533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.625", cy: "280.0133333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.9833333333333", cy: "275.18333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.625", cy: "289.68333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.85", cy: "255.8016666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.55333333333337", cy: "188.165", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.21833333333333", cy: "183.34333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.56499999999997", cy: "197.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.905", cy: "178.49833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.9266666666667", cy: "120.47166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.07166666666666", cy: "289.66833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.07166666666666", cy: "279.99833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.10166666666663", cy: "270.33333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.50333333333333", cy: "81.81", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.885", cy: "91.47333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.955", cy: "96.32333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.58833333333334", cy: "96.30833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.67999999999998", cy: "91.48333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.29333333333332", cy: "91.48333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.58500000000004", cy: "115.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.38666666666668", cy: "96.30833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.76999999999998", cy: "96.30833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.06999999999996", cy: "91.47333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.48000000000002", cy: "91.48333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.58000000000004", cy: "86.63", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.59000000000003", cy: "96.30666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.59000000000003", cy: "105.97333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.54", cy: "76.97166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.875", cy: "72.11666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.14", cy: "96.32333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.835", cy: "86.61833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.21666666666667", cy: "86.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.47833333333335", cy: "149.50666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.3", cy: "318.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.595", cy: "323.50666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.28000000000003", cy: "309.0083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.91333333333324", cy: "338.0166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.91333333333324", cy: "328.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.615", cy: "284.8333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.22166666666664", cy: "96.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.23", cy: "105.96333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.26", cy: "289.66833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.26", cy: "299.3383333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.67833333333334", cy: "347.695", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.69", cy: "357.3666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.02833333333336", cy: "362.19666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.66666666666663", cy: "338.02666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.32", cy: "357.34999999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.32", cy: "367.0183333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.6166666666667", cy: "352.5133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.93", cy: "91.47000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.52", cy: "81.78666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.93500000000003", cy: "76.985", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.56666666666663", cy: "76.96833333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "221.26", cy: "72.15", r: "3.6" } }), + _c("circle", { + attrs: { cx: "196.365", cy: "76.96833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.64666666666665", cy: "72.13833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.4483333333333", cy: "72.15", r: "3.6" } + }), + _c("circle", { attrs: { cx: "163.12", cy: "76.985", r: "3.6" } }), + _c("circle", { + attrs: { cx: "179.75", cy: "76.96833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.04833333333332", cy: "72.135", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.845", cy: "76.93666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.22166666666664", cy: "86.62333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.5", cy: "62.468333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.16499999999996", cy: "57.613333333333344", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.4083333333333", cy: "333.19166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.795", cy: "67.31333333333332", r: "3.6" } + }), + _c("circle", { attrs: { cx: "237.865", cy: "72.135", r: "3.6" } }), + _c("circle", { + attrs: { cx: "246.17666666666665", cy: "67.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.47000000000003", cy: "62.46333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.92333333333335", cy: "347.6816666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.06999999999996", cy: "81.80333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.38666666666668", cy: "86.63833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.815", cy: "81.82166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.76999999999998", cy: "86.63833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.955", cy: "86.65333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.85166666666666", cy: "101.17", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.81833333333333", cy: "120.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.47000000000003", cy: "81.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.14", cy: "86.65333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.91999999999996", cy: "81.79666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.21999999999997", cy: "76.94500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.11333333333334", cy: "328.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.28166666666667", cy: "81.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.13", cy: "125.32666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.48166666666665", cy: "72.12833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.1966666666667", cy: "76.965", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.58833333333334", cy: "86.63833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.885", cy: "81.80333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "262.835", cy: "76.96", r: "3.6" } }), + _c("circle", { + attrs: { cx: "271.215", cy: "255.8216666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "271.195", cy: "275.185", r: "3.6" } }), + _c("circle", { + attrs: { cx: "271.22499999999997", cy: "265.5033333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.46833333333333", cy: "130.16166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.4733333333333", cy: "279.99833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.4733333333333", cy: "299.33833333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.815", cy: "323.50666666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "287.815", cy: "313.84", r: "3.6" } }), + _c("circle", { + attrs: { cx: "279.49499999999995", cy: "309.0083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.4733333333333", cy: "289.66833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.80166666666665", cy: "163.98833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.61833333333334", cy: "173.6583333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "171.5", cy: "159.16", r: "3.6" } }), + _c("circle", { + attrs: { cx: "171.46833333333333", cy: "139.83166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.41666666666666", cy: "173.6583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.41666666666666", cy: "183.32833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.4433333333333", cy: "193.00666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.1", cy: "168.82333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.66833333333332", cy: "81.81833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.28333333333333", cy: "130.16166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.57500000000002", cy: "134.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.50666666666666", cy: "120.47500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.20666666666668", cy: "125.31333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.875", cy: "130.14666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.57499999999996", cy: "144.65333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.89499999999998", cy: "149.48499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.94500000000002", cy: "134.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.28333333333333", cy: "139.83166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.50333333333333", cy: "139.81666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.135", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.50333333333333", cy: "130.14666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.20666666666668", cy: "134.98333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.43", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.795", cy: "134.98333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.795", cy: "125.31333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.22833333333332", cy: "154.315", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.20666666666668", cy: "144.65", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.875", cy: "139.81666666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.875", cy: "120.47666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.21", cy: "115.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.8", cy: "115.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.57500000000002", cy: "125.31666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.51166666666668", cy: "110.80833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.67166666666665", cy: "120.49166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.67", cy: "130.16166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.28666666666666", cy: "120.49333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.94500000000002", cy: "125.32666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.72499999999997", cy: "130.13", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.755", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.135", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.44", cy: "144.64333333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "262.795", cy: "144.65", r: "3.6" } }), + _c("circle", { + attrs: { cx: "279.43", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.0516666666667", cy: "134.98", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.1383333333333", cy: "120.47500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.51333333333332", cy: "149.47833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "121.65333333333332", cy: "62.47666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.13500000000002", cy: "28.60166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.63", cy: "43.126666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.41333333333333", cy: "43.12166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.04666666666665", cy: "43.10166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "129.945", cy: "57.633333333333326", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.76500000000004", cy: "304.1683333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.91", cy: "178.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "295.99499999999995", cy: "28.588333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.53999999999996", cy: "18.93666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.225", cy: "43.12166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "105.07333333333334", cy: "81.82166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "121.63166666666666", cy: "72.16833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.54333333333332", cy: "38.263333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.08", cy: "497.58500000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.92166666666665", cy: "197.86", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "105.01333333333334", cy: "52.80833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "80.14833333333333", cy: "86.63833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "71.80166666666666", cy: "91.49000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.725", cy: "425.0466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.85666666666665", cy: "91.46999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.67", cy: "139.83166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.805", cy: "265.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.82666666666665", cy: "110.82333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.3066666666667", cy: "91.45666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.375", cy: "275.1716666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.365", cy: "284.8433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.38", cy: "115.64666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.3666666666667", cy: "294.5133333333334", r: "3.6" } + }), + _c("circle", { attrs: { cx: "221.335", cy: "178.51", r: "3.6" } }), + _c("circle", { + attrs: { cx: "154.83833333333334", cy: "62.47666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.47", cy: "197.84333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.02833333333336", cy: "371.8633333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.545", cy: "57.63333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.84166666666664", cy: "33.43833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.72", cy: "434.7166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.03833333333336", cy: "381.53999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.06499999999997", cy: "110.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.67666666666665", cy: "110.82333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.885", cy: "101.13999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.45", cy: "105.95166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.72999999999996", cy: "110.79333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.0066666666667", cy: "105.94", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "295.97499999999997", cy: "96.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.21666666666667", cy: "96.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.51333333333332", cy: "91.47333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.805", cy: "96.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.15", cy: "91.46833333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "279.46", cy: "96.29", r: "3.6" } }), + _c("circle", { attrs: { cx: "320.9", cy: "130.165", r: "3.6" } }), + _c("circle", { attrs: { cx: "312.69", cy: "270.325", r: "3.6" } }), + _c("circle", { + attrs: { cx: "329.22999999999996", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.4166666666667", cy: "265.5133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.33000000000004", cy: "101.13666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.3283333333334", cy: "110.80499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.32166666666666", cy: "120.47166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.58000000000004", cy: "125.31333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.29333333333332", cy: "101.15333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.06000000000003", cy: "130.14666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.58833333333334", cy: "105.97666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.06000000000003", cy: "139.8166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.06000000000003", cy: "120.47666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.98499999999999", cy: "173.67333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.98499999999999", cy: "164.00333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.39666666666665", cy: "154.31833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.765", cy: "115.64666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.69999999999996", cy: "159.17333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.08", cy: "149.48499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.67999999999998", cy: "101.15333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.38666666666668", cy: "105.97666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "212.955", cy: "105.99", r: "3.6" } }), + _c("circle", { + attrs: { cx: "296.13", cy: "260.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.4766666666667", cy: "110.82000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.48000000000002", cy: "101.15333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.76999999999998", cy: "105.97666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.06999999999996", cy: "101.13999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.02833333333336", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.72499999999997", cy: "120.46333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.43499999999995", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.035", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.33", cy: "130.1483333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.94499999999996", cy: "144.66666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.51333333333332", cy: "101.13999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.14166666666665", cy: "110.80166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.805", cy: "105.97333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.145", cy: "101.13666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.59666666666666", cy: "154.31833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.21666666666667", cy: "105.97333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.915", cy: "159.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.25", cy: "163.98666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.29333333333332", cy: "149.50666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.5333333333334", cy: "159.16", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.145", cy: "149.48666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.81500000000005", cy: "154.315", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.41833333333335", cy: "255.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.5533333333333", cy: "168.83", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.32500000000002", cy: "168.83333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.965", cy: "154.33499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.61833333333334", cy: "163.98833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.31500000000003", cy: "159.16", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.915", cy: "168.82333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.8666666666667", cy: "164.00333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.18", cy: "159.14833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.88", cy: "110.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.56333333333336", cy: "178.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.25", cy: "173.65666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.29166666666666", cy: "110.82", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "213.01500000000001", cy: "183.36166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.95000000000002", cy: "115.65666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.58166666666668", cy: "115.64666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.37666666666667", cy: "144.65333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.37666666666667", cy: "125.31666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.67999999999998", cy: "149.49499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.37666666666667", cy: "134.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.81000000000003", cy: "72.16000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.1566666666667", cy: "386.35833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.82500000000005", cy: "362.19000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.135", cy: "376.68833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.81500000000005", cy: "371.8533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.855", cy: "391.1933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.46999999999997", cy: "458.87833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.46000000000004", cy: "449.21666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.16833333333335", cy: "434.70666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.845", cy: "429.8666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.55666666666664", cy: "304.18", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.885", cy: "328.3566666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.83500000000004", cy: "352.5133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.5816666666667", cy: "323.53000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.225", cy: "309.03000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.57833333333338", cy: "313.8616666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.52500000000003", cy: "347.68333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.22499999999997", cy: "342.8633333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.875", cy: "338.0316666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.13666666666666", cy: "444.39166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.24666666666667", cy: "381.53333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.50500000000005", cy: "367.0333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.2266666666667", cy: "371.8633333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.9549999999999", cy: "386.35833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "379.115", cy: "328.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "379.125", cy: "338.02333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.82500000000005", cy: "342.8633333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.83500000000004", cy: "352.52666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.84", cy: "362.19666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.69", cy: "410.54333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.65999999999997", cy: "400.86000000000007", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.36999999999995", cy: "434.70666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.47166666666664", cy: "478.23999999999995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.49", cy: "468.55833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.8233333333333", cy: "483.06333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.36499999999995", cy: "425.0433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.13666666666666", cy: "463.715", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.36", cy: "415.36666666666673", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.9766666666667", cy: "396.02833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.025", cy: "52.79666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.73", cy: "57.63333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.245", cy: "62.46333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.34333333333333", cy: "57.63333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.4383333333333", cy: "52.81166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.245", cy: "52.79666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.545", cy: "47.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.10000000000002", cy: "57.64666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.83833333333334", cy: "52.81166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.63666666666666", cy: "52.81166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.76500000000004", cy: "47.96333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.465", cy: "43.12833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.13666666666666", cy: "38.31166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.915", cy: "57.64666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.105", cy: "52.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.84333333333333", cy: "52.796666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.25", cy: "52.81166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.545", cy: "57.63333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.47", cy: "207.51166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.45833333333334", cy: "221.99499999999998", r: "3.6" } + }), + _c("circle", { attrs: { cx: "204.75", cy: "226.84", r: "3.6" } }), + _c("circle", { + attrs: { cx: "188.12", cy: "217.16666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.82166666666663", cy: "212.33666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.53833333333333", cy: "294.5116666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.69000000000003", cy: "241.34500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.29000000000005", cy: "260.68833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "213.025", cy: "231.68500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.545", cy: "67.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.38", cy: "236.51166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.48499999999999", cy: "188.1933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.59833333333333", cy: "154.31833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.295", cy: "159.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.255", cy: "139.81666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.57833333333335", cy: "144.65333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.61833333333334", cy: "163.98833333333334", r: "3.6" } + }), + _c("circle", { attrs: { cx: "163.16", cy: "183.35", r: "3.6" } }), + _c("circle", { + attrs: { cx: "146.58666666666667", cy: "173.67499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.8166666666667", cy: "222.01", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.68500000000003", cy: "251.005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.19333333333336", cy: "299.3533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "213.035", cy: "241.36166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.35500000000002", cy: "246.205", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.995", cy: "255.83333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.87", cy: "347.6983333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "271.205", cy: "352.545", r: "3.6" } }), + _c("circle", { + attrs: { cx: "254.57333333333335", cy: "333.1933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.23499999999999", cy: "318.69", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.47", cy: "217.18166666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.57833333333332", cy: "183.34166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.60666666666665", cy: "192.98", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.29500000000002", cy: "168.82333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.53", cy: "357.35166666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.74", cy: "236.53999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.42666666666665", cy: "231.69000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.4083333333333", cy: "57.623333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.12", cy: "226.84666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "379.155", cy: "367.0183333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.84999999999997", cy: "371.86999999999995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.26500000000001", cy: "149.49", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.535", cy: "376.72166666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.28999999999996", cy: "391.2033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.29", cy: "400.8733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "379.15500000000003", cy: "357.3500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "387.47333333333336", cy: "333.1766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "387.47333333333336", cy: "323.50666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "379.15000000000003", cy: "347.68", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.40000000000003", cy: "492.71166666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.44666666666666", cy: "487.8966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.14666666666665", cy: "473.37833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.105", cy: "454.03833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.845", cy: "439.5366666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.82500000000005", cy: "381.53000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.78166666666664", cy: "492.7183333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.7183333333333", cy: "420.19833333333327", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.9933333333334", cy: "405.70666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "105.01833333333333", cy: "62.471666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.01000000000005", cy: "38.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.51500000000004", cy: "38.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "320.8433333333333", cy: "23.796666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.65999999999997", cy: "33.446666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.105", cy: "43.116666666666674", r: "3.6" } + }), + _c("circle", { attrs: { cx: "262.785", cy: "38.275", r: "3.6" } }), + _c("circle", { + attrs: { cx: "254.465", cy: "33.446666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.265", cy: "72.15833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.80833333333337", cy: "33.46", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.17", cy: "28.60166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.18666666666667", cy: "304.1716666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.46166666666664", cy: "309.02500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.4983333333334", cy: "33.425000000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "387.47333333333336", cy: "313.84", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "379.1133333333333", cy: "308.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.81333333333333", cy: "38.26333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.10666666666674", cy: "43.123333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.15000000000003", cy: "101.13666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.4083333333333", cy: "47.94166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "96.70166666666667", cy: "67.27999999999999", r: "3.6" } + }), + _c("circle", { attrs: { cx: "88.395", cy: "72.14", r: "3.6" } }), + _c("circle", { + attrs: { cx: "379.1133333333334", cy: "318.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "88.46499999999999", cy: "81.81666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "113.31500000000001", cy: "57.64666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "129.945", cy: "67.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "113.31500000000001", cy: "67.31333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "105.04833333333333", cy: "72.14333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "96.75333333333333", cy: "76.96833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.34333333333333", cy: "47.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.73", cy: "47.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.10000000000002", cy: "47.97666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.55499999999998", cy: "47.961666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "121.62166666666666", cy: "52.79500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.915", cy: "47.97666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "129.935", cy: "47.96000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "138.235", cy: "43.120000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.84833333333333", cy: "43.13666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.82", cy: "333.19166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.91333333333336", cy: "318.6766666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "337.595", cy: "313.84", r: "3.6" } }), + _c("circle", { + attrs: { cx: "354.2066666666667", cy: "323.5216666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.48499999999996", cy: "328.3566666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.58500000000004", cy: "294.4866666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.52", cy: "101.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.7833333333333", cy: "115.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.07", cy: "400.8733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.52", cy: "91.45333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "337.575", cy: "304.175", r: "3.6" } }), + _c("circle", { + attrs: { cx: "337.6166666666667", cy: "371.8533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.32", cy: "376.68833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.34000000000003", cy: "386.3583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.06", cy: "391.19666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.22166666666664", cy: "352.53333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.21166666666664", cy: "342.85833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.935", cy: "357.34999999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.6166666666667", cy: "362.18333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.20666666666665", cy: "333.19166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "229.545", cy: "67.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.25", cy: "62.47666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "212.915", cy: "67.31333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "237.84333333333336", cy: "62.46333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "246.17666666666665", cy: "57.63", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "204.63666666666666", cy: "62.47666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.73", cy: "67.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.025", cy: "62.46333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.34333333333333", cy: "67.29833333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "345.875", cy: "86.62", r: "3.6" } }), + _c("circle", { + attrs: { cx: "246.14666666666665", cy: "47.94666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.47", cy: "52.771666666666675", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "295.96666666666664", cy: "57.63499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.81333333333333", cy: "57.626666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.28000000000003", cy: "62.47833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.4383333333333", cy: "62.47666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.115", cy: "62.46666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.76500000000004", cy: "57.63", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.47000000000003", cy: "52.79666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.89", cy: "260.66999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.29666666666665", cy: "217.18333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.47500000000002", cy: "202.66333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.12", cy: "197.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.17999999999995", cy: "284.84333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.18", cy: "294.5133333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.87666666666667", cy: "270.3433333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "188.11", cy: "188.16", r: "3.6" } }), + _c("circle", { + attrs: { cx: "262.83500000000004", cy: "280.0083333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.1", cy: "178.49333333333334", r: "3.6" } + }), + _c("circle", { attrs: { cx: "163.15", cy: "154.335", r: "3.6" } }), + _c("circle", { attrs: { cx: "271.19", cy: "304.19", r: "3.6" } }), + _c("circle", { + attrs: { cx: "163.13", cy: "134.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.84666666666666", cy: "130.14666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.13", cy: "144.66666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.80166666666665", cy: "173.6583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.17", cy: "164.00333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.51", cy: "168.83333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.815", cy: "333.1766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.73", cy: "396.04333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.69", cy: "376.7033333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "312.71", cy: "386.375", r: "3.6" } }), + _c("circle", { + attrs: { cx: "304.46999999999997", cy: "410.5433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.47", cy: "400.8733333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.73", cy: "415.38000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.17833333333334", cy: "405.69666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.4683333333333", cy: "420.21333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.17833333333334", cy: "415.36666666666673", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.51500000000004", cy: "328.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.11333333333334", cy: "338.01666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.73", cy: "405.7133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.21", cy: "313.84666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.51499999999993", cy: "318.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.42333333333335", cy: "352.5333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.4133333333333", cy: "342.8583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.42833333333334", cy: "362.19666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.69", cy: "367.0333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.43833333333333", cy: "381.52833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.6383333333333", cy: "381.52500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.935", cy: "376.68833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.65999999999997", cy: "391.1933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.36", cy: "396.02833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.93499999999995", cy: "367.01833333333326", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.50500000000005", cy: "357.3666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.36", cy: "405.6966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.49499999999995", cy: "347.695", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.2266666666667", cy: "362.19666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.07000000000005", cy: "410.54333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.78", cy: "454.05333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.74999999999994", cy: "444.40333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.105", cy: "468.54999999999995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.7916666666667", cy: "473.41166666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.77", cy: "463.70666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.0683333333334", cy: "420.21000000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.0683333333333", cy: "439.5566666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "321.06", cy: "429.8833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "362.48499999999996", cy: "338.0266666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "329.16999999999996", cy: "38.276666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "337.47", cy: "43.11500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.7966666666667", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.85833333333335", cy: "96.27666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.10666666666674", cy: "52.79333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.29833333333335", cy: "52.798333333333325", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "295.995", cy: "47.913333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "312.57", cy: "47.97666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "320.895", cy: "43.125", r: "3.6" } }), + _c("circle", { + attrs: { cx: "362.48499999999996", cy: "318.69", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.8066666666667", cy: "105.97500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.525", cy: "96.30833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.82", cy: "323.52166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.1966666666667", cy: "313.85833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "370.81", cy: "313.84666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "354.1466666666667", cy: "110.80499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.10000000000002", cy: "67.31333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.89333333333326", cy: "299.32666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "345.89333333333326", cy: "309.0083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "196.47500000000002", cy: "212.33333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "188.12", cy: "207.49666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.82166666666663", cy: "202.66666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.8116666666667", cy: "192.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "221.32833333333335", cy: "226.83666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "238.02666666666667", cy: "236.4983333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.53", cy: "284.8466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.845", cy: "289.68333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "254.59500000000003", cy: "265.5183333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "179.80166666666665", cy: "183.32833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.87", cy: "139.83166666666665", r: "3.6" } + }), + _c("circle", { attrs: { cx: "154.88", cy: "149.495", r: "3.6" } }), + _c("circle", { + attrs: { cx: "154.9", cy: "159.17333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.46", cy: "439.5516666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "171.51", cy: "178.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.845", cy: "299.3533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "163.17", cy: "173.67333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "154.91", cy: "168.83333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "146.54666666666665", cy: "134.97", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.17833333333334", cy: "396.02833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.4283333333333", cy: "371.8633333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.4583333333333", cy: "391.2083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.695", cy: "52.776666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.855", cy: "400.85999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.855", cy: "410.52666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "304.46166666666664", cy: "429.87999999999994", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.175", cy: "425.0366666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.85333333333335", cy: "420.195", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.21999999999997", cy: "333.19166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.865", cy: "309.02500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "271.22", cy: "323.5216666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "279.51499999999993", cy: "338.01666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "262.885", cy: "318.69000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.135", cy: "367.0183333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.135", cy: "357.34999999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "296.125", cy: "347.6816666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "287.82500000000005", cy: "342.84499999999997", r: "3.6" } + }), + _c("circle", { attrs: { cx: "412.455", cy: "492.73", r: "3.6" } }), + _c("circle", { + attrs: { cx: "420.52500000000003", cy: "33.45666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "428.81500000000005", cy: "28.60833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "403.91499999999996", cy: "52.79333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "403.91", cy: "43.12499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "428.8149999999999", cy: "18.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "412.195", cy: "38.29333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "387.27500000000003", cy: "52.776666666666664", r: "3.6" } + }), + _c("circle", { attrs: { cx: "395.57", cy: "28.625", r: "3.6" } }), + _c("circle", { + attrs: { cx: "420.52", cy: "23.78333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "403.8933333333334", cy: "23.78333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "412.185", cy: "18.953333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "395.59", cy: "47.93000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "412.205", cy: "9.261666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "428.81333333333333", cy: "9.258333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "445.41166666666663", cy: "9.235", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "461.9866666666667", cy: "9.261666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "395.6000000000001", cy: "67.31", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "453.7033333333334", cy: "43.14833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "395.555", cy: "38.281666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "412.185", cy: "28.623333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "403.90000000000003", cy: "33.45", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "445.4116666666667", cy: "18.938333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "437.1133333333333", cy: "23.77333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "453.7050000000001", cy: "23.78333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "395.62000000000006", cy: "57.61666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "403.925", cy: "62.468333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "428.845", cy: "47.95333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "420.55", cy: "52.79833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "412.23499999999996", cy: "57.64666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "387.27500000000003", cy: "62.44666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "387.25500000000005", cy: "23.77333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "445.4216666666666", cy: "38.278333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.3200000000001", cy: "23.786666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.60999999999996", cy: "9.263333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "395.57", cy: "18.919999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "437.165", cy: "43.12833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "462.0316666666667", cy: "38.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "428.825", cy: "38.27666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "445.41166666666663", cy: "28.60833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "437.1233333333333", cy: "33.443333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "453.71166666666676", cy: "33.45", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "461.99666666666667", cy: "28.641666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "412.205", cy: "47.96333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "420.535", cy: "43.12", r: "3.6" } }), + _c("circle", { + attrs: { cx: "420.52", cy: "14.116666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "437.1133333333333", cy: "14.103333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "403.8833333333334", cy: "14.11166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "453.705", cy: "14.116666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "461.965", cy: "18.95333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.31500000000005", cy: "14.123333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.305", cy: "62.48500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "461.99666666666667", cy: "57.61166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.62999999999994", cy: "57.61166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "486.99999999999994", cy: "101.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.54999999999995", cy: "81.80333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.5416666666667", cy: "101.145", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.905", cy: "96.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.5416666666667", cy: "91.46833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.4785714285714", cy: "18.662857142857142", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.6916666666666", cy: "18.958333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.3666666666667", cy: "14.098333333333331", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "568.995", cy: "14.086666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4699999999999", cy: "159.13666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.495", cy: "9.266666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.0899999999999", cy: "9.253333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7216666666667", cy: "38.275", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.37", cy: "33.428333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "651.9716666666667", cy: "23.776666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.685", cy: "28.58666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.2633333333334", cy: "18.908333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4133333333333", cy: "357.325", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.11", cy: "381.5383333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.08", cy: "362.1816666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.7133333333333", cy: "342.83", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.745", cy: "352.4916666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.08", cy: "371.8516666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4533333333334", cy: "367.00666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4533333333334", cy: "376.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "710.5749999999999", cy: "9.26", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4266666666667", cy: "14.11", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0166666666668", cy: "23.773333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.58", cy: "105.95833333333336", r: "3.6" } + }), + _c("circle", { attrs: { cx: "859.58", cy: "96.29", r: "3.6" } }), + _c("circle", { + attrs: { cx: "859.5749999999999", cy: "115.62833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.58", cy: "86.62333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9350000000001", cy: "144.65", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.2783333333333", cy: "120.47500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6599999999999", cy: "149.475", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.275", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.275", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.2866666666667", cy: "91.47000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.11", cy: "86.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4383333333334", cy: "81.79666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7400000000001", cy: "86.62333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5283333333334", cy: "221.98833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.66", cy: "91.46999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0366666666667", cy: "91.45333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9466666666666", cy: "86.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3683333333333", cy: "86.62333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8216666666667", cy: "81.80833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6533333333333", cy: "159.14666666666668", r: "3.6" } + }), + _c("circle", { attrs: { cx: "743.305", cy: "154.315", r: "3.6" } }), + _c("circle", { attrs: { cx: "735.035", cy: "149.475", r: "3.6" } }), + _c("circle", { + attrs: { cx: "759.9583333333334", cy: "163.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7283333333334", cy: "144.63666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.255", cy: "159.13666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.7887499999999", cy: "134.96375", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4266666666666", cy: "139.79666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5499999999998", cy: "154.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.07", cy: "159.13666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.75", cy: "154.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.4", cy: "163.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.69", cy: "168.82166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4466666666667", cy: "149.48666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.68", cy: "159.15833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8333333333334", cy: "149.475", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.1183333333333", cy: "154.315", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7333333333333", cy: "105.95666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7283333333334", cy: "115.62666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "702.13875", cy: "139.7975", r: "3.6" } }), + _c("circle", { + attrs: { cx: "552.4266666666666", cy: "139.79666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.725", cy: "96.28166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7133333333334", cy: "125.30166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.255", cy: "101.12166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3516666666666", cy: "86.60166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9633333333334", cy: "96.27666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.66", cy: "91.43666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.2133333333334", cy: "168.8216666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.235", cy: "207.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.895", cy: "212.33333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.235", cy: "217.16333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.1883333333334", cy: "159.13166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.23", cy: "197.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.515", cy: "96.28666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.2133333333334", cy: "178.49", r: "3.6" } + }), + _c("circle", { attrs: { cx: "520.22", cy: "188.16", r: "3.6" } }), + _c("circle", { + attrs: { cx: "718.44", cy: "81.78666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.225", cy: "81.78666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7199999999999", cy: "76.95666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "710.1442857142857", cy: "77.23285714285716", r: "3.6" } + }), + _c("circle", { attrs: { cx: "702.14125", cy: "81.78125", r: "3.6" } }), + _c("circle", { attrs: { cx: "743.275", cy: "76.965", r: "3.6" } }), + _c("circle", { + attrs: { cx: "759.9050000000001", cy: "76.95666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.0016666666667", cy: "72.125", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6", cy: "72.13666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "693.48", cy: "86.62", r: "3.6" } }), + _c("circle", { + attrs: { cx: "685.2033333333334", cy: "91.45166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4449999999999", cy: "101.10666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3566666666667", cy: "144.63666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.855", cy: "101.12166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1483333333333", cy: "105.94666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7633333333333", cy: "105.94666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.91", cy: "96.27666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3383333333334", cy: "96.27666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.595", cy: "101.10666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.54", cy: "86.62333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.2033333333334", cy: "101.12166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "702.1487500000001", cy: "91.45375000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.48", cy: "96.28666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.91", cy: "105.94666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.0233333333332", cy: "81.80833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.59", cy: "110.77500000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7416666666667", cy: "86.62333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.295", cy: "86.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.7987499999999", cy: "86.62", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.44", cy: "91.45333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8516666666666", cy: "110.79", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.14", cy: "115.61833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.515", cy: "105.95666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2516666666667", cy: "110.79333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9616666666667", cy: "105.94666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4399999999999", cy: "110.77666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3383333333334", cy: "105.94666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.76", cy: "115.61666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "652.015", cy: "110.79", r: "3.6" } }), + _c("circle", { + attrs: { cx: "851.2866666666667", cy: "101.13666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9466666666666", cy: "96.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.66", cy: "101.13666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.2816666666666", cy: "110.80166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3683333333333", cy: "96.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9350000000001", cy: "134.98333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.65", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.935", cy: "125.31333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9416666666666", cy: "115.64333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.11", cy: "96.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.225", cy: "91.45333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0366666666667", cy: "101.12333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "776.54", cy: "96.29", r: "3.6" } }), + _c("circle", { + attrs: { cx: "759.9250000000001", cy: "86.62333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8316666666666", cy: "91.46999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7400000000001", cy: "96.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4483333333333", cy: "91.47000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.62", cy: "81.79666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3616666666667", cy: "96.27666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3483333333334", cy: "255.82333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.9499999999999", cy: "246.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.61", cy: "250.99333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.25", cy: "241.30166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.485", cy: "197.80166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4583333333333", cy: "250.97833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4583333333333", cy: "260.6466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.055", cy: "260.6466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.7299999999999", cy: "265.4733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0516666666666", cy: "168.79999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9200000000001", cy: "154.28833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.8033333333333", cy: "192.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.2033333333334", cy: "149.45833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3683333333333", cy: "163.95833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.625", cy: "159.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0616666666666", cy: "188.14", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4583333333334", cy: "241.3083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0516666666666", cy: "178.47", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5083333333334", cy: "173.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.0616666666666", cy: "120.46333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.0683333333333", cy: "110.78999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.0300000000001", cy: "130.145", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5083333333334", cy: "163.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.66", cy: "101.10666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.07", cy: "101.12166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.4699999999999", cy: "144.63333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1533333333333", cy: "236.47666666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "569.04", cy: "91.435", r: "3.6" } }), + _c("circle", { + attrs: { cx: "552.4833333333333", cy: "226.81333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.825", cy: "217.15333333333334", r: "3.6" } + }), + _c("circle", { attrs: { cx: "544.995", cy: "221.98625", r: "3.6" } }), + _c("circle", { + attrs: { cx: "560.8050000000001", cy: "231.655", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5083333333334", cy: "183.30999999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5183333333333", cy: "192.98", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5283333333334", cy: "202.64833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5283333333334", cy: "212.3183333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0200000000001", cy: "101.12", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4200000000001", cy: "101.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3366666666667", cy: "76.94166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4200000000001", cy: "110.79333333333334", r: "3.6" } + }), + _c("circle", { attrs: { cx: "585.66", cy: "81.77", r: "3.6" } }), + _c("circle", { attrs: { cx: "610.515", cy: "86.62", r: "3.6" } }), + _c("circle", { + attrs: { cx: "618.855", cy: "91.45166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9616666666667", cy: "86.60666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "551.9371428571429", cy: "120.73571428571428", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.255", cy: "91.45166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1483333333333", cy: "96.27666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.895", cy: "202.66333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.5557142857143", cy: "135.25285714285715", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.88499999999993", cy: "192.995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.61999999999995", cy: "217.16333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.62000000000006", cy: "207.49333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.875", cy: "183.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.86499999999995", cy: "163.98", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.875", cy: "173.65666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3383333333334", cy: "86.60666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "734.9916666666667", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.255", cy: "67.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.6983333333333", cy: "67.28666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4183333333334", cy: "72.115", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.8833333333332", cy: "67.28666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.2049999999999", cy: "72.115", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4449999999999", cy: "91.43666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.52", cy: "76.95666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.75875", cy: "67.28375000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.5900000000001", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.595", cy: "91.43666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0200000000001", cy: "91.45", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.32666666666665", cy: "221.98833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7633333333333", cy: "96.27666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.4583333333334", cy: "76.95500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "701.7585714285715", cy: "71.84285714285714", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1916666666666", cy: "81.78833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.91", cy: "86.60666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5533333333334", cy: "289.6666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "618.92", cy: "313.83", r: "3.6" } }), + _c("circle", { + attrs: { cx: "610.595", cy: "328.3433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.44", cy: "337.99833333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "610.575", cy: "309.005", r: "3.6" } }), + _c("circle", { + attrs: { cx: "610.595", cy: "318.67333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4499999999999", cy: "347.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0516666666667", cy: "347.6683333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0416666666667", cy: "337.99833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.34666666666664", cy: "231.6583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5533333333334", cy: "299.33666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.895", cy: "250.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.2399999999999", cy: "260.6466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.5366666666667", cy: "255.81000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7833333333333", cy: "231.645", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8016666666666", cy: "72.125", r: "3.6" } + }), + _c("circle", { attrs: { cx: "618.935", cy: "265.485", r: "3.6" } }), + _c("circle", { + attrs: { cx: "610.5533333333334", cy: "279.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5866666666667", cy: "270.32666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.335", cy: "333.17333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.15", cy: "333.17333333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "545.035", cy: "241.32375", r: "3.6" } }), + _c("circle", { + attrs: { cx: "536.865", cy: "236.48666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.5133333333334", cy: "246.15666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "511.915", cy: "231.67", r: "3.6" } }), + _c("circle", { + attrs: { cx: "503.6499999999999", cy: "236.50833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.245", cy: "226.83833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.825", cy: "250.99333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5500000000001", cy: "231.65833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.845", cy: "226.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4399999999999", cy: "318.65833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4399999999999", cy: "328.3283333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.825", cy: "260.66333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4", cy: "299.3233333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4", cy: "289.6566666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1216666666668", cy: "275.17", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4", cy: "279.9866666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.42", cy: "308.9883333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.8133333333334", cy: "202.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.0883333333335", cy: "76.965", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.2399999999999", cy: "250.97833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.475", cy: "207.46666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.475", cy: "217.13333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3333333333334", cy: "265.50166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.9499999999999", cy: "255.82333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3016666666666", cy: "275.1566666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2916666666666", cy: "284.83166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.61", cy: "260.66333333333336", r: "3.6" } + }), + _c("circle", { attrs: { cx: "668.625", cy: "168.79", r: "3.6" } }), + _c("circle", { + attrs: { cx: "676.94", cy: "163.95833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.2233333333334", cy: "159.13833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0716666666667", cy: "197.81000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.4899999999999", cy: "154.305", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4033333333333", cy: "192.96333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3783333333334", cy: "183.3033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3683333333333", cy: "173.6266666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.165", cy: "246.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.6949999999999", cy: "284.81666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1516666666665", cy: "265.485", r: "3.6" } + }), + _c("circle", { attrs: { cx: "577.425", cy: "270.32", r: "3.6" } }), + _c("circle", { + attrs: { cx: "585.6949999999999", cy: "275.1466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1649999999998", cy: "255.82333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.6685714285715", cy: "231.9285714285714", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "701.7900000000001", cy: "149.19285714285715", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.5033333333334", cy: "236.49166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.825", cy: "241.32333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3233333333334", cy: "313.8433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.335", cy: "323.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0416666666666", cy: "328.3283333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2916666666666", cy: "294.50166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3016666666666", cy: "304.165", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.6949999999999", cy: "294.4866666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.7183333333334", cy: "304.155", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.74", cy: "323.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.74", cy: "313.8233333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.5666666666667", cy: "246.12666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.875", cy: "101.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.7887499999999", cy: "144.63375000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.87", cy: "110.79333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1816666666667", cy: "76.97166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.8750000000001", cy: "81.78666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.57", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.2866666666667", cy: "149.48666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.57", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9583333333334", cy: "154.315", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.8650000000001", cy: "120.46333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0366666666667", cy: "81.78666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3466666666667", cy: "76.95666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7199999999999", cy: "76.95666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4150000000001", cy: "72.13666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6500000000001", cy: "81.80833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.2766666666668", cy: "81.79666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.56", cy: "76.95666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9250000000001", cy: "76.965", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.2066666666666", cy: "96.27333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6633333333333", cy: "168.82166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5699999999998", cy: "163.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.98", cy: "163.98666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.255", cy: "168.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9583333333334", cy: "173.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4483333333333", cy: "149.465", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7516666666667", cy: "154.30833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.055", cy: "159.15833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.3250000000002", cy: "163.98666666666668", r: "3.6" } + }), + _c("circle", { attrs: { cx: "834.69", cy: "178.49", r: "3.6" } }), + _c("circle", { + attrs: { cx: "826.4", cy: "173.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.98", cy: "173.65666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8533333333334", cy: "159.15833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.07", cy: "168.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.14", cy: "163.98666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7700000000001", cy: "163.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4699999999999", cy: "159.14666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "710.147142857143", cy: "115.89999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.295", cy: "105.97333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.035", cy: "101.13666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7416666666667", cy: "105.95833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4333333333333", cy: "110.79333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9250000000001", cy: "105.95833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5333333333333", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.2199999999999", cy: "110.79333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.7987499999999", cy: "105.9575", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6300000000001", cy: "101.13666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9", cy: "125.28333333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "618.855", cy: "149.47", r: "3.6" } }), + _c("circle", { + attrs: { cx: "602.3083333333333", cy: "207.48166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.92", cy: "207.48333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.015", cy: "202.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1966666666666", cy: "120.46", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.475", cy: "115.62666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "701.7971428571428", cy: "110.51857142857143", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8299999999999", cy: "110.80499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3800000000001", cy: "154.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5299999999999", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.215", cy: "130.13000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.915", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8249999999999", cy: "120.47166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6199999999999", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.735", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.1033333333334", cy: "115.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.0266666666666", cy: "120.47166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.285", cy: "125.31333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.0966666666667", cy: "125.31333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.025", cy: "120.46333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.735", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.445", cy: "110.80166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3616666666667", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.44", cy: "120.47499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.73", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3566666666666", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0250000000001", cy: "130.13000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.105", cy: "188.14499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2916666666666", cy: "188.13833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3033333333333", cy: "197.81499999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2716666666666", cy: "178.45333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8266666666667", cy: "168.80333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.7149999999999", cy: "207.46666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3083333333333", cy: "217.14999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.015", cy: "212.30333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5966666666667", cy: "202.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5666666666667", cy: "212.3166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9216666666666", cy: "154.295", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4683333333334", cy: "197.8166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4583333333334", cy: "188.14166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.13", cy: "144.61333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.765", cy: "183.30666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.785", cy: "202.64666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4250000000001", cy: "139.77833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4", cy: "154.28666666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "569.07", cy: "178.455", r: "3.6" } }), + _c("circle", { + attrs: { cx: "618.8466666666667", cy: "159.145", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.705", cy: "188.12666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4150000000001", cy: "202.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.7233333333332", cy: "178.4383333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4033333333334", cy: "192.9666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2316666666667", cy: "149.44333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2566666666667", cy: "159.16166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.7149999999999", cy: "197.7966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2033333333334", cy: "139.79000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.535", cy: "144.61666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.775", cy: "192.9766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.0316666666666", cy: "110.80499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.115", cy: "197.80833333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3933333333334", cy: "183.29666666666665", r: "3.6" } + }), + _c("circle", { attrs: { cx: "610.525", cy: "154.305", r: "3.6" } }), + _c("circle", { + attrs: { cx: "593.9933333333332", cy: "183.29666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.005", cy: "192.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3950000000001", cy: "173.61666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0416666666667", cy: "318.65833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.005", cy: "43.10166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.64", cy: "43.086666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1350000000001", cy: "38.24333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.225", cy: "43.10666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3083333333334", cy: "38.251666666666665", r: "3.6" } + }), + _c("circle", { attrs: { cx: "784.77", cy: "33.435", r: "3.6" } }), + _c("circle", { + attrs: { cx: "859.5400000000001", cy: "38.266666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.1383333333333", cy: "47.93666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9149999999998", cy: "38.27", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.3650000000001", cy: "33.434999999999995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.29", cy: "115.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.62", cy: "52.77666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.23", cy: "52.79333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.3216666666667", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.5050000000001", cy: "57.629999999999995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.5050000000001", cy: "67.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.23", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.8449999999999", cy: "52.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0750000000002", cy: "159.165", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.5450000000001", cy: "23.76166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.60166666666674", cy: "275.19", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.1816666666665", cy: "212.35833333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "569.16", cy: "420.2", r: "3.6" } }), + _c("circle", { + attrs: { cx: "768.3649999999999", cy: "265.5", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.8699999999999", cy: "101.15833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "975.7583333333332", cy: "57.63166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.995", cy: "309.0416666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.7533333333332", cy: "135.00166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.8216666666666", cy: "420.20666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.2750000000001", cy: "47.905", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "710.1014285714285", cy: "28.874285714285715", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.01499999999993", cy: "275.18833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "734.9583333333334", cy: "23.763333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.8283333333334", cy: "38.25", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3216666666666", cy: "38.25166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.425", cy: "52.741666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.495", cy: "47.92166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "925.9366666666666", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0183333333333", cy: "308.9883333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.12", cy: "207.48166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9983333333333", cy: "299.3233333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "585.75", cy: "342.83", r: "3.6" } }), + _c("circle", { + attrs: { cx: "593.9983333333333", cy: "279.9866666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.62999999999994", cy: "226.82666666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.895", cy: "222.0033333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "876.23", cy: "86.62", r: "3.6" } }), + _c("circle", { + attrs: { cx: "867.8750000000001", cy: "91.45333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9983333333333", cy: "289.6566666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6233333333333", cy: "120.47500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9200000000001", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0266666666668", cy: "270.31666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6283333333334", cy: "110.80166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.215", cy: "120.46333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6566666666666", cy: "110.80499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9466666666667", cy: "105.97333333333331", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.915", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.74", cy: "333.16333333333336", r: "3.6" } + }), + _c("circle", { attrs: { cx: "826.415", cy: "260.655", r: "3.6" } }), + _c("circle", { + attrs: { cx: "909.3666666666667", cy: "76.95333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.4000000000001", cy: "241.32666666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.41", cy: "251.0016666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.045", cy: "280.0133333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "760.04", cy: "241.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9783333333334", cy: "221.98833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "760.0099999999999", cy: "231.66166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.7516666666667", cy: "246.1716666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.8000000000001", cy: "270.3266666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.76", cy: "362.1666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.76", cy: "352.49666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.5799999999999", cy: "144.64333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.7416666666667", cy: "236.50833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.7216666666667", cy: "226.82666666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.5133333333334", cy: "265.49666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.73333333333335", cy: "231.65833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.585", cy: "130.11333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3583333333332", cy: "115.61666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3533333333332", cy: "125.28333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569", cy: "139.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3616666666667", cy: "105.94666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3533333333332", cy: "134.94833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5416666666666", cy: "115.64499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.2483333333333", cy: "120.46", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1233333333333", cy: "125.28000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9549999999999", cy: "115.61666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.6566666666666", cy: "110.77666666666669", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.825", cy: "207.48333333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "544.995", cy: "212.31625", r: "3.6" } }), + _c("circle", { + attrs: { cx: "536.825", cy: "197.81333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4733333333334", cy: "217.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.855", cy: "159.13000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.835", cy: "168.78833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.815", cy: "188.14499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.8050000000001", cy: "178.47333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.7987499999999", cy: "96.2875", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.035", cy: "91.46999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.295", cy: "96.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7416666666667", cy: "96.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.785", cy: "221.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.44", cy: "101.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.225", cy: "101.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4350000000001", cy: "120.44666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.54", cy: "105.95833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9250000000001", cy: "96.29", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6300000000001", cy: "91.47000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3316666666666", cy: "115.61666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0083333333333", cy: "120.46", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7533333333333", cy: "125.28333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.585", cy: "120.44666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9066666666666", cy: "115.61666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.48", cy: "105.95666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "702.1487500000001", cy: "101.12375", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.2016666666667", cy: "110.79166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3466666666667", cy: "154.28833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7283333333334", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.025", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "743.285", cy: "144.65", r: "3.6" } }), + _c("circle", { + attrs: { cx: "718.4266666666666", cy: "130.13000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.7887499999999", cy: "125.29625", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6300000000001", cy: "149.48666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.4699999999999", cy: "134.96333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1933333333333", cy: "139.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.13", cy: "226.82333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.0966666666667", cy: "144.65", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4366666666666", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9000000000001", cy: "144.61833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.73", cy: "144.63666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0483333333332", cy: "149.465", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5299999999999", cy: "144.63666666666668", r: "3.6" } + }), + _c("circle", { attrs: { cx: "768.235", cy: "149.465", r: "3.6" } }), + _c("circle", { + attrs: { cx: "759.9366666666666", cy: "154.30666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8216666666667", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "702.13875", cy: "130.13", r: "3.6" } }), + _c("circle", { + attrs: { cx: "585.755", cy: "255.80999999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.605", cy: "149.45499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3483333333334", cy: "246.1533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.9399999999999", cy: "236.47666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.61", cy: "241.32333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4366666666666", cy: "231.63833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.755", cy: "246.1433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.755", cy: "236.47333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.055", cy: "250.97833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7933333333333", cy: "173.6266666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7933333333333", cy: "163.95833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0516666666666", cy: "159.13000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8316666666666", cy: "101.13666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.485", cy: "188.12666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "627.185", cy: "192.97", r: "3.6" } }), + _c("circle", { + attrs: { cx: "643.7933333333333", cy: "183.29666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.25", cy: "231.63333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7533333333333", cy: "134.94833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.97125", cy: "183.30749999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3566666666667", cy: "144.62666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.6214285714285", cy: "173.91428571428574", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.7133333333333", cy: "139.78333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4616666666666", cy: "178.46833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5566666666667", cy: "125.30166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.055", cy: "241.3083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.6533333333333", cy: "120.44666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.6833333333333", cy: "130.13166666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "569.12", cy: "217.15", r: "3.6" } }), + _c("circle", { + attrs: { cx: "585.735", cy: "226.80499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.425", cy: "130.11999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4150000000001", cy: "221.97", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.6357142857142", cy: "193.25142857142856", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.035", cy: "231.63833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.9950000000001", cy: "202.64625", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.785", cy: "212.3166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4733333333334", cy: "207.48333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.975", cy: "125.29666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.92", cy: "217.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.18", cy: "173.62666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5466666666666", cy: "183.30666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4150000000001", cy: "212.30333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5816666666666", cy: "192.99", r: "3.6" } + }), + _c("circle", { attrs: { cx: "594.015", cy: "221.97", r: "3.6" } }), + _c("circle", { + attrs: { cx: "585.7149999999999", cy: "217.13333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3183333333335", cy: "226.8116666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5666666666667", cy: "221.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8566666666667", cy: "178.455", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0083333333333", cy: "139.79", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3249999999999", cy: "125.28333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.325", cy: "134.94833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.18", cy: "163.95833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0083333333333", cy: "130.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.16", cy: "154.28833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.455", cy: "149.45499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7533333333333", cy: "144.61833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.475", cy: "178.45666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.215", cy: "139.79666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5299999999999", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8216666666667", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.0966666666667", cy: "134.98333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7283333333334", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.285", cy: "134.98333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.025", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6199999999999", cy: "139.81333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.915", cy: "144.63666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4366666666666", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0299999999999", cy: "110.79333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3383333333335", cy: "236.48833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3683333333333", cy: "105.95833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4483333333333", cy: "101.13666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3566666666666", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.65", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.0250000000001", cy: "139.79666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.73", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6533333333333", cy: "120.47166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4266666666666", cy: "120.46333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.18", cy: "183.2966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.11", cy: "105.97333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.475", cy: "159.12333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.5883333333334", cy: "231.655", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7733333333333", cy: "154.28833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.92", cy: "226.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8916666666667", cy: "188.145", r: "3.6" } + }), + _c("circle", { attrs: { cx: "635.475", cy: "168.79", r: "3.6" } }), + _c("circle", { + attrs: { cx: "693.4699999999999", cy: "125.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0300000000001", cy: "149.46166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7833333333333", cy: "221.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1933333333333", cy: "130.1266666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "702.14", cy: "120.46374999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9000000000001", cy: "134.94833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.325", cy: "144.61833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.585", cy: "139.78333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7400000000001", cy: "105.95833333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "544.9325", cy: "289.66625", r: "3.6" } }), + _c("circle", { + attrs: { cx: "544.9549999999999", cy: "280.01", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.455", cy: "294.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.465", cy: "304.1683333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.6414285714287", cy: "270.6114285714286", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.0157142857142", cy: "313.57142857142856", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.275", cy: "255.84166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.57", cy: "260.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.84", cy: "265.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.9350000000001", cy: "260.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.2100000000002", cy: "400.8566666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1800000000002", cy: "381.5266666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1999999999999", cy: "391.185", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.8516666666668", cy: "396.02666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.83", cy: "367.01666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.6342857142856", cy: "347.95714285714286", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.0414285714287", cy: "352.79", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.5566666666667", cy: "139.81333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.82", cy: "376.6916666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.71000000000004", cy: "202.64833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.6466666666667", cy: "265.5183333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487", cy: "188.14499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.42", cy: "207.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.2716666666666", cy: "154.33333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.2633333333333", cy: "144.63666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.42", cy: "217.16333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "486.98", cy: "178.46833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487", cy: "168.78833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.695", cy: "192.9766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.75333333333333", cy: "260.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.0266666666667", cy: "265.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.36666666666673", cy: "260.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.43", cy: "226.83833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.43000000000006", cy: "255.86", r: "3.6" } + }), + _c("circle", { attrs: { cx: "462.09", cy: "231.665", r: "3.6" } }), + _c("circle", { + attrs: { cx: "462.11999999999995", cy: "241.33666666666662", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.46000000000004", cy: "246.17166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.5166666666668", cy: "362.18333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.48", cy: "188.14499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4000000000001", cy: "260.63000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.2483333333333", cy: "207.46666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "709.8325", cy: "183.3075", r: "3.6" } }), + _c("circle", { + attrs: { cx: "693.505", cy: "192.98499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.715", cy: "236.49166666666665", r: "3.6" } + }), + _c("circle", { attrs: { cx: "685.265", cy: "217.155", r: "3.6" } }), + _c("circle", { + attrs: { cx: "668.665", cy: "226.80499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9633333333334", cy: "221.97", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "701.83", cy: "187.87000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.685", cy: "236.51333333333332", r: "3.6" } + }), + _c("circle", { attrs: { cx: "743.335", cy: "222.01", r: "3.6" } }), + _c("circle", { + attrs: { cx: "751.695", cy: "226.83833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6650000000001", cy: "246.17166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7616666666667", cy: "202.665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.3449999999999", cy: "212.33333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7816666666668", cy: "192.97833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.085", cy: "207.4933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4050000000001", cy: "270.32500000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.655", cy: "386.3666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.615", cy: "376.68666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.615", cy: "367.01666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.3850000000001", cy: "391.1966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.5016666666667", cy: "405.6783333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.9633333333334", cy: "362.18666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.8000000000001", cy: "410.5133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.1016666666667", cy: "396.0133333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "569.18", cy: "410.54", r: "3.6" } }), + _c("circle", { + attrs: { cx: "594.125", cy: "405.6933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4833333333332", cy: "284.81666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7983333333333", cy: "279.9866666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.5133333333332", cy: "294.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0550000000001", cy: "275.16", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.59", cy: "342.82666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.5849999999999", cy: "333.16333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.2383333333333", cy: "347.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.9483333333334", cy: "352.51", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.42", cy: "212.3183333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.6899999999999", cy: "57.63", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.4616666666666", cy: "139.8133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0300000000001", cy: "52.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.43", cy: "52.79333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.3316666666666", cy: "67.29333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0750000000002", cy: "101.135", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.7233333333334", cy: "125.31333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.7283333333334", cy: "115.64333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0683333333333", cy: "110.80166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1383333333333", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3250000000002", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.8350000000002", cy: "52.77666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.62", cy: "52.79333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.6999999999999", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "817.995", cy: "52.77666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9049999999999", cy: "47.96333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.5400000000001", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.245", cy: "52.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9166666666666", cy: "188.14499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.2599999999999", cy: "163.97333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.42", cy: "221.98833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.41", cy: "231.67499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.7566666666667", cy: "265.52", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7800000000001", cy: "192.98000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.42", cy: "202.6483333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.0300000000001", cy: "251.01166666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "801.485", cy: "188.16", r: "3.6" } }), + _c("circle", { + attrs: { cx: "818.09", cy: "197.81333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "760.0400000000001", cy: "250.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4000000000001", cy: "43.120000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.6199999999999", cy: "192.98000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9066666666668", cy: "178.47333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9066666666668", cy: "168.80666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.335", cy: "197.81999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.0500000000001", cy: "231.65166666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.04", cy: "241.33666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.3400000000001", cy: "207.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.47", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9216666666666", cy: "57.59833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.03", cy: "52.77333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3216666666667", cy: "47.928333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.215", cy: "62.443333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.62", cy: "52.76333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1083333333333", cy: "67.26833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.405", cy: "62.43333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8149999999999", cy: "62.443333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.475", cy: "57.613333333333344", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.4599999999999", cy: "76.965", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7233333333334", cy: "67.26833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.825", cy: "125.32000000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7233333333332", cy: "57.63166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.1733333333333", cy: "120.47500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.465", cy: "105.95333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.3866666666667", cy: "62.451666666666675", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.7516666666667", cy: "72.115", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.9012500000001", cy: "67.28375", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.3949999999999", cy: "43.10999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.5749999999999", cy: "33.45666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.2433333333333", cy: "38.29333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "734.9766666666666", cy: "33.45", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.8733333333333", cy: "38.276666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.1833333333334", cy: "43.10999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.785", cy: "43.12500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.6883333333334", cy: "38.27833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.4983333333333", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { attrs: { cx: "702.10375", cy: "43.1075", r: "3.6" } }), + _c("circle", { + attrs: { cx: "676.8683333333332", cy: "57.59833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.5533333333334", cy: "62.43333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.295", cy: "57.598333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.0649999999999", cy: "47.96333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1616666666667", cy: "52.77333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "710.1085714285715", cy: "38.55142857142857", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "651.9783333333334", cy: "62.44", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.4366666666666", cy: "47.94333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.09", cy: "217.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.405", cy: "400.8616666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.155", cy: "415.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.715", cy: "396.02666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.5016666666667", cy: "415.3483333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.6385714285715", cy: "357.62142857142857", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.97", cy: "381.52333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.8516666666666", cy: "405.6933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9983333333333", cy: "231.64833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.82", cy: "386.3616666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.605", cy: "352.49666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.7366666666666", cy: "265.4816666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.39", cy: "279.9866666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.7366666666666", cy: "255.80499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.97", cy: "371.8533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0849999999999", cy: "284.8466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.8149999999999", cy: "289.665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.2566666666667", cy: "357.3433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.135", cy: "309.01166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.5166666666668", cy: "371.8533333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "544.9325", cy: "299.33625", r: "3.6" } }), + _c("circle", { + attrs: { cx: "462.05999999999995", cy: "222.0033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "462.06", cy: "202.66333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "453.7966666666667", cy: "236.51", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "486.94000000000005", cy: "149.47166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "453.8066666666667", cy: "246.17333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "486.9283333333333", cy: "139.79666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.39000000000004", cy: "197.80499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.675", cy: "183.30666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "462.05999999999995", cy: "212.33333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.5300000000001", cy: "270.33833333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.9550000000001", cy: "270.3683333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.2616666666667", cy: "265.50333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "536.8", cy: "275.17", r: "3.6" } }), + _c("circle", { + attrs: { cx: "470.385", cy: "265.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "462.1116666666667", cy: "251.01166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.7166666666667", cy: "270.33833333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.34", cy: "270.33333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.335", cy: "304.18666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.285", cy: "202.64666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.5266666666666", cy: "188.155", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9566666666666", cy: "207.50166666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.285", cy: "226.8116666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6733333333335", cy: "294.51666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.25499999999994", cy: "134.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.7433333333333", cy: "154.305", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.69", cy: "241.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.69", cy: "250.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.535", cy: "96.31166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.1483333333332", cy: "57.623333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.1583333333332", cy: "67.28666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.9000000000001", cy: "91.47333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.4650000000001", cy: "52.75833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3716666666666", cy: "280.01500000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.7216666666667", cy: "110.795", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.3716666666666", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.235", cy: "91.47333333333331", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.5216666666666", cy: "178.49", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7316666666667", cy: "212.31833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.0566666666667", cy: "217.17999999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.48", cy: "197.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6650000000001", cy: "255.84166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.335", cy: "231.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.5933333333332", cy: "212.31666666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "710.2014285714286", cy: "193.25428571428571", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "701.8199999999999", cy: "197.55285714285714", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8850000000001", cy: "207.4933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.775", cy: "221.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.785", cy: "212.3216666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.5", cy: "207.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.315", cy: "226.83166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.8166666666666", cy: "231.665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.63", cy: "221.98666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.085", cy: "275.14666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.6083333333332", cy: "212.3283333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "760.0233333333332", cy: "260.6616666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.07", cy: "130.14833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.7733333333334", cy: "144.655", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0616666666666", cy: "120.47500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.2366666666667", cy: "173.62666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.6300000000001", cy: "202.64833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.3666666666667", cy: "115.63333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9266666666666", cy: "197.81333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.2433333333333", cy: "192.99166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.2083333333334", cy: "183.30999999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.5766666666665", cy: "86.61833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.245", cy: "81.79833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.6349999999999", cy: "212.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.8233333333333", cy: "72.155", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.8449999999999", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.2199999999999", cy: "72.14999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.3716666666666", cy: "105.95166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.62", cy: "62.446666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "925.9066666666666", cy: "67.30499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.275", cy: "207.48333333333332", r: "3.6" } + }), + _c("circle", { attrs: { cx: "793.15", cy: "192.995", r: "3.6" } }), + _c("circle", { + attrs: { cx: "801.495", cy: "197.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.09", cy: "207.48333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.16", cy: "202.66333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.79", cy: "202.6483333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.88", cy: "197.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.275", cy: "217.15333333333334", r: "3.6" } + }), + _c("circle", { attrs: { cx: "942.535", cy: "47.945", r: "3.6" } }), + _c("circle", { + attrs: { cx: "776.5933333333332", cy: "202.6483333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6833333333333", cy: "284.8516666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.005", cy: "299.3433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.36", cy: "255.86499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.3800000000001", cy: "246.17166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.375", cy: "236.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.6350000000001", cy: "221.98666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6983333333333", cy: "275.1666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.1100000000001", cy: "226.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.0450000000001", cy: "289.68333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.415", cy: "38.26833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1083333333333", cy: "57.598333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.215", cy: "52.77333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8199999999999", cy: "52.77", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9499999999999", cy: "47.913333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "925.9366666666666", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.8383333333334", cy: "47.91", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7233333333334", cy: "57.59833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.6516666666666", cy: "43.076666666666675", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1566666666668", cy: "43.10999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "651.9616666666667", cy: "52.76166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.1483333333333", cy: "110.78333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.72", cy: "62.440000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.4166666666666", cy: "67.28333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.83", cy: "115.63833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.8787500000001", cy: "57.60125", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.6833333333333", cy: "47.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "568.9999999999999", cy: "43.089999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.3766666666667", cy: "52.77666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.5533333333334", cy: "52.76333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.8350000000002", cy: "43.10999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.2400000000001", cy: "43.120000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.5233333333333", cy: "120.47500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "817.995", cy: "43.10999999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.6899999999999", cy: "47.96333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.4399999999999", cy: "43.116666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.3216666666667", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7049999999999", cy: "38.26833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.6150000000001", cy: "43.12500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.6483333333332", cy: "28.59", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.2333333333332", cy: "28.623333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.3849999999999", cy: "33.443333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.055", cy: "38.29333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "701.71", cy: "33.15428571428571", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.8716666666666", cy: "28.60166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.4883333333333", cy: "38.27833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.2033333333333", cy: "33.425000000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.48", cy: "168.82166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4616666666667", cy: "367.00666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1166666666667", cy: "304.1766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1066666666667", cy: "284.83166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1066666666667", cy: "294.50166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7666666666668", cy: "279.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.57", cy: "241.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9683333333332", cy: "192.98000000000002", r: "3.6" } + }), + _c("circle", { attrs: { cx: "545.035", cy: "250.9925", r: "3.6" } }), + _c("circle", { + attrs: { cx: "536.865", cy: "246.15666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.5133333333334", cy: "255.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1650000000001", cy: "352.51000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1550000000001", cy: "342.84666666666664", r: "3.6" } + }), + _c("circle", { attrs: { cx: "569.14", cy: "313.83", r: "3.6" } }), + _c("circle", { + attrs: { cx: "577.4616666666667", cy: "357.33666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.81", cy: "338.0133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1500000000001", cy: "323.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.81", cy: "328.3433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.495", cy: "333.1766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.9350000000001", cy: "241.33666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.585", cy: "168.81166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.4699999999999", cy: "134.97666666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "503.605", cy: "188.155", r: "3.6" } }), + _c("circle", { + attrs: { cx: "503.59999999999997", cy: "178.49", r: "3.6" } + }), + _c("circle", { attrs: { cx: "536.765", cy: "130.13", r: "3.6" } }), + _c("circle", { + attrs: { cx: "544.5914285714287", cy: "96.56142857142856", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.9412500000001", cy: "105.95750000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.5828571428572", cy: "115.90142857142857", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.115", cy: "125.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.32666666666665", cy: "202.64833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.04999999999995", cy: "246.15666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.03", cy: "226.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.05", cy: "236.48666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.615", cy: "197.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.36666666666673", cy: "241.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.01", cy: "217.15333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.66", cy: "246.17166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.32666666666665", cy: "212.3183333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.2083333333334", cy: "270.32", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.6750000000001", cy: "207.4483333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.91", cy: "192.97833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.91", cy: "183.31500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.5099999999999", cy: "173.64", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.235", cy: "178.47166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0916666666667", cy: "236.49166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.39", cy: "212.30333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0916666666666", cy: "226.81499999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0716666666666", cy: "217.14666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "702.1787499999999", cy: "168.80625000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.3250000000002", cy: "183.32666666666668", r: "3.6" } + }), + _c("circle", { attrs: { cx: "735.065", cy: "178.49", r: "3.6" } }), + _c("circle", { attrs: { cx: "743.335", cy: "192.995", r: "3.6" } }), + _c("circle", { + attrs: { cx: "751.68", cy: "197.82000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4699999999999", cy: "168.80666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7716666666666", cy: "173.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.8325", cy: "163.97250000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.8783333333332", cy: "260.635", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.76", cy: "371.83666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.35", cy: "352.51500000000004", r: "3.6" } + }), + _c("circle", { attrs: { cx: "602.34", cy: "342.84", r: "3.6" } }), + _c("circle", { + attrs: { cx: "594.0616666666667", cy: "357.33666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.93", cy: "333.17333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.595", cy: "338.0133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.78", cy: "381.50500000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0616666666667", cy: "367.00666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0616666666666", cy: "376.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.89", cy: "284.83166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.93", cy: "323.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.9050000000001", cy: "275.17", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.89", cy: "294.50166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.785", cy: "91.43666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.515", cy: "265.4733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.245", cy: "318.65833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.9", cy: "304.1766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "626.8042857142857", cy: "308.6142857142857", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.265", cy: "236.49666666666664", r: "3.6" } + }), + _c("circle", { attrs: { cx: "834.695", cy: "188.155", r: "3.6" } }), + _c("circle", { + attrs: { cx: "851.3100000000001", cy: "159.14666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.98", cy: "183.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.32", cy: "168.8216666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.14", cy: "173.65666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.8133333333334", cy: "212.3033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.4", cy: "183.31000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1383333333333", cy: "67.28666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.07", cy: "178.47333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "851.32", cy: "178.49", r: "3.6" } }), + _c("circle", { + attrs: { cx: "884.4716666666668", cy: "101.13666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1783333333333", cy: "105.95833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4399999999999", cy: "81.78666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1750000000001", cy: "115.62833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.8649999999999", cy: "130.13000000000002", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.8649999999999", cy: "139.79666666666665", r: "3.6" } + }), + _c("circle", { attrs: { cx: "859.61", cy: "154.295", r: "3.6" } }), + _c("circle", { + attrs: { cx: "876.1683333333334", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7700000000001", cy: "173.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.4699999999999", cy: "159.13666666666668", r: "3.6" } + }), + _c("circle", { attrs: { cx: "702.17125", cy: "159.13125", r: "3.6" } }), + _c("circle", { + attrs: { cx: "685.235", cy: "168.8033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "710.1757142857142", cy: "154.58285714285716", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.5099999999999", cy: "163.97333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4", cy: "202.63166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.94", cy: "173.62666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0716666666667", cy: "207.48", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.625", cy: "178.45666666666668", r: "3.6" } + }), + _c("circle", { attrs: { cx: "751.665", cy: "178.49", r: "3.6" } }), + _c("circle", { + attrs: { cx: "759.9583333333334", cy: "183.31000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.255", cy: "178.47333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7716666666666", cy: "163.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.6700000000001", cy: "188.16", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5699999999998", cy: "173.64333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.065", cy: "168.82166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8633333333333", cy: "168.82166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.3250000000002", cy: "173.65666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.4516666666667", cy: "72.13166666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "867.855", cy: "72.115", r: "3.6" } }), + _c("circle", { + attrs: { cx: "676.89", cy: "76.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3166666666667", cy: "76.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0200000000001", cy: "81.78", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1716666666666", cy: "72.10833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7633333333333", cy: "86.60666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "709.75875", cy: "57.613749999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "702.1075000000001", cy: "62.447500000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.4366666666666", cy: "67.28333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "668.595", cy: "81.77", r: "3.6" } }), + _c("circle", { + attrs: { cx: "602.245", cy: "81.78833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9416666666667", cy: "76.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.64", cy: "72.10333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3066666666667", cy: "67.26666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8449999999999", cy: "81.77666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1483333333333", cy: "86.60666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.495", cy: "76.95500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4449999999999", cy: "81.77", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.3949999999999", cy: "62.446666666666665", r: "3.6" } + }), + _c("circle", { attrs: { cx: "818.015", cy: "72.115", r: "3.6" } }), + _c("circle", { + attrs: { cx: "826.3250000000002", cy: "67.28666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.6999999999999", cy: "67.28666666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "834.63", cy: "72.125", r: "3.6" } }), + _c("circle", { + attrs: { cx: "859.5400000000001", cy: "67.28666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4050000000001", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9049999999999", cy: "67.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.2550000000001", cy: "72.13666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "743.255", cy: "57.63", r: "3.6" } }), + _c("circle", { + attrs: { cx: "751.5900000000001", cy: "52.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.6983333333333", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.0649999999999", cy: "67.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.8833333333332", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "734.9916666666667", cy: "52.79333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.7916666666666", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.4983333333333", cy: "67.28666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.1833333333334", cy: "62.446666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.765", cy: "120.46333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7666666666668", cy: "299.33666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7883333333333", cy: "309.00500000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.81", cy: "318.67333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.495", cy: "323.50666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.865", cy: "255.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.465", cy: "275.15833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.7666666666668", cy: "289.6666666666667", r: "3.6" } + }), + _c("circle", { attrs: { cx: "545.035", cy: "260.6625", r: "3.6" } }), + _c("circle", { + attrs: { cx: "552.455", cy: "284.8333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.5", cy: "342.8433333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4816666666667", cy: "386.34666666666664", r: "3.6" } + }), + _c("circle", { attrs: { cx: "560.82", cy: "347.68", r: "3.6" } }), + _c("circle", { + attrs: { cx: "577.5016666666667", cy: "396.0133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.855", cy: "134.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.4616666666667", cy: "376.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.17", cy: "371.8516666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "560.83", cy: "357.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "569.1700000000001", cy: "362.1816666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "470.45", cy: "236.49666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.01", cy: "207.48333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.265", cy: "188.14499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.01", cy: "197.8133333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.71", cy: "212.31833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.71000000000004", cy: "221.98833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.57666666666665", cy: "149.48166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.3066666666667", cy: "183.31000000000003", r: "3.6" } + }), + _c("circle", { attrs: { cx: "511.895", cy: "144.65", r: "3.6" } }), + _c("circle", { + attrs: { cx: "495.3066666666667", cy: "173.64333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.36666666666673", cy: "250.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "503.66", cy: "255.84166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.57", cy: "250.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.8", cy: "391.17333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.275", cy: "246.17166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "511.9350000000001", cy: "251.00666666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.75333333333333", cy: "241.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "478.7533333333334", cy: "250.99666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "487.05", cy: "255.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.8000000000001", cy: "400.8433333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "709.8325", cy: "173.64", r: "3.6" } }), + _c("circle", { + attrs: { cx: "718.4699999999999", cy: "178.47333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.7716666666666", cy: "183.31000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "702.1787499999999", cy: "178.47375", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "594.0816666666667", cy: "386.34499999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.3899999999999", cy: "221.97", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "693.5099999999999", cy: "183.3066666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.9633333333334", cy: "212.30333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.2399999999999", cy: "188.13833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.645", cy: "217.13333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9783333333334", cy: "202.64833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.275", cy: "197.81333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.5816666666666", cy: "192.97833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.9783333333334", cy: "212.3183333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.685", cy: "207.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.3449999999999", cy: "202.66333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "735.0799999999999", cy: "197.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.685", cy: "217.16333333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "735.07", cy: "188.155", r: "3.6" } }), + _c("circle", { + attrs: { cx: "660.41", cy: "231.63833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.615", cy: "357.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.935", cy: "342.84666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.2283333333334", cy: "337.99833333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "610.605", cy: "347.68", r: "3.6" } }), + _c("circle", { + attrs: { cx: "602.3649999999999", cy: "381.51500000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.355", cy: "371.8516666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.355", cy: "362.1816666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.2366666666666", cy: "328.32166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.8266666666666", cy: "270.31666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "652.0833333333334", cy: "265.49", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.4833333333333", cy: "275.1466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.4150000000001", cy: "241.32833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1850000000001", cy: "289.6566666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1850000000001", cy: "299.3233333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.555", cy: "304.14833333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1850000000001", cy: "279.9866666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "495.3166666666666", cy: "192.97833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.7550000000001", cy: "96.28166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.7333333333335", cy: "105.97333333333331", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0099999999999", cy: "72.155", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.4683333333332", cy: "110.80499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1616666666667", cy: "144.66833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.4633333333333", cy: "120.47166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0300000000001", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1683333333334", cy: "134.96666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.4616666666666", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.6899999999999", cy: "67.29666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.245", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9366666666668", cy: "159.11833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.5400000000001", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.62", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9049999999999", cy: "57.63", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "520.17", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1383333333333", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.8350000000002", cy: "62.446666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.7700000000001", cy: "183.31000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "818.08", cy: "188.14499999999998", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.3250000000002", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.61", cy: "163.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.7066666666666", cy: "197.82666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8633333333333", cy: "178.49", r: "3.6" } + }), + _c("circle", { attrs: { cx: "801.48", cy: "178.49", r: "3.6" } }), + _c("circle", { + attrs: { cx: "776.5699999999998", cy: "183.31000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.7116666666666", cy: "207.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.14", cy: "183.32666666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "826.41", cy: "192.97833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.61", cy: "183.31000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.3249999999999", cy: "188.16", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "834.7116666666666", cy: "217.16333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.61", cy: "173.64333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "842.9899999999999", cy: "192.995", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.06", cy: "222.0033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843", cy: "202.66333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "843.0300000000001", cy: "212.35166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.43", cy: "62.461666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "618.8249999999999", cy: "72.12", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "627.1283333333333", cy: "76.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "610.475", cy: "67.28333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "593.9216666666666", cy: "67.26833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "602.225", cy: "72.10666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "635.425", cy: "72.10333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "651.9983333333333", cy: "72.11", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "660.295", cy: "67.26833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "643.7433333333333", cy: "76.93833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.7683333333333", cy: "110.79333333333331", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "668.575", cy: "72.10499999999999", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.8683333333333", cy: "188.155", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "536.765", cy: "101.11833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "585.62", cy: "62.43333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "528.465", cy: "125.29833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "577.3166666666666", cy: "57.60166666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "817.995", cy: "62.446666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "544.5485714285713", cy: "77.24285714285715", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "552.4083333333334", cy: "72.11", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "676.8683333333332", cy: "67.26833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "768.1833333333334", cy: "52.77666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "751.585", cy: "43.120000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "759.8833333333332", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "784.7916666666666", cy: "52.79333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "793.0649999999999", cy: "57.63", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "809.6999999999999", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "801.4050000000001", cy: "52.79333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "776.4983333333333", cy: "57.616666666666674", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "743.255", cy: "47.96333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "702.1075000000001", cy: "52.7775", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "685.1616666666667", cy: "62.443333333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "709.75875", cy: "47.94375", r: "3.6" } }), + _c("circle", { + attrs: { cx: "693.4366666666666", cy: "57.613333333333344", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "718.3949999999999", cy: "52.77666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "734.9866666666667", cy: "43.12500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "726.6983333333333", cy: "47.946666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1850000000001", cy: "289.65", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.1550000000001", cy: "279.99833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.5033333333334", cy: "275.16333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.4983333333333", cy: "304.2", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9249999999998", cy: "304.19166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.5283333333333", cy: "284.84333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.895", cy: "294.50333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.5283333333333", cy: "294.5133333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.215", cy: "299.3383333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "859.6583333333333", cy: "318.6666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "868.0050000000001", cy: "323.51166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "851.3116666666666", cy: "323.52666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.8250000000002", cy: "212.33333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.8249999999999", cy: "202.66333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.805", cy: "231.65833333333333", r: "3.6" } + }), + _c("circle", { attrs: { cx: "909.4733333333334", cy: "251", r: "3.6" } }), + _c("circle", { + attrs: { cx: "901.1066666666666", cy: "246.16833333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.1366666666667", cy: "236.51500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.8650000000001", cy: "260.6766666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0566666666667", cy: "294.52000000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.0633333333334", cy: "304.18666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.41", cy: "289.66333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.8533333333334", cy: "328.3566666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "925.9233333333333", cy: "134.97666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.2800000000001", cy: "130.14333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "925.9283333333333", cy: "125.28666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.7133333333335", cy: "168.81666666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "909.39", cy: "173.645", r: "3.6" } }), + _c("circle", { + attrs: { cx: "925.9933333333335", cy: "163.96833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.2449999999999", cy: "149.48333333333332", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.305", cy: "159.14166666666668", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.7950000000001", cy: "265.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.7366666666667", cy: "304.17333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.4350000000001", cy: "328.34999999999997", r: "3.6" } + }), + _c("circle", { attrs: { cx: "917.79", cy: "323.5", r: "3.6" } }), + _c("circle", { + attrs: { cx: "934.2900000000001", cy: "294.51666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.685", cy: "454.07166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.9983333333333", cy: "449.2033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.5749999999999", cy: "323.52833333333336", r: "3.6" } + }), + _c("circle", { attrs: { cx: "959.2516666666667", cy: "309", r: "3.6" } }), + _c("circle", { + attrs: { cx: "992.5649999999999", cy: "328.34999999999997", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "976.3714285714285", cy: "318.94714285714286", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "983.7371428571429", cy: "323.2271428571429", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.585", cy: "313.82166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.2433333333333", cy: "318.67333333333335", r: "3.6" } + }), + _c("circle", { attrs: { cx: "1000.805", cy: "313.84", r: "3.6" } }), + _c("circle", { + attrs: { cx: "951.025", cy: "410.54333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.41", cy: "400.8733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.8000000000001", cy: "391.1933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.685", cy: "415.38000000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.6850000000001", cy: "405.71333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.4816666666666", cy: "386.3583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.1166666666667", cy: "396.02833333333336", r: "3.6" } + }), + _c("circle", { attrs: { cx: "892.85", cy: "386.375", r: "3.6" } }), + _c("circle", { + attrs: { cx: "909.46", cy: "376.68833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.6", cy: "391.2083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.8699999999999", cy: "396.04333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.61", cy: "400.8733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.1999999999999", cy: "391.19666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.1783333333333", cy: "381.53999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.2783333333333", cy: "376.68833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.5749999999999", cy: "371.8533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.985", cy: "371.8633333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.6750000000001", cy: "357.34833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "975.9249999999998", cy: "367.01666666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.69", cy: "347.6933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.6150000000001", cy: "400.85999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "976.3914285714287", cy: "376.96000000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.3183333333333", cy: "415.3666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.3183333333335", cy: "405.69666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.6149999999999", cy: "391.1933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "976.4171428571428", cy: "386.62857142857143", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.5916666666666", cy: "420.23499999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.3000000000001", cy: "386.35833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9949999999999", cy: "400.85999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.5949999999999", cy: "381.52500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "951.015", cy: "391.19666666666666", r: "3.6" } + }), + _c("circle", { attrs: { cx: "942.665", cy: "386.375", r: "3.6" } }), + _c("circle", { + attrs: { cx: "876.3183333333333", cy: "396.02833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.5949999999999", cy: "342.84666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.7600000000001", cy: "371.8533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.3650000000001", cy: "352.5333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.38", cy: "381.52833333333325", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.3133333333334", cy: "434.715", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "868.025", cy: "420.21333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.6750000000001", cy: "338.02000000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.695", cy: "434.7383333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.3699999999999", cy: "371.8633333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.6449999999999", cy: "376.7033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.995", cy: "381.53999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.0766666666667", cy: "367.0183333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.3183333333333", cy: "396.02833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.3699999999999", cy: "362.19666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.7800000000001", cy: "381.52500000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "951.025", cy: "400.8733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.0766666666667", cy: "376.68833333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.0966666666667", cy: "386.3583333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.4", cy: "391.2083333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.6850000000001", cy: "396.04333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.6449999999999", cy: "367.0333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.75", cy: "352.5083333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.1383333333333", cy: "362.17833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "975.9249999999998", cy: "357.34666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.82", cy: "367.02833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9649999999998", cy: "381.53000000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.2466666666666", cy: "376.67", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.5466666666667", cy: "371.8500000000001", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.0416666666666", cy: "347.66833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.585", cy: "352.49666666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.2783333333333", cy: "367.01833333333326", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.5650000000002", cy: "362.17833333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "950.9899999999999", cy: "362.195", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.3400000000001", cy: "342.84833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.4499999999999", cy: "357.3433333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "976.4357142857143", cy: "415.09", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.6650000000001", cy: "429.8666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "951.0183333333333", cy: "429.8833333333334", r: "3.6" } + }), + _c("circle", { attrs: { cx: "983.4525", cy: "400.86", r: "3.6" } }), + _c("circle", { + attrs: { cx: "934.3666666666667", cy: "429.88166666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "983.4525000000001", cy: "410.52750000000003", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.0866666666666", cy: "415.38499999999993", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.9016666666666", cy: "415.3983333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.2199999999999", cy: "410.5483333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.3183333333333", cy: "415.3666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.5016666666667", cy: "405.6966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.79", cy: "410.5316666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.6416666666668", cy: "420.215", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.3183333333333", cy: "405.6966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.5016666666667", cy: "396.02833333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.61", cy: "410.54333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.995", cy: "410.5266666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.8699999999999", cy: "405.71333333333337", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.21", cy: "400.8733333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "867.9949999999999", cy: "391.1933333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "909.46", cy: "367.01833333333326", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "876.2983333333333", cy: "386.35833333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.7600000000001", cy: "362.18333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "901.1683333333334", cy: "371.8633333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "884.58", cy: "381.52833333333325", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "892.83", cy: "376.7033333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "959.3149999999999", cy: "425.03666666666663", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "967.6149999999999", cy: "410.52666666666664", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.0766666666667", cy: "357.3500000000001", r: "3.6" } + }), + _c("circle", { attrs: { cx: "976.785", cy: "405.69375", r: "3.6" } }), + _c("circle", { + attrs: { cx: "983.7742857142857", cy: "381.2442857142857", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "976.7850000000001", cy: "396.02625", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "983.4525000000001", cy: "391.19250000000005", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "917.8000000000001", cy: "400.85999999999996", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.41", cy: "410.54333333333335", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "926.1166666666667", cy: "405.6966666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "934.39", cy: "420.22333333333336", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "951.0216666666666", cy: "420.21000000000004", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "942.68", cy: "425.0466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1017.485", cy: "323.49333333333334", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1009.2283333333334", cy: "463.70166666666665", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1000.8916666666665", cy: "468.5466666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1017.525", cy: "458.8616666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1025.8149999999998", cy: "454.00666666666666", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1034.0249999999999", cy: "371.8533333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1034.0449999999998", cy: "439.5416666666667", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1042.4", cy: "434.6983333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1042.4", cy: "425.0333333333333", r: "3.6" } + }), + _c("circle", { + attrs: { cx: "1075.54", cy: "357.3333333333333", r: "3.6" } + }) + ] + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-df567280", esExports) + } +} + +/***/ }), +/* 127 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_Dialog_vue__ = __webpack_require__(38); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_05fc5bd9_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_Dialog_vue__ = __webpack_require__(134); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(128) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_Dialog_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_05fc5bd9_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_Dialog_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-05fc5bd9", Component.options) + } else { + hotAPI.reload("data-v-05fc5bd9", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 128 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 130 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_Dialog_Element_vue__ = __webpack_require__(39); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_094a8568_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_Dialog_Element_vue__ = __webpack_require__(133); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(131) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Network_Native_Map_Dialog_Element_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_094a8568_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Network_Native_Map_Dialog_Element_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-094a8568", Component.options) + } else { + hotAPI.reload("data-v-094a8568", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 131 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 133 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div", [ + _c( + "div", + { staticStyle: { display: "inline-block", "padding-right": "10px" } }, + [ + _vm.nodeType === "myself" + ? _c("icon", { + staticStyle: { "padding-right": "10px" }, + attrs: { icon: "sun-glasses" } + }) + : _vm._e(), + _vm.nodeType === "browser" + ? _c("icon", { + staticStyle: { "padding-right": "10px" }, + attrs: { icon: "network" } + }) + : _vm._e(), + _vm.nodeType === "terminal" + ? _c("icon", { + staticStyle: { "padding-right": "10px" }, + attrs: { icon: "terminal" } + }) + : _vm._e(), + _vm.nodeType === "terminal-waitlist" + ? _c("icon", { + staticStyle: { "padding-right": "10px" }, + attrs: { icon: "terminal" } + }) + : _vm._e(), + _vm.nodeType === "browser-waitlist" + ? _c("icon", { + staticStyle: { "padding-right": "10px" }, + attrs: { icon: "network" } + }) + : _vm._e(), + _c("img", { + staticClass: "icon-connected", + attrs: { + src: + this.connected === "connected" + ? "https://icons.iconarchive.com/icons/icons8/windows-8/16/Network-Connected-icon.png" + : "https://icons.iconarchive.com/icons/icons8/windows-8/16/Network-Disconnected-icon.png" + } + }) + ], + 1 + ), + _c( + "div", + { + ref: "refText", + staticClass: "map-dialog-description-text", + staticStyle: { display: "inline-block" } + }, + [ + _c("br"), + _vm._v(_vm._s(_vm.country) + ", " + _vm._s(_vm.city)), + _c("br"), + _c("small", [_vm._v(_vm._s(this.getAddress || " ") + " ")]) + ] + ) + ]) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-094a8568", esExports) + } +} + +/***/ }), +/* 134 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c("div", { staticClass: "map-dialog " }, [ + _c( + "div", + { + ref: "refDialogContainer", + staticClass: "map-dialog-description", + style: { opacity: this.display ? 1 : 0 } + }, + _vm._l(this.desc, function(desc) { + return _c("NetworkNativeMapDialogElement", { + key: desc.uuid || desc.index, + staticStyle: { "padding-bottom": "20px" }, + attrs: { + address: desc.address, + status: desc.status, + country: desc.country, + city: desc.city, + nodeType: desc.nodeType + } + }) + }) + ) + ]) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-05fc5bd9", esExports) + } +} + +/***/ }), +/* 135 */ +/***/ (function(module, exports, __webpack_require__) { + +var v1 = __webpack_require__(136); +var v4 = __webpack_require__(137); + +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; + +module.exports = uuid; + + +/***/ }), +/* 136 */ +/***/ (function(module, exports, __webpack_require__) { + +var rng = __webpack_require__(40); +var bytesToUuid = __webpack_require__(41); + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +var _nodeId; +var _clockseq; + +// Previous uuid creation time +var _lastMSecs = 0; +var _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + if (node == null || clockseq == null) { + var seedBytes = rng(); + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [ + seedBytes[0] | 0x01, + seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5] + ]; + } + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ? buf : bytesToUuid(b); +} + +module.exports = v1; + + +/***/ }), +/* 137 */ +/***/ (function(module, exports, __webpack_require__) { + +var rng = __webpack_require__(40); +var bytesToUuid = __webpack_require__(41); + +function v4(options, buf, offset) { + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options === 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ++ii) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || bytesToUuid(rnds); +} + +module.exports = v4; + + +/***/ }), +/* 138 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + [ + _c("NetworkNativeMapCanvas"), + _c("NetworkNativeMapDialog", { ref: "refDialog" }) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-6f992934", esExports) + } +} + +/***/ }), +/* 139 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_components_alerts_Notifications_vue__ = __webpack_require__(140); +var Vue = __webpack_require__(4); + + + +//for safari workaround +/* harmony default export */ __webpack_exports__["default"] = ((params)=> { + + if (document.getElementById("WebDollarAlertsStickyBarDiv") !== null && document.getElementById("WebDollarAlertsStickyBarDiv")){ + return false; + } + + if (document.getElementById('WebDollarAlertsStickyBar') === null) + document.getElementsByTagName("body")[0].insertAdjacentHTML("afterbegin", `
`); + + new Vue({ + el: '#WebDollarAlertsStickyBar', + render: h => h(__WEBPACK_IMPORTED_MODULE_0_components_alerts_Notifications_vue__["a" /* default */]) + }) +}); + +/***/ }), +/* 140 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Notifications_vue__ = __webpack_require__(42); +/* unused harmony namespace reexport */ +/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_87887140_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Notifications_vue__ = __webpack_require__(143); +var disposed = false +function injectStyle (ssrContext) { + if (disposed) return + __webpack_require__(141) +} +var normalizeComponent = __webpack_require__(0) +/* script */ + + +/* template */ + +/* template functional */ +var __vue_template_functional__ = false +/* styles */ +var __vue_styles__ = injectStyle +/* scopeId */ +var __vue_scopeId__ = null +/* moduleIdentifier (server only) */ +var __vue_module_identifier__ = null +var Component = normalizeComponent( + __WEBPACK_IMPORTED_MODULE_0__node_modules_vue_loader_lib_selector_type_script_index_0_Notifications_vue__["a" /* default */], + __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_87887140_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Notifications_vue__["a" /* default */], + __vue_template_functional__, + __vue_styles__, + __vue_scopeId__, + __vue_module_identifier__ +) +Component.options.__file = "src/components/alerts/Notifications.vue" + +/* hot reload */ +if (false) {(function () { + var hotAPI = require("vue-hot-reload-api") + hotAPI.install(require("vue"), false) + if (!hotAPI.compatible) return + module.hot.accept() + if (!module.hot.data) { + hotAPI.createRecord("data-v-87887140", Component.options) + } else { + hotAPI.reload("data-v-87887140", Component.options) + } + module.hot.dispose(function (data) { + disposed = true + }) +})()} + +/* harmony default export */ __webpack_exports__["a"] = (Component.exports); + + +/***/ }), +/* 141 */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); + +// exports + + +/***/ }), +/* 143 */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +var render = function() { + var _vm = this + var _h = _vm.$createElement + var _c = _vm._self._c || _h + return _c( + "div", + [ + _c("notifications", { + staticClass: "notificationsBox", + attrs: { group: "all", position: "bottom left", max: "5" } + }), + _c("notifications", { + staticClass: "notificationsBox", + attrs: { group: "error-firewall", position: "bottom left" } + }), + _c("notifications", { + staticClass: "notificationsBox", + attrs: { group: "error-internet", position: "bottom left" } + }), + _c("notifications", { + staticClass: "notificationsBox", + attrs: { group: "indexedDB-error-reason", position: "bottom left" } + }), + _c("notifications", { + staticClass: "notificationsBox", + attrs: { group: "network-adjusted-time-error", position: "bottom left" } + }), + _c("notifications", { + staticClass: "notificationsBox", + attrs: { group: "network-adjusted-time-error", position: "bottom left" } + }) + ], + 1 + ) +} +var staticRenderFns = [] +render._withStripped = true +var esExports = { render: render, staticRenderFns: staticRenderFns } +/* harmony default export */ __webpack_exports__["a"] = (esExports); +if (false) { + module.hot.accept() + if (module.hot.data) { + require("vue-hot-reload-api") .rerender("data-v-87887140", esExports) + } +} + +/***/ }) +/******/ ]); +//# sourceMappingURL=WebDollar-User-Interface-bundle.js.map \ No newline at end of file diff --git a/public/WebDollar-dist/WebDollar-User-Interface-bundle.js.map b/public/WebDollar-dist/WebDollar-User-Interface-bundle.js.map new file mode 100644 index 00000000..72b03562 --- /dev/null +++ b/public/WebDollar-dist/WebDollar-User-Interface-bundle.js.map @@ -0,0 +1 @@ +{"version":3,"file":"../../vue-Frontend/public/WebDollar-dist/WebDollar-User-Interface-bundle.js","sources":["webpack:///webpack/bootstrap 1b59591c54c8f1463197","webpack:///./node_modules/vue-loader/lib/component-normalizer.js","webpack:///./node_modules/css-loader/lib/css-base.js","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./src/helpers/Browser.helpers.js","webpack:///./node_modules/vue/dist/vue.min.js","webpack:///./src/helpers/Notification.helpers.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/components/UI/icons/icon.vue","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/v-clipboard/dist/index.min.js","webpack:///./src/components/UI/modal/Modal.vue","webpack:///./src/components/Wallet/Address/Balance/Show-Balance.vue","webpack:///./src/components/Wallet/Address/Balance/Balances/Show-Sum-Balances.vue","webpack:///./node_modules/timers-browserify/main.js","webpack:///Dashboard.vue","webpack:///Wallet.vue","webpack:///icon.vue","webpack:///./src/components/Wallet/Address/Address.vue","webpack:///Address.vue","webpack:///./node_modules/file-saver/FileSaver.js","webpack:///Address-main.modal.vue","webpack:///Modal.vue","webpack:///Show-Balance.vue","webpack:///./src/components/UI/elements/Loading-Spinner.vue","webpack:///Loading-Spinner.vue","webpack:///Show-Sum-Balances.vue","webpack:///Transactions.part.vue","webpack:///Transaction.element.vue","webpack:///Transaction-From.element.vue","webpack:///Transaction-To.element.vue","webpack:///Transfer.part.vue","webpack:///Lock.modal.vue","webpack:///Delete.modal.vue","webpack:///Mining.vue","webpack:///slider.vue","webpack:///./node_modules/vue-notification/dist/index.js","webpack:///Network-Native-Map.vue","webpack:///Network-Native-Map-Canvas.vue","webpack:///Network-Native-Map-Dialog.vue","webpack:///Network-Native-Map-Dialog-Element.vue","webpack:///./node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/uuid/lib/bytesToUuid.js","webpack:///Notifications.vue","webpack:///./src/main.js","webpack:///./src/initialize-params/Initialize-Params.js","webpack:///./src/initialize-params/global-initialize/Global-Initialization.js","webpack:///./src/initialize-params/vue/Main-vue.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/process/browser.js","webpack:///./src/components/Dashboard.vue","webpack:///./src/components/Dashboard.vue?6743","webpack:///./src/components/Dashboard.vue?6fc6","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./src/components/Wallet/Wallet.vue","webpack:///./src/components/Wallet/Wallet.vue?dd4d","webpack:///./src/components/Wallet/Wallet.vue?61d2","webpack:///./src/components/UI/icons/icon.vue?d135","webpack:///./src/components/UI/icons/icon.vue?c8d5","webpack:///./src/components/UI/icons/icon.vue?bcdb","webpack:///./src/components/Wallet/Address/Address.vue?87e9","webpack:///./src/components/Wallet/Address/Address.vue?a0a9","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue?be51","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue?d7db","webpack:///./src/components/UI/modal/Modal.vue?3544","webpack:///./src/components/UI/modal/Modal.vue?d7bc","webpack:///./src/components/UI/modal/Modal.vue?8d6d","webpack:///./src/components/Wallet/Address/Balance/Show-Balance.vue?d5b0","webpack:///./src/components/Wallet/Address/Balance/Show-Balance.vue?5141","webpack:///./src/components/UI/elements/Loading-Spinner.vue?9ece","webpack:///./src/components/Wallet/Address/Balance/Show-Balance.vue?d5f7","webpack:///./src/components/Wallet/Address/Balance/Balances/Show-Sum-Balances.vue?b321","webpack:///./src/components/Wallet/Address/Balance/Balances/Show-Sum-Balances.vue?f44d","webpack:///./src/components/Wallet/Address/Balance/Balances/Show-Sum-Balances.vue?d53d","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue?4dbe","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue?5c51","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue?5a59","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue?7b6f","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue?3c7f","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue?85c6","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue?a9fc","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue?ede2","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue?5a2d","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue?f5b3","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue?542c","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue?a4ce","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue?a91c","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue?3eca","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue?86b3","webpack:///./src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue?aba4","webpack:///./src/components/Wallet/Address/Modals/Lock.modal.vue","webpack:///./src/components/Wallet/Address/Modals/Lock.modal.vue?4813","webpack:///./src/components/Wallet/Address/Modals/Lock.modal.vue?016c","webpack:///./src/components/Wallet/Address/Modals/Lock.modal.vue?f1ee","webpack:///./src/components/Wallet/Address/Modals/Delete.modal.vue","webpack:///./src/components/Wallet/Address/Modals/Delete.modal.vue?4391","webpack:///./src/components/Wallet/Address/Modals/Delete.modal.vue?4765","webpack:///./src/components/Wallet/Address/Modals/Delete.modal.vue?c3ad","webpack:///./src/components/Wallet/Address/Address.vue?6a3e","webpack:///./src/components/Wallet/Wallet.vue?1bc0","webpack:///./src/components/Mining/Mining.vue","webpack:///./src/components/Mining/Mining.vue?9856","webpack:///./src/components/Mining/Mining.vue?676a","webpack:///./src/components/Mining/slider.vue","webpack:///./src/components/Mining/slider.vue?b441","webpack:///./src/components/Mining/slider.vue?a86a","webpack:///./node_modules/vue-slider-component/dist/index.js","webpack:///./src/components/Mining/slider.vue?3c57","webpack:///./src/components/Mining/Mining.vue?ad3e","webpack:///./src/components/Dashboard.vue?4933","webpack:///./src/initialize-params/vue/Network-Native-Map-main-vue.js","webpack:///./src/components/maps/Native-Map/Network-Native-Map.vue","webpack:///./src/components/maps/Native-Map/helpers/Circle-Map.js","webpack:///./src/components/maps/Native-Map/helpers/Projection.js","webpack:///./src/components/maps/Native-Map/helpers/Circles.js","webpack:///./src/components/maps/Maps.tester.js","webpack:///./src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue","webpack:///./src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue?468a","webpack:///./src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue?43f4","webpack:///./src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue?3344","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue?d1ef","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue?5a3e","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue?9152","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue?a874","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue?dbe3","webpack:///./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue?e00c","webpack:///./node_modules/uuid/index.js","webpack:///./node_modules/uuid/v1.js","webpack:///./node_modules/uuid/v4.js","webpack:///./src/components/maps/Native-Map/Network-Native-Map.vue?516e","webpack:///./src/initialize-params/vue/Alerts-Sticky-Bar-main-vue.js","webpack:///./src/components/alerts/Notifications.vue","webpack:///./src/components/alerts/Notifications.vue?f18e","webpack:///./src/components/alerts/Notifications.vue?f045","webpack:///./src/components/alerts/Notifications.vue?2b73"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 43);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 1b59591c54c8f1463197","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/component-normalizer.js\n// module id = 0\n// module chunks = 0","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 1\n// module chunks = 0","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = require('./listToStyles')\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of \n\n\n// WEBPACK FOOTER //\n// Dashboard.vue","\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Wallet.vue","\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// icon.vue","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6fd10b33\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Address.vue\")\n}\nvar normalizeComponent = require(\"!../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Address.vue\"\nimport __vue_script__ from \"!!!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Address.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6fd10b33\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Address.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Address.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6fd10b33\", Component.options)\n } else {\n hotAPI.reload(\"data-v-6fd10b33\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Address.vue\n// module id = 17\n// module chunks = 0","\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Address.vue","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/file-saver/FileSaver.js\n// module id = 19\n// module chunks = 0","\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Address-main.modal.vue","\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Modal.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Show-Balance.vue","var disposed = false\nvar normalizeComponent = require(\"!../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Loading-Spinner.vue\"\nimport __vue_script__ from \"!!!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Loading-Spinner.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f5858e2a\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Loading-Spinner.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/UI/elements/Loading-Spinner.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-f5858e2a\", Component.options)\n } else {\n hotAPI.reload(\"data-v-f5858e2a\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/UI/elements/Loading-Spinner.vue\n// module id = 23\n// module chunks = 0","\n\n\n\n\n// WEBPACK FOOTER //\n// Loading-Spinner.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Show-Sum-Balances.vue","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Transactions.part.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Transaction.element.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Transaction-From.element.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Transaction-To.element.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Transfer.part.vue","\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Lock.modal.vue","\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Delete.modal.vue","\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Mining.vue","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// slider.vue","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"vue\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vue-notification\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"vue-notification\"] = factory(root[\"vue\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_20__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/dist/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n// this module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n scopeId,\n cssModules\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n // inject cssModules\n if (cssModules) {\n var computed = Object.create(options.computed || null)\n Object.keys(cssModules).forEach(function (key) {\n var module = cssModules[key]\n computed[key] = function () { return module }\n })\n options.computed = computed\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return events; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__);\n\nvar events = new __WEBPACK_IMPORTED_MODULE_0_vue___default.a();\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Notifications_vue__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Notifications_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__Notifications_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(1);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\n\n\nvar Notify = {\n install: function install(Vue) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (this.installed) {\n return;\n }\n\n this.installed = true;\n this.params = params;\n\n Vue.component('notifications', __WEBPACK_IMPORTED_MODULE_0__Notifications_vue___default.a);\n\n var notify = function notify(params) {\n if (typeof params === 'string') {\n params = { title: '', text: params };\n }\n\n if ((typeof params === 'undefined' ? 'undefined' : _typeof(params)) === 'object') {\n __WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* events */].$emit('add', params);\n }\n };\n\n Vue.prototype.$notify = notify;\n Vue.notify = notify;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Notify);\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\n/* styles */\n__webpack_require__(17)\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(5),\n /* template */\n __webpack_require__(15),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'CssGroup',\n props: ['name']\n});\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__index__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(9);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaults__ = __webpack_require__(7);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__CssGroup_vue__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__CssGroup_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_5__CssGroup_vue__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__parser__ = __webpack_require__(8);\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\n\n\n\n\n\nvar STATE = {\n IDLE: 0,\n DESTROYED: 2\n};\n\nvar Component = {\n name: 'Notifications',\n components: {\n VelocityGroup: __WEBPACK_IMPORTED_MODULE_4__VelocityGroup_vue___default.a,\n CssGroup: __WEBPACK_IMPORTED_MODULE_5__CssGroup_vue___default.a\n },\n props: {\n group: {\n type: String,\n default: ''\n },\n\n width: {\n type: [Number, String],\n default: 300\n },\n\n reverse: {\n type: Boolean,\n default: false\n },\n\n position: {\n type: [String, Array],\n default: function _default() {\n return __WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* default */].position;\n }\n },\n\n classes: {\n type: String,\n default: 'vue-notification'\n },\n\n animationType: {\n type: String,\n default: 'css',\n validator: function validator(value) {\n return value === 'css' || value === 'velocity';\n }\n },\n\n animation: {\n type: Object,\n default: function _default() {\n return __WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* default */].velocityAnimation;\n }\n },\n\n animationName: {\n type: String,\n default: __WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* default */].cssAnimation\n },\n\n speed: {\n type: Number,\n default: 300\n },\n\n cooldown: {\n type: Number,\n default: 0\n },\n\n duration: {\n type: Number,\n default: 3000\n },\n\n delay: {\n type: Number,\n default: 0\n },\n\n max: {\n type: Number,\n default: Infinity\n }\n },\n data: function data() {\n return {\n list: [],\n velocity: __WEBPACK_IMPORTED_MODULE_0__index__[\"default\"].params.velocity\n };\n },\n mounted: function mounted() {\n __WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* events */].$on('add', this.addItem);\n },\n\n computed: {\n actualWidth: function actualWidth() {\n return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__parser__[\"a\" /* default */])(this.width);\n },\n isVA: function isVA() {\n return this.animationType === 'velocity';\n },\n componentName: function componentName() {\n return this.isVA ? 'VelocityGroup' : 'CssGroup';\n },\n styles: function styles() {\n var _listToDirection = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"a\" /* listToDirection */])(this.position),\n x = _listToDirection.x,\n y = _listToDirection.y;\n\n var width = this.actualWidth.value;\n var suffix = this.actualWidth.type;\n\n var styles = _defineProperty({\n width: width + suffix\n }, y, '0px');\n\n if (x === 'center') {\n styles['left'] = 'calc(50% - ' + width / 2 + suffix + ')';\n } else {\n styles[x] = '0px';\n }\n\n return styles;\n },\n active: function active() {\n return this.list.filter(function (v) {\n return v.state !== STATE.DESTROYED;\n });\n },\n botToTop: function botToTop() {\n return this.styles.hasOwnProperty('bottom');\n }\n },\n methods: {\n addItem: function addItem(event) {\n var _this = this;\n\n event.group = event.group || '';\n\n if (this.group !== event.group) {\n return;\n }\n\n if (event.clean || event.clear) {\n this.destroyAll();\n return;\n }\n\n var duration = typeof event.duration === 'number' ? event.duration : this.duration;\n\n var speed = typeof event.speed === 'number' ? event.speed : this.speed;\n\n var title = event.title,\n text = event.text,\n type = event.type,\n data = event.data;\n\n\n var item = {\n id: __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* Id */])(),\n title: title,\n text: text,\n type: type,\n state: STATE.IDLE,\n speed: speed,\n length: duration + 2 * speed,\n data: data\n };\n\n if (duration >= 0) {\n item.timer = setTimeout(function () {\n _this.destroy(item);\n }, item.length);\n }\n\n var direction = this.reverse ? !this.botToTop : this.botToTop;\n\n var indexToDestroy = -1;\n\n if (direction) {\n this.list.push(item);\n\n if (this.active.length > this.max) {\n indexToDestroy = 0;\n }\n } else {\n this.list.unshift(item);\n\n if (this.active.length > this.max) {\n indexToDestroy = this.active.length - 1;\n }\n }\n\n if (indexToDestroy !== -1) {\n this.destroy(this.active[indexToDestroy]);\n }\n },\n notifyClass: function notifyClass(item) {\n return ['notification', this.classes, item.type];\n },\n notifyWrapperStyle: function notifyWrapperStyle(item) {\n return this.isVA ? null : {\n transition: 'all ' + item.speed + 'ms'\n };\n },\n destroy: function destroy(item) {\n clearTimeout(item.timer);\n item.state = STATE.DESTROYED;\n\n if (!this.isVA) {\n this.clean();\n }\n },\n destroyAll: function destroyAll() {\n this.active.forEach(this.destroy);\n },\n getAnimation: function getAnimation(index, el) {\n var animation = this.animation[index];\n\n return typeof animation === 'function' ? animation.call(this, el) : animation;\n },\n enter: function enter(_ref) {\n var el = _ref.el,\n complete = _ref.complete;\n\n var animation = this.getAnimation('enter', el);\n\n this.velocity(el, animation, {\n duration: this.speed,\n complete: complete\n });\n },\n leave: function leave(_ref2) {\n var el = _ref2.el,\n complete = _ref2.complete;\n\n var animation = this.getAnimation('leave', el);\n\n this.velocity(el, animation, {\n duration: this.speed,\n complete: complete\n });\n },\n clean: function clean() {\n this.list = this.list.filter(function (v) {\n return v.state !== STATE.DESTROYED;\n });\n }\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Component);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n name: 'VelocityGroup',\n methods: {\n enter: function enter(el, complete) {\n this.$emit('enter', { el: el, complete: complete });\n },\n leave: function leave(el, complete) {\n this.$emit('leave', { el: el, complete: complete });\n },\n afterLeave: function afterLeave() {\n this.$emit('afterLeave');\n }\n }\n});\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n position: ['top', 'right'],\n cssAnimation: 'vn-fade',\n velocityAnimation: {\n enter: function enter(el) {\n var height = el.clientHeight;\n\n return {\n height: [height, 0],\n opacity: [1, 0]\n };\n },\n leave: {\n height: 0,\n opacity: [0, 1]\n }\n }\n});\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* unused harmony export parse */\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar floatRegexp = '[-+]?[0-9]*.?[0-9]+';\n\nvar types = [{\n name: 'px',\n regexp: new RegExp('^' + floatRegexp + 'px$')\n}, {\n name: '%',\n regexp: new RegExp('^' + floatRegexp + '%$')\n}, {\n name: 'px',\n regexp: new RegExp('^' + floatRegexp + '$')\n}];\n\nvar getType = function getType(value) {\n if (value === 'auto') {\n return {\n type: value,\n value: 0\n };\n }\n\n for (var i = 0; i < types.length; i++) {\n var type = types[i];\n if (type.regexp.test(value)) {\n return {\n type: type.name,\n value: parseFloat(value)\n };\n }\n }\n\n return {\n type: '',\n value: value\n };\n};\n\nvar parse = function parse(value) {\n switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {\n case 'number':\n return { type: 'px', value: value };\n case 'string':\n return getType(value);\n default:\n return { type: '', value: value };\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (parse);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return Id; });\n/* unused harmony export split */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return listToDirection; });\nvar directions = {\n x: ['left', 'center', 'right'],\n y: ['top', 'bottom']\n};\n\nvar Id = function (i) {\n return function () {\n return i++;\n };\n}(0);\n\nvar split = function split(value) {\n if (typeof value !== 'string') {\n return [];\n }\n\n return value.split(/\\s+/gi).filter(function (v) {\n return v;\n });\n};\n\nvar listToDirection = function listToDirection(value) {\n if (typeof value === 'string') {\n value = split(value);\n }\n\n var x = null;\n var y = null;\n\n value.forEach(function (v) {\n if (directions.y.indexOf(v) !== -1) {\n y = v;\n }\n if (directions.x.indexOf(v) !== -1) {\n x = v;\n }\n });\n\n return { x: x, y: y };\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(11)();\n// imports\n\n\n// module\nexports.push([module.i, \".notifications{display:block;position:fixed;z-index:5000}.notification-wrapper{display:block;overflow:hidden;width:100%;margin:0;padding:0}.notification{display:block;box-sizing:border-box;background:#fff;text-align:left}.notification-title{font-weight:600}.vue-notification{font-size:12px;padding:10px;margin:0 5px 5px;color:#fff;background:#44a4fc;border-left:5px solid #187fe7}.vue-notification.warn{background:#ffb648;border-left-color:#f48a06}.vue-notification.error{background:#e54d42;border-left-color:#b82e24}.vue-notification.success{background:#68cd86;border-left-color:#42a85f}.vn-fade-enter-active,.vn-fade-leave-active,.vn-fade-move{transition:all .5s}.vn-fade-enter,.vn-fade-leave-to{opacity:0}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports) {\n\n/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t// when a module is imported multiple times with different media queries.\r\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(4),\n /* template */\n __webpack_require__(16),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(0)(\n /* script */\n __webpack_require__(6),\n /* template */\n __webpack_require__(14),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('transition-group', {\n attrs: {\n \"css\": false\n },\n on: {\n \"enter\": _vm.enter,\n \"leave\": _vm.leave,\n \"after-leave\": _vm.afterLeave\n }\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', {\n staticClass: \"notifications\",\n style: (_vm.styles)\n }, [_c(_vm.componentName, {\n tag: \"component\",\n attrs: {\n \"name\": _vm.animationName\n },\n on: {\n \"enter\": _vm.enter,\n \"leave\": _vm.leave,\n \"after-leave\": _vm.clean\n }\n }, _vm._l((_vm.list), function(item) {\n return (item.state != 2) ? _c('div', {\n key: item.id,\n staticClass: \"notification-wrapper\",\n style: (_vm.notifyWrapperStyle(item)),\n attrs: {\n \"data-id\": item.id\n }\n }, [_vm._t(\"body\", [_c('div', {\n class: _vm.notifyClass(item),\n on: {\n \"click\": function($event) {\n _vm.destroy(item)\n }\n }\n }, [(item.title) ? _c('div', {\n staticClass: \"notification-title\",\n domProps: {\n \"innerHTML\": _vm._s(item.title)\n }\n }) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"notification-content\",\n domProps: {\n \"innerHTML\": _vm._s(item.text)\n }\n })])], {\n item: item,\n close: function () { return _vm.destroy(item); }\n })], 2) : _vm._e()\n }))], 1)\n},staticRenderFns: []}\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('transition-group', {\n attrs: {\n \"name\": _vm.name\n }\n }, [_vm._t(\"default\")], 2)\n},staticRenderFns: []}\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a \n\n\n\n\n// WEBPACK FOOTER //\n// Network-Native-Map-Canvas.vue","\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Network-Native-Map-Dialog.vue","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Network-Native-Map-Dialog-Element.vue","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\nvar getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues.bind(crypto)) ||\n (typeof(msCrypto) != 'undefined' && msCrypto.getRandomValues.bind(msCrypto));\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/rng-browser.js\n// module id = 40\n// module chunks = 0","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex;\n return bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] + '-' +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]] +\n bth[buf[i++]] + bth[buf[i++]];\n}\n\nmodule.exports = bytesToUuid;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/lib/bytesToUuid.js\n// module id = 41\n// module chunks = 0","\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// Notifications.vue","\nimport BrowserHelpers from \"helpers/Browser.helpers\"\nimport InitializeParams from \"initialize-params/Initialize-Params\"\n\nlet exportObject = {\n\n helpers:{\n browserHelpers: BrowserHelpers,\n },\n initializeParams: InitializeParams,\n};\n\n\nif (!process.env.BROWSER)\n module.exports = exportObject;\n\n//browser minimized script\nif ( typeof global.window !== 'undefined')\n global.window.WebDollarUserInterface = exportObject;\n\nif ( typeof window !== 'undefined')\n window.WebDollarUserInterface = exportObject;\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/main.js\n// module id = 43\n// module chunks = 0","import BrowserHelpers from \"helpers/Browser.helpers\"\n\nimport GlobalInitialization from \"./global-initialize/Global-Initialization\"\n\nclass InitializeParams{\n\n constructor(){\n\n this.maps = {\n activated: true,\n type: \"NativeMap\",\n style: \"dark\",\n id: \"WebDollarMap\",\n };\n\n this.alertsStickyBar = {\n activated: true,\n id: \"WebDollarAlertsStickyBar\",\n };\n\n this.mining = {\n activated: true,\n startAutomatically: true,\n style: \"dark\",\n id: \"WebDollar\",\n };\n\n this.wallet = {\n activated: true,\n style: \"dark\",\n id: \"WebDollar\",\n };\n\n\n /**\n * On Window Load\n */\n document.addEventListener(\"DOMContentLoaded\", (event) => {\n\n console.log(\"User-Interface-Loaded\");\n this.load();\n\n });\n\n }\n\n load(){\n\n GlobalInitialization.initializeGlobalSettings();\n\n if (process.env.DEV_SERVER){\n this.mining.startAutomatically = false;\n }\n\n let mainVue = require('./vue/Main-vue').default;\n mainVue(this.mining, this.wallet);\n\n this.createElements();\n\n }\n\n createElements(){\n\n let networkNativeMapMainVue =require('./vue/Network-Native-Map-main-vue').default;\n if (this.maps.activated)\n networkNativeMapMainVue(this.maps);\n\n let alertsStickyBarMainVue = require('./vue/Alerts-Sticky-Bar-main-vue').default;\n if (this.alertsStickyBar.activated)\n alertsStickyBarMainVue(this.alertsStickyBar);\n\n }\n\n\n\n\n}\n\nexport default new InitializeParams();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/initialize-params/Initialize-Params.js\n// module id = 44\n// module chunks = 0","import BrowserHelpers from \"helpers/Browser.helpers\"\n\nclass GlobalInitialization {\n\n constructor() {\n\n }\n\n initializeGlobalSettings() {\n\n //-----------------------\n // Int Script\n //-----------------------\n\n if (document.getElementById(\"WebdollarFont\") === null)\n document.getElementsByTagName(\"head\")[0].insertAdjacentHTML(\"beforeend\", ``);\n\n if (document.getElementById(\"WebdollarViewPort\") === null)\n document.getElementsByTagName(\"head\")[0].insertAdjacentHTML(\"beforeend\", ``)\n\n window.screenHeight = window.innerHeight;\n window.screenWidth = window.innerWidth;\n\n BrowserHelpers.addEvent(window, \"resize\", (event) => {\n window.screenHeight = window.innerHeight;\n window.screenWidth = window.innerWidth;\n });\n }\n\n\n}\n\nexport default new GlobalInitialization()\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/initialize-params/global-initialize/Global-Initialization.js\n// module id = 45\n// module chunks = 0","var Vue = require('vue/dist/vue.min.js');\n\nimport Dashboard from 'components/Dashboard.vue';\nimport Notifications from 'vue-notification';\n\nVue.use(Notifications);\n\n//for safari workaround\nexport default (params)=> {\n\n Dashboard.startAutomatically = params.startAutomatically;\n\n if (document.getElementById('WebDollar') === null)\n document.getElementsByTagName(\"body\")[0].insertAdjacentHTML(\"beforeend\", `
`);\n\n\n new Vue({\n el: '#WebDollar',\n render: (createElement) => {\n let dashboard = createElement(Dashboard, {\n props: {\n startAutomatically: params.startAutomatically,\n }\n })\n\n return dashboard;\n }\n })\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/initialize-params/vue/Main-vue.js\n// module id = 46\n// module chunks = 0","(function (global, undefined) {\n \"use strict\";\n\n if (global.setImmediate) {\n return;\n }\n\n var nextHandle = 1; // Spec says greater than zero\n var tasksByHandle = {};\n var currentlyRunningATask = false;\n var doc = global.document;\n var registerImmediate;\n\n function setImmediate(callback) {\n // Callback can either be a function or a string\n if (typeof callback !== \"function\") {\n callback = new Function(\"\" + callback);\n }\n // Copy function arguments\n var args = new Array(arguments.length - 1);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i + 1];\n }\n // Store and register the task\n var task = { callback: callback, args: args };\n tasksByHandle[nextHandle] = task;\n registerImmediate(nextHandle);\n return nextHandle++;\n }\n\n function clearImmediate(handle) {\n delete tasksByHandle[handle];\n }\n\n function run(task) {\n var callback = task.callback;\n var args = task.args;\n switch (args.length) {\n case 0:\n callback();\n break;\n case 1:\n callback(args[0]);\n break;\n case 2:\n callback(args[0], args[1]);\n break;\n case 3:\n callback(args[0], args[1], args[2]);\n break;\n default:\n callback.apply(undefined, args);\n break;\n }\n }\n\n function runIfPresent(handle) {\n // From the spec: \"Wait until any invocations of this algorithm started before this one have completed.\"\n // So if we're currently running a task, we'll need to delay this invocation.\n if (currentlyRunningATask) {\n // Delay by doing a setTimeout. setImmediate was tried instead, but in Firefox 7 it generated a\n // \"too much recursion\" error.\n setTimeout(runIfPresent, 0, handle);\n } else {\n var task = tasksByHandle[handle];\n if (task) {\n currentlyRunningATask = true;\n try {\n run(task);\n } finally {\n clearImmediate(handle);\n currentlyRunningATask = false;\n }\n }\n }\n }\n\n function installNextTickImplementation() {\n registerImmediate = function(handle) {\n process.nextTick(function () { runIfPresent(handle); });\n };\n }\n\n function canUsePostMessage() {\n // The test against `importScripts` prevents this implementation from being installed inside a web worker,\n // where `global.postMessage` means something completely different and can't be used for this purpose.\n if (global.postMessage && !global.importScripts) {\n var postMessageIsAsynchronous = true;\n var oldOnMessage = global.onmessage;\n global.onmessage = function() {\n postMessageIsAsynchronous = false;\n };\n global.postMessage(\"\", \"*\");\n global.onmessage = oldOnMessage;\n return postMessageIsAsynchronous;\n }\n }\n\n function installPostMessageImplementation() {\n // Installs an event handler on `global` for the `message` event: see\n // * https://developer.mozilla.org/en/DOM/window.postMessage\n // * http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#crossDocumentMessages\n\n var messagePrefix = \"setImmediate$\" + Math.random() + \"$\";\n var onGlobalMessage = function(event) {\n if (event.source === global &&\n typeof event.data === \"string\" &&\n event.data.indexOf(messagePrefix) === 0) {\n runIfPresent(+event.data.slice(messagePrefix.length));\n }\n };\n\n if (global.addEventListener) {\n global.addEventListener(\"message\", onGlobalMessage, false);\n } else {\n global.attachEvent(\"onmessage\", onGlobalMessage);\n }\n\n registerImmediate = function(handle) {\n global.postMessage(messagePrefix + handle, \"*\");\n };\n }\n\n function installMessageChannelImplementation() {\n var channel = new MessageChannel();\n channel.port1.onmessage = function(event) {\n var handle = event.data;\n runIfPresent(handle);\n };\n\n registerImmediate = function(handle) {\n channel.port2.postMessage(handle);\n };\n }\n\n function installReadyStateChangeImplementation() {\n var html = doc.documentElement;\n registerImmediate = function(handle) {\n // Create a \\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-aae30ed8\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Dashboard.vue\n// module id = 51\n// module chunks = 0","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-style-loader/lib/listToStyles.js\n// module id = 52\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-8087f122\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Wallet.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Wallet.vue\"\nimport __vue_script__ from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Wallet.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-8087f122\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Wallet.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Wallet.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-8087f122\", Component.options)\n } else {\n hotAPI.reload(\"data-v-8087f122\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Wallet.vue\n// module id = 53\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-8087f122\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Wallet.vue\n// module id = 55\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4a4e8449\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/UI/icons/icon.vue\n// module id = 57\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n staticClass: \"webdollarFont\",\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: this.width,\n height: this.height,\n viewBox: \"0 0 \" + this.width + \" \" + this.width\n },\n on: { click: this.handleClick }\n },\n [\n _vm.icon === \"chevron-double-down\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M16.797 13.5c0 0.125-0.063 0.266-0.156 0.359l-7.281 7.281c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-7.281-7.281c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l0.781-0.781c0.094-0.094 0.219-0.156 0.359-0.156 0.125 0 0.266 0.063 0.359 0.156l6.141 6.141 6.141-6.141c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l0.781 0.781c0.094 0.094 0.156 0.234 0.156 0.359zM16.797 7.5c0 0.125-0.063 0.266-0.156 0.359l-7.281 7.281c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-7.281-7.281c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l0.781-0.781c0.094-0.094 0.219-0.156 0.359-0.156 0.125 0 0.266 0.063 0.359 0.156l6.141 6.141 6.141-6.141c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l0.781 0.781c0.094 0.094 0.156 0.234 0.156 0.359z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"chevron-double-up\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M16.797 20.5c0 0.125-0.063 0.266-0.156 0.359l-0.781 0.781c-0.094 0.094-0.219 0.156-0.359 0.156-0.125 0-0.266-0.063-0.359-0.156l-6.141-6.141-6.141 6.141c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-0.781-0.781c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l7.281-7.281c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l7.281 7.281c0.094 0.094 0.156 0.234 0.156 0.359zM16.797 14.5c0 0.125-0.063 0.266-0.156 0.359l-0.781 0.781c-0.094 0.094-0.219 0.156-0.359 0.156-0.125 0-0.266-0.063-0.359-0.156l-6.141-6.141-6.141 6.141c-0.094 0.094-0.234 0.156-0.359 0.156s-0.266-0.063-0.359-0.156l-0.781-0.781c-0.094-0.094-0.156-0.234-0.156-0.359s0.063-0.266 0.156-0.359l7.281-7.281c0.094-0.094 0.234-0.156 0.359-0.156s0.266 0.063 0.359 0.156l7.281 7.281c0.094 0.094 0.156 0.234 0.156 0.359z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"chevron-down\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M22.54 10.821l-9.938 9.924c-0.335 0.335-0.871 0.335-1.205 0l-9.938-9.924c-0.335-0.335-0.335-0.884 0-1.219l2.223-2.21c0.335-0.335 0.871-0.335 1.205 0l7.112 7.112 7.112-7.112c0.335-0.335 0.871-0.335 1.205 0l2.223 2.21c0.335 0.335 0.335 0.884 0 1.219z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"chevron-up\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M22.54 17.826l-2.223 2.21c-0.335 0.335-0.871 0.335-1.205 0l-7.112-7.112-7.112 7.112c-0.335 0.335-0.871 0.335-1.205 0l-2.223-2.21c-0.335-0.335-0.335-0.884 0-1.219l9.938-9.924c0.335-0.335 0.871-0.335 1.205 0l9.938 9.924c0.335 0.335 0.335 0.884 0 1.219z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"download\" || _vm.icon === \"down\"\n ? _c(\"path\", {\n attrs: { d: \"M12 23.25l11.25-11.25h-6.75v-12h-9v12h-6.75z\" }\n })\n : _vm._e(),\n _vm.icon === \"key\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M12.804 9c1.038-1.793 2.977-3 5.196-3 3.311 0 6 2.689 6 6s-2.689 6-6 6c-2.219 0-4.158-1.207-5.196-3h-3.804l-1.506-1.503-1.494 1.503-1.48-1.503-1.52 1.503-3-3.032 2.53-2.968h10.274zm7.696 1.5c.828 0 1.5.672 1.5 1.5s-.672 1.5-1.5 1.5-1.5-.672-1.5-1.5.672-1.5 1.5-1.5z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"lock-closed\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M18 10v-4c0-3.313-2.687-6-6-6s-6 2.687-6 6v4h-3v14h18v-14h-3zm-5 7.723v2.277h-2v-2.277c-.595-.347-1-.984-1-1.723 0-1.104.896-2 2-2s2 .896 2 2c0 .738-.404 1.376-1 1.723zm-5-7.723v-4c0-2.206 1.794-4 4-4 2.205 0 4 1.794 4 4v4h-8z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"lock-open\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M12 10v-4c0-3.313-2.687-6-6-6s-6 2.687-6 6v3h2v-3c0-2.206 1.794-4 4-4s4 1.794 4 4v4h-4v14h18v-14h-12z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"plus\"\n ? _c(\"path\", { attrs: { d: \"M24 9h-9v-9h-6v9h-9v6h9v9h6v-9h9z\" } })\n : _vm._e(),\n _vm.icon === \"plus-square\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M12 0c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm7 14h-5v5h-4v-5h-5v-4h5v-5h4v5h5v4z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"x\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"upload\" || _vm.icon === \"up\"\n ? _c(\"path\", {\n attrs: { d: \"M12 0.75l-11.25 11.25h6.75v12h9v-12h6.75z\" }\n })\n : _vm._e(),\n _vm.icon === \"mining\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M23.672 19.429l-7.067-7.067c-0.438-0.438-1.153-0.438-1.591 0l-0.53 0.53-4.313-4.313 7.079-7.079h-7.5l-3.329 3.329-0.33-0.329h-1.591v1.591l0.329 0.329-4.829 4.83 3.75 3.75 4.829-4.829 4.313 4.313-0.53 0.53c-0.438 0.438-0.438 1.153 0 1.591l7.067 7.067c0.438 0.438 1.153 0.438 1.591 0l2.652-2.652c0.438-0.437 0.438-1.153 0-1.591z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"sun-glasses\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M16.5 10.707c0.063-0.010 0.126-0.021 0.19-0.035 3.203-0.802 7.718-0.765 10.041-0.409 0.28 0.043 0.325 1.215 0.075 1.256-0.459 0.169-0.655 0.59-0.655 0.59s-0.137 0.374-0.535 1.894c-0.398 1.52-1.347 1.702-1.347 1.702s-1.162 0.261-2.502 0.261c-1.34 0-2.142-0.055-3-0.446s-1.233-1.477-1.233-1.477c0 0-0.432-0.937-0.73-1.82-0.045-0.134-0.163-0.225-0.304-0.284-0.14 0.058-0.259 0.15-0.304 0.284-0.298 0.884-0.73 1.82-0.73 1.82s-0.375 1.087-1.233 1.477c-0.858 0.39-1.66 0.446-3 0.446s-2.502-0.261-2.502-0.261c0 0-0.949-0.182-1.347-1.702s-0.535-1.894-0.535-1.894c0 0-0.196-0.421-0.655-0.59-0.249-0.041-0.205-1.213 0.075-1.256 2.323-0.356 6.839-0.393 10.041 0.409 0.064 0.013 0.127 0.025 0.19 0.035zM16.5 29c6.904 0 12.5-5.596 12.5-12.5s-5.596-12.5-12.5-12.5c-6.904 0-12.5 5.596-12.5 12.5s5.596 12.5 12.5 12.5zM16.481 22c3.481 0 5.519-2 5.519-2v1c0 0-2.037 2-5.519 2s-5.481-2-5.481-2v-1c0 0 2 2 5.481 2z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"sun-glasses2\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M26.11 10.181v0c-2.442-0.275-6.483-0.245-9.42 0.491-0.064 0.013-0.127 0.025-0.19 0.035-0.063-0.010-0.126-0.021-0.19-0.035-2.937-0.736-6.978-0.765-9.42-0.491v0c2.056-3.121 5.593-5.181 9.61-5.181s7.554 2.060 9.61 5.181zM26.856 11.494c0.733 1.513 1.144 3.212 1.144 5.006 0 6.351-5.149 11.5-11.5 11.5s-11.5-5.149-11.5-11.5c0-1.794 0.411-3.493 1.144-5.006 0.015 0.014 0.031 0.023 0.049 0.026 0.459 0.169 0.655 0.59 0.655 0.59s0.137 0.374 0.535 1.894c0.398 1.52 1.347 1.702 1.347 1.702s1.162 0.261 2.502 0.261c1.34 0 2.142-0.055 3-0.446s1.233-1.477 1.233-1.477c0 0 0.432-0.937 0.73-1.82 0.045-0.134 0.163-0.225 0.304-0.284 0.14 0.058 0.259 0.15 0.304 0.284 0.298 0.884 0.73 1.82 0.73 1.82s0.375 1.087 1.233 1.477c0.858 0.39 1.66 0.446 3 0.446s2.502-0.261 2.502-0.261c0 0 0.949-0.182 1.347-1.702s0.535-1.894 0.535-1.894c0 0 0.196-0.421 0.655-0.59 0.018-0.003 0.034-0.012 0.049-0.026v0zM16.5 29c6.904 0 12.5-5.596 12.5-12.5s-5.596-12.5-12.5-12.5c-6.904 0-12.5 5.596-12.5 12.5s5.596 12.5 12.5 12.5v0zM16.481 22c-3.481 0-5.481-2-5.481-2v1c0 0 2 2 5.481 2s5.519-2 5.519-2v-1c0 0-2.037 2-5.519 2v0z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"terminal\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M0 2v28h32v-28h-32zM30 28h-28v-24h28v24zM28 6h-24v20h24v-20zM14 16h-2v2h-2v2h-2v-2h2v-2h2v-2h-2v-2h-2v-2h2v2h2v2h2v2zM22 20h-6v-2h6v2z\"\n }\n })\n : _vm._e(),\n _vm.icon === \"network\"\n ? _c(\"path\", {\n attrs: {\n d:\n \"M16 0c-8.837 0-16 7.163-16 16s7.163 16 16 16 16-7.163 16-16-7.163-16-16-16zM16 30c-1.967 0-3.84-0.407-5.538-1.139l7.286-8.197c0.163-0.183 0.253-0.419 0.253-0.664v-3c0-0.552-0.448-1-1-1-3.531 0-7.256-3.671-7.293-3.707-0.188-0.188-0.442-0.293-0.707-0.293h-4c-0.552 0-1 0.448-1 1v6c0 0.379 0.214 0.725 0.553 0.894l3.447 1.724v5.871c-3.627-2.53-6-6.732-6-11.489 0-2.147 0.484-4.181 1.348-6h3.652c0.265 0 0.52-0.105 0.707-0.293l4-4c0.188-0.188 0.293-0.442 0.293-0.707v-2.419c1.268-0.377 2.61-0.581 4-0.581 2.2 0 4.281 0.508 6.134 1.412-0.13 0.109-0.256 0.224-0.376 0.345-1.133 1.133-1.757 2.64-1.757 4.243s0.624 3.109 1.757 4.243c1.139 1.139 2.663 1.758 4.239 1.758 0.099 0 0.198-0.002 0.297-0.007 0.432 1.619 1.211 5.833-0.263 11.635-0.014 0.055-0.022 0.109-0.026 0.163-2.541 2.596-6.084 4.208-10.004 4.208z\"\n }\n })\n : _vm._e()\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-4a4e8449\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4a4e8449\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/UI/icons/icon.vue\n// module id = 58\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6fd10b33\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Address.vue\n// module id = 60\n// module chunks = 0","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 61\n// module chunks = 0","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 62\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-fe1c3922\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Address-main.modal.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Address-main.modal.vue\"\nimport __vue_script__ from \"!!!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Address-main.modal.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fe1c3922\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Address-main.modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-fe1c3922\", Component.options)\n } else {\n hotAPI.reload(\"data-v-fe1c3922\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue\n// module id = 63\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-fe1c3922\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue\n// module id = 65\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-d4961080\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/UI/modal/Modal.vue\n// module id = 67\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return this.modalOpened\n ? _c(\"div\", [\n _c(\"div\", {\n staticClass: \"modalBackground\",\n on: { click: this.closeModal }\n }),\n _c(\"div\", { ref: \"refModal\", staticClass: \"modal\" }, [\n _c(\"div\", { staticClass: \"close\", on: { click: this.closeModal } }, [\n _vm._v(\"\\n x\\n \")\n ]),\n _c(\"div\", { staticClass: \"headerModal\" }, [\n _c(\"div\", { staticClass: \"title\" }, [\n _vm._v(\n \"\\n \" + _vm._s(this.title) + \"\\n \"\n )\n ])\n ]),\n _c(\n \"div\",\n { staticClass: \"content modifyPadding\" },\n [_vm._t(\"content\")],\n 2\n )\n ])\n ])\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-d4961080\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-d4961080\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/UI/modal/Modal.vue\n// module id = 68\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-53087030\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Balance/Show-Balance.vue\n// module id = 70\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n staticStyle: { \"enable-background\": \"new 0 0 50 50\" },\n attrs: {\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"xmlns:xlink\": \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n width: this.width,\n height: this.height,\n viewBox: \"0 0 50 50\",\n \"xml:space\": \"preserve\"\n }\n },\n [\n _c(\n \"path\",\n {\n attrs: {\n d:\n \"M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z\"\n }\n },\n [\n _c(\"animateTransform\", {\n attrs: {\n attributeType: \"xml\",\n attributeName: \"transform\",\n type: \"rotate\",\n from: \"0 25 25\",\n to: \"360 25 25\",\n dur: \"0.6s\",\n repeatCount: \"indefinite\"\n }\n })\n ],\n 1\n )\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-f5858e2a\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f5858e2a\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/UI/elements/Loading-Spinner.vue\n// module id = 71\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"balanceShowContent\",\n staticStyle: { display: \"inline-block\" }\n },\n [\n !this.loaded\n ? _c(\"loading-spinner\", { staticClass: \"fontColor spinnerBalance\" })\n : _vm._e(),\n this.loaded\n ? _c(\"div\", { staticClass: \"show-balance-span\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(\n this.formatMoneyNumber(\n this.computePrice +\n (this.showPoolReward === true\n ? this.computePoolReward\n : 0),\n 2\n )\n ) +\n \"\\n \"\n )\n ])\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-53087030\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-53087030\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Balance/Show-Balance.vue\n// module id = 72\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0a5495d6\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Balance/Balances/Show-Sum-Balances.vue\n// module id = 74\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticStyle: { display: \"inline-block\" } },\n [\n !this.loaded\n ? _c(\"loading-spinner\", { staticClass: \"fontColor\" })\n : _vm._e(),\n this.loaded\n ? _c(\"div\", { staticClass: \"show-balance-span\" }, [\n _vm._v(\n \"\\n \" +\n _vm._s(\n this.formatMoneyNumber(\n this.sum +\n (this.showPoolReward === true\n ? this.computePoolReward\n : 0),\n 2\n )\n ) +\n \"\\n \"\n )\n ])\n : _vm._e()\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-0a5495d6\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0a5495d6\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Balance/Balances/Show-Sum-Balances.vue\n// module id = 75\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2382f042\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Transactions.part.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transactions.part.vue\"\nimport __vue_script__ from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transactions.part.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2382f042\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Transactions.part.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-2382f042\", Component.options)\n } else {\n hotAPI.reload(\"data-v-2382f042\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue\n// module id = 76\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2382f042\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue\n// module id = 78\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0eff801f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Transaction.element.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transaction.element.vue\"\nimport __vue_script__ from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transaction.element.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0eff801f\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Transaction.element.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-0eff801f\", Component.options)\n } else {\n hotAPI.reload(\"data-v-0eff801f\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue\n// module id = 79\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0eff801f\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue\n// module id = 81\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4868e878\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Transaction-From.element.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transaction-From.element.vue\"\nimport __vue_script__ from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transaction-From.element.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4868e878\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Transaction-From.element.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-4868e878\", Component.options)\n } else {\n hotAPI.reload(\"data-v-4868e878\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue\n// module id = 82\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-4868e878\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue\n// module id = 84\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"ul\", { staticClass: \"destinations\" }, [\n _c(\"li\", { staticClass: \"destinationElement transactionElement\" }, [\n _c(\"img\", {\n staticClass: \"walletAddressImage\",\n attrs: { title: this.fromAddress.address, src: this.getAddressPic },\n on: { click: _vm.copyToClipboard }\n }),\n _c(\"div\", { staticClass: \"money\", attrs: { title: \"Amount\" } }, [\n _c(\"span\", { staticClass: \"amount\" }, [\n _vm._v(\"-\" + _vm._s(_vm.getAmount))\n ]),\n _c(\"span\", { staticClass: \"currency\" }, [_vm._v(\"WEBD\")])\n ])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-4868e878\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4868e878\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-From.element.vue\n// module id = 85\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6a9e5e15\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Transaction-To.element.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transaction-To.element.vue\"\nimport __vue_script__ from \"!!!../../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transaction-To.element.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6a9e5e15\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Transaction-To.element.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6a9e5e15\", Component.options)\n } else {\n hotAPI.reload(\"data-v-6a9e5e15\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue\n// module id = 86\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-6a9e5e15\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue\n// module id = 88\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"ul\", { staticClass: \"destinations\" }, [\n _c(\"li\", { staticClass: \"destinationElement transactionElement\" }, [\n _c(\"img\", {\n staticClass: \"walletAddressImage\",\n attrs: { title: this.toAddress.address, src: this.getAddressPic },\n on: { click: _vm.copyToClipboard }\n }),\n _c(\"div\", { staticClass: \"money\", attrs: { title: \"Amount\" } }, [\n _c(\"span\", { staticClass: \"amount\" }, [_vm._v(_vm._s(_vm.getAmount))]),\n _c(\"span\", { staticClass: \"currency\" }, [_vm._v(\"WEBD\")])\n ])\n ])\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-6a9e5e15\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6a9e5e15\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction-To.element.vue\n// module id = 89\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _vm.transaction !== null\n ? _c(\n \"li\",\n {\n staticClass: \"transferListElement\",\n class: !this.transaction.confirmed\n ? \"statusPending\"\n : \"statusConfirmed\"\n },\n [\n _c(\n \"ul\",\n { staticClass: \"sources\" },\n _vm._l(_vm.transaction.from.addresses, function(\n fromAddress,\n index\n ) {\n return _c(\"transaction-from\", {\n key: \"transactionSource\" + index,\n attrs: { fromAddress: fromAddress }\n })\n })\n ),\n _c(\n \"ul\",\n { staticClass: \"destinations\" },\n _vm._l(_vm.transaction.to.addresses, function(toAddress, index) {\n return _c(\"transaction-to\", {\n key: \"transactionDestination\" + index,\n attrs: { toAddress: toAddress }\n })\n })\n ),\n _c(\"div\", { staticClass: \"status\" }, [\n _vm._v(\n \"\\n\\n \" +\n _vm._s(this.transaction.confirmed ? \"Confirmed\" : \"Pending\") +\n \"\\n\\n \"\n )\n ])\n ]\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-0eff801f\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0eff801f\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transaction.element.vue\n// module id = 90\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { ref: \"refTransferList\", staticClass: \"transferList\" }, [\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.objectIsEmpty(_vm.transactions),\n expression: \"objectIsEmpty(transactions)\"\n }\n ],\n staticClass: \"noTransactions\"\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"miningAddress\",\n staticStyle: { color: \"white!important\" }\n },\n [_vm._v(\"You don't have any transaction in last 20 blocks\")]\n )\n ]\n ),\n _c(\n \"div\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !_vm.objectIsEmpty(_vm.transactions),\n expression: \"!objectIsEmpty(transactions)\"\n }\n ]\n },\n [\n _c(\n \"span\",\n {\n staticClass: \"miningAddress\",\n staticStyle: { color: \"white!important\" }\n },\n [_vm._v(\"Transactions from last 20 blocks\")]\n ),\n _vm._m(0),\n _c(\n \"ul\",\n { staticClass: \"transferListContainer\" },\n _vm._l(_vm.orderedTransactions, function(tx, index) {\n return _c(\"transaction\", {\n key: \"transaction\" + index,\n attrs: { transaction: tx }\n })\n })\n )\n ]\n )\n ])\n}\nvar staticRenderFns = [\n function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"headerTable\" }, [\n _c(\"span\", { staticClass: \"headerElement fromItem\" }, [_vm._v(\"From\")]),\n _c(\"span\", { staticClass: \"headerElement\" }, [_vm._v(\"To\")]),\n _c(\"span\", { staticClass: \"headerElement\" }, [_vm._v(\"Status\")])\n ])\n }\n]\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-2382f042\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2382f042\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transactions/Transactions.part.vue\n// module id = 91\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-cff1114e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Transfer.part.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transfer.part.vue\"\nimport __vue_script__ from \"!!!../../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Transfer.part.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-cff1114e\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Transfer.part.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-cff1114e\", Component.options)\n } else {\n hotAPI.reload(\"data-v-cff1114e\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue\n// module id = 92\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-cff1114e\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue\n// module id = 94\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"transferList\" }, [\n _c(\"p\", { staticClass: \"title\" }, [_vm._v(\"Transfer WEBD\")]),\n _c(\n \"div\",\n {\n staticClass: \"transfer\",\n on: {\n keyup: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.handleCreateTransaction($event)\n }\n }\n },\n [\n _c(\"div\", [\n _c(\"div\", { staticClass: \"imageAndInput\" }, [\n _c(\"div\", [\n _c(\"img\", {\n staticClass: \"walletAddressImage transferWalletAddressImage\",\n class:\n this.errorToAddressMessage === \"Invalid Address\"\n ? \"hide\"\n : \"\",\n attrs: { src: this.getAddressPic }\n })\n ]),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.toAddress,\n expression: \"toAddress\"\n }\n ],\n staticClass: \"address \",\n attrs: { placeholder: \"Recipient Address\" },\n domProps: { value: _vm.toAddress },\n on: {\n keyup: this.handleChangeToAddress,\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.toAddress = $event.target.value\n }\n }\n })\n ])\n ]),\n _c(\"span\", {\n staticClass: \"editError\",\n class: this.errorToAddressMessage ? \"\" : \"hide\",\n domProps: { innerHTML: _vm._s(this.errorToAddressMessage) }\n })\n ]),\n _c(\"div\", [\n _c(\"div\", { staticClass: \"moneyBox\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.toAmount,\n expression: \"toAmount\"\n }\n ],\n staticClass: \"amount\",\n attrs: { type: \"number\", placeholder: \"WEBD Amount\" },\n domProps: { value: _vm.toAmount },\n on: {\n keyup: this.handleChangeToAmount,\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.toAmount = $event.target.value\n }\n }\n }),\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.fee,\n expression: \"fee\"\n }\n ],\n staticClass: \"amount\",\n attrs: { type: \"number\", placeholder: \"Fee\" },\n domProps: { value: _vm.fee },\n on: {\n keyup: this.handleChangeToFee,\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.fee = $event.target.value\n }\n }\n })\n ])\n ]),\n _c(\"span\", {\n staticClass: \"editError editError2\",\n class: this.errorToAmountMessage ? \"\" : \"hide\",\n domProps: { innerHTML: _vm._s(this.errorToAmountMessage) }\n }),\n _c(\n \"button\",\n {\n staticClass: \"button\",\n class: this.successMessage ? \"hide\" : \"\",\n on: { click: this.handleCreateTransaction }\n },\n [_vm._v(\"\\n SEND WEBD\\n \")]\n )\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-cff1114e\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-cff1114e\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Main-Modal/parts/Transfer.part.vue\n// module id = 95\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return this.address !== null && this.address !== undefined\n ? _c(\n \"div\",\n [\n _c(\n \"modal\",\n {\n ref: \"refModal\",\n staticClass: \"addressMainModal\",\n attrs: { title: \"Wallet Address\" }\n },\n [\n _c(\n \"div\",\n { attrs: { slot: \"content\" }, slot: \"content\" },\n [\n _c(\"div\", { staticClass: \"twoColumns\" }, [\n _c(\"div\", { staticClass: \"section\" }, [\n _c(\"div\", [\n _c(\"img\", {\n staticClass: \"walletAddressImage\",\n attrs: { src: this.getAddressPic }\n }),\n _c(\n \"b\",\n {\n staticStyle: { color: \"gray\" },\n attrs: { id: \"walletID\" }\n },\n [_vm._v(_vm._s(this.address.toString()))]\n )\n ]),\n _c(\n \"div\",\n {\n staticClass: \"copyButton\",\n class:\n this.clipboardText != \"Copied\"\n ? \"modalButton2\"\n : \"modalButton2Success\",\n on: { click: _vm.copyToClipboard }\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(this.clipboardText) +\n \"\\n \"\n )\n ]\n )\n ]),\n _c(\"div\", { staticClass: \"section balanceContent\" }, [\n _c(\"div\", { staticClass: \"balanceText\" }, [\n _c(\n \"div\",\n {\n staticClass: \"balanceTitle\",\n attrs: { title: \"Balance available to be spent\" }\n },\n [\n _vm._v(\n \"\\n Available Balance:\\n \"\n )\n ]\n ),\n _c(\n \"div\",\n {\n staticClass: \"balanceAmount\",\n attrs: { title: \"Balance available to be spent\" }\n },\n [\n _c(\"show-balance\", {\n attrs: { address: this.address, currency: \"0x01\" }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"balanceTitle\",\n staticStyle: { \"letter-spacing\": \"0.1px\" },\n attrs: {\n title:\n \"The balance you will have at the next block mined by your pool\"\n }\n },\n [\n _vm._v(\n \"\\n Potential Balance:\\n \"\n )\n ]\n ),\n _c(\n \"div\",\n {\n staticClass: \"balanceAmount\",\n attrs: {\n title:\n \"The balance you will have at the next block mined by your pool\"\n }\n },\n [\n _c(\"show-balance\", {\n attrs: {\n showPoolReward: _vm.isMiningAddress,\n address: this.address,\n currency: \"0x01\"\n }\n })\n ],\n 1\n )\n ]),\n _vm.isMiningAddress\n ? _c(\"div\", { staticClass: \"miningAddress\" }, [\n _vm._v(\n \"\\n You are mining on this Address\\n \"\n )\n ])\n : _vm._e(),\n !_vm.isMiningAddress\n ? _c(\n \"div\",\n {\n staticClass: \"modalButton2\",\n on: { click: _vm.handleSetAddress }\n },\n [\n _vm._v(\n \"\\n Mine on this address\\n \"\n )\n ]\n )\n : _vm._e()\n ])\n ]),\n _c(\"div\", { staticClass: \"addressActions\" }, [\n _c(\n \"div\",\n {\n class: [\n this.partActivated === \"transfer\"\n ? \"actionButton activeActionButton\"\n : \"actionButton\"\n ],\n on: { click: this.showTransfer }\n },\n [\n _vm._v(\n \"\\n Transfer\\n \"\n )\n ]\n ),\n _c(\n \"div\",\n {\n class: [\n this.partActivated === \"transactions\"\n ? \"actionButton activeActionButton\"\n : \"actionButton\"\n ],\n on: { click: this.showTransactions }\n },\n [\n _vm._v(\n \"\\n Transactions\\n \"\n )\n ]\n )\n ]),\n _c(\"transfer\", {\n style: {\n display:\n this.partActivated === \"transfer\" ? \"block\" : \"none\"\n },\n attrs: { address: this.address },\n on: { onTransferSuccess: this.handleTransferSuccess }\n }),\n _c(\"transactions\", {\n style: {\n display:\n this.partActivated === \"transactions\" ? \"block\" : \"none\"\n },\n attrs: { address: this.address }\n })\n ],\n 1\n )\n ]\n )\n ],\n 1\n )\n : _vm._e()\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-fe1c3922\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-fe1c3922\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Main-Modal/Address-main.modal.vue\n// module id = 96\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-3b585992\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Lock.modal.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Lock.modal.vue\"\nimport __vue_script__ from \"!!!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Lock.modal.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3b585992\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Lock.modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Lock.modal.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-3b585992\", Component.options)\n } else {\n hotAPI.reload(\"data-v-3b585992\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Lock.modal.vue\n// module id = 97\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-3b585992\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Lock.modal.vue\n// module id = 99\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"div\", { ref: \"refClipboardCopy\" }),\n _c(\n \"Modal\",\n { ref: \"refPassModal\", attrs: { title: \"Wallet Address Secure\" } },\n [\n _c(\"div\", { attrs: { slot: \"content\" }, slot: \"content\" }, [\n _c(\"div\", [\n _c(\"span\", { staticClass: \"info\" }, [\n _vm._v(\n \"Misplacement of your password will result in loss of access to your WEBD.\"\n )\n ]),\n _c(\"div\", { staticClass: \"inputAndGeneratorPass\" }, [\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.walletAddressPassword,\n expression: \"walletAddressPassword\"\n }\n ],\n staticClass: \"inputDeleteModalPass\",\n attrs: { placeholder: \"Your 12 words Password\" },\n domProps: { value: _vm.walletAddressPassword },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.walletAddressPassword = $event.target.value\n }\n }\n })\n ]),\n _c(\"div\", [\n _c(\n \"div\",\n {\n staticClass: \"modalButtonPass generatorButtonPass\",\n on: { click: this.generateRandomPassword }\n },\n [\n _vm._v(\n \"\\n Generate random password\\n \"\n )\n ]\n )\n ])\n ]),\n _c(\"span\", { staticClass: \"errorMessage\" }, [\n _vm._v(_vm._s(this.errorMessage))\n ]),\n _c(\n \"div\",\n {\n staticClass: \"modalButtonPass\",\n on: { click: this.createPassword }\n },\n [_vm._v(\"\\n Set Password\\n \")]\n )\n ])\n ])\n ]\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-3b585992\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3b585992\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Lock.modal.vue\n// module id = 100\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-dc2c73dc\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Delete.modal.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Delete.modal.vue\"\nimport __vue_script__ from \"!!!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Delete.modal.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-dc2c73dc\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Delete.modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Wallet/Address/Modals/Delete.modal.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-dc2c73dc\", Component.options)\n } else {\n hotAPI.reload(\"data-v-dc2c73dc\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Wallet/Address/Modals/Delete.modal.vue\n// module id = 101\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-dc2c73dc\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Wallet/Address/Modals/Delete.modal.vue\n// module id = 103\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"Modal\", { ref: \"refModal\", attrs: { title: \"Delete Address\" } }, [\n _c(\n \"div\",\n {\n attrs: { slot: \"content\" },\n on: {\n keyup: function($event) {\n if (\n !(\"button\" in $event) &&\n _vm._k($event.keyCode, \"enter\", 13, $event.key, \"Enter\")\n ) {\n return null\n }\n return _vm.deleteAddress($event)\n }\n },\n slot: \"content\"\n },\n [\n _c(\"div\", { staticClass: \"descriptionText\" }, [\n _vm._v(\"\\n\\n To delete this address please type \"),\n _c(\"span\", { staticClass: \"coloredText\" }, [_vm._v(\"DELETE\")])\n ]),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.inputValue,\n expression: \"inputValue\"\n }\n ],\n staticClass: \"inputDeleteModal\",\n domProps: { value: _vm.inputValue },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.inputValue = $event.target.value\n }\n }\n }),\n _c(\n \"div\",\n {\n staticClass: \"modalButton\",\n on: { click: this.deleteAddress }\n },\n [_vm._v(\"\\n Delete\\n \")]\n )\n ])\n ]\n )\n ])\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-dc2c73dc\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-dc2c73dc\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Modals/Delete.modal.vue\n// module id = 104\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { staticClass: \"walletAddress hoverAddress\" },\n [\n _c(\n \"div\",\n {\n staticClass: \"addressIdentityBox\",\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleTransferFunds($event)\n }\n }\n },\n [\n _c(\"img\", {\n staticClass: \"walletAddressImage\",\n attrs: { src: this.getAddressPic }\n }),\n this.isMiningAddress\n ? _c(\"icon\", {\n staticClass: \"btn actuallMiningAddress isImining\",\n staticStyle: { display: \"inline-block\" },\n attrs: { alt: \"Mining\", text: \"Mining Address\", icon: \"mining\" }\n })\n : _vm._e(),\n _c(\n \"b\",\n { staticClass: \"fontColor\" },\n [\n _c(\"show-balance\", {\n attrs: {\n showPoolReward: _vm.isMiningAddress,\n address: this.address,\n currency: \"0x01\"\n }\n })\n ],\n 1\n ),\n _c(\"b\", { staticClass: \"amountCurrency currencyName\" }, [\n _vm._v(\"WEBD\")\n ]),\n _c(\n \"div\",\n { attrs: { id: \"transactionAddressStatus\" } },\n [\n _c(\"icon\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: Object.keys(this.sendingMoney).length !== 0,\n expression: \"Object.keys(this.sendingMoney).length !== 0\"\n }\n ],\n staticClass: \"walletMiningStatus walletSendingImg\",\n attrs: { icon: \"chevron-double-up\" }\n }),\n _c(\"icon\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: Object.keys(this.receivingMoney).length !== 0,\n expression: \"Object.keys(this.receivingMoney).length !== 0\"\n }\n ],\n staticClass: \"walletMiningStatus walletReceivingImg\",\n attrs: { icon: \"chevron-double-down\" }\n })\n ],\n 1\n )\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"actionsBox hoverAddress\",\n style: {\n marginBottom: this.opened\n ? this.walletButtonMarginOpened + \"px\"\n : this.walletButtonMarginClosed + \"px\"\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"addressButton\",\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleExport($event)\n }\n }\n },\n [\n _c(\"icon\", {\n staticClass: \"btn\",\n attrs: {\n alt: \"Secure Wallet\",\n text: \"Download Address\",\n icon: \"download\"\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"addressButton\",\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleLock($event)\n }\n }\n },\n [\n _c(\"icon\", {\n staticClass: \"btn\",\n attrs: {\n alt: \"Secure Wallet\",\n text: \"Lock Address\",\n icon: this.addressLocked ? \"lock-closed\" : \"lock-open\"\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n staticClass: \"addressButton\",\n on: {\n click: function($event) {\n $event.stopPropagation()\n return _vm.handleDelete($event)\n }\n }\n },\n [\n _c(\"icon\", {\n staticClass: \"btn\",\n attrs: {\n alt: \"Secure Wallet\",\n text: \"Delete Address\",\n icon: \"x\"\n }\n })\n ],\n 1\n )\n ]\n ),\n _c(\"address-main-modal\", {\n ref: \"refAddressMainModal\",\n attrs: { address: this.address, isMiningAddress: this.isMiningAddress }\n }),\n _c(\"lock-modal\", {\n ref: \"refLockModal\",\n attrs: { address: this.address }\n }),\n _c(\"delete-modal\", {\n ref: \"refDeleteModal\",\n attrs: { address: this.address }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-6fd10b33\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6fd10b33\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Address/Address.vue\n// module id = 105\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { ref: \"dashboardWallet\", staticClass: \"dashboardWallet\" },\n [\n _c(\"icon\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !this.opened && _vm.isSendingMoney,\n expression: \"!this.opened && isSendingMoney\"\n }\n ],\n staticClass: \"miningStatus sendingImg jump\",\n attrs: { icon: \"chevron-double-up\" }\n }),\n _c(\"icon\", {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: !this.opened && _vm.isReceivingMoney,\n expression: \"!this.opened && isReceivingMoney\"\n }\n ],\n staticClass: \"miningStatus receivingImg jump\",\n style: {\n right: _vm.isSendingMoney ? \"20px\" : \"4px\",\n marginBottom: _vm.isSendingMoney ? \"-2px\" : \"0\"\n },\n attrs: { icon: \"chevron-double-down\" }\n }),\n _c(\n \"div\",\n {\n ref: \"walletMenuButton\",\n style: {\n marginBottom: this.opened\n ? this.walletButtonMarginOpened + \"px\"\n : this.walletButtonMarginClosed + \"px\",\n top: this.opened\n ? this.buttonTopDistanceOpen\n : this.buttonTopDistanceClose,\n borderTopLeftRadius: this.opened\n ? this.walletButtonRadiusLeftOpen + \"px\"\n : this.walletButtonRadiusLeftClose + \"px\",\n borderTopRightRadius: this.opened\n ? this.walletButtonRadiusRightOpen + \"px\"\n : this.walletButtonRadiusRightClose + \"px\"\n },\n attrs: { id: \"walletButton\" },\n on: { click: this.toggleWallet }\n },\n [\n _c(\n \"span\",\n { attrs: { id: \"walletButtonText\" } },\n [\n _c(\n \"div\",\n { staticStyle: { display: \"inline-block\" } },\n [\n _c(\"icon\", {\n staticClass: \"buttonIcon statusWalletIcon\",\n staticStyle: { fill: \"black\" },\n attrs: { icon: this.opened ? \"chevron-down\" : \"chevron-up\" }\n }),\n _vm._v(\"\\n Wallet\\n \")\n ],\n 1\n ),\n _c(\"show-sum-balances\", {\n ref: \"refShowSumBalances\",\n style: {\n display: this.isMobile == false ? \"none\" : \"inline-block\"\n },\n attrs: { addresses: this.addresses, currency: this.currency }\n })\n ],\n 1\n )\n ]\n ),\n _c(\n \"div\",\n {\n ref: \"walletMenu\",\n style: {\n marginBottom: this.opened\n ? this.walletMarginOpened + \"px\"\n : this.walletMarginClosed + \"px\",\n top: this.opened\n ? this.buttonTopDistanceOpen\n : this.buttonTopDistanceClose,\n marginTop: this.opened\n ? this.walletMenuMarginTopOpen\n : this.walletMenuMarginTopClose,\n height: this.opened\n ? this.walletMenuHeightOpen\n : this.walletMenuHeightClosed\n },\n attrs: { id: \"walletMenu\" }\n },\n [\n _c(\"div\", { attrs: { id: \"dashboardWallet\" } }, [\n _c(\"div\", { staticClass: \"walletController\" }, [\n _c(\n \"div\",\n {\n staticClass: \"btn buttonTextStyle\",\n on: { click: this.handleAddNewAddress }\n },\n [_vm._v(\"\\n Add Address\\n \")]\n ),\n _c(\"label\", { staticClass: \"myLabel\" }, [\n _c(\"input\", {\n ref: \"importedAddress\",\n attrs: { type: \"file\", multiple: \"\", size: \"50\" },\n on: { change: this.handleImportAddress }\n }),\n _c(\"div\", { staticClass: \"btn buttonTextStyle\" }, [\n _vm._v(\n \"\\n Import Address\\n \"\n )\n ])\n ])\n ]),\n _c(\n \"div\",\n {\n staticClass: \"walletSection walletsContainer\",\n style: { height: this.walletContentHeight }\n },\n [\n _c(\n \"div\",\n { attrs: { id: \"allWallets\" } },\n _vm._l(this.addresses, function(walletAddress, index) {\n return _c(\"Address\", {\n key: walletAddress.address,\n ref: \"address\" + index,\n refInFor: true,\n staticStyle: { \"padding-right\": \"20px\" },\n attrs: {\n isMiningAddress:\n _vm.miningAddress === walletAddress.address,\n id: \"address\" + walletAddress.address,\n address: walletAddress.address\n },\n on: {\n onPendingTransactionsChanges:\n _vm.handlePendingTransactionsChanges\n }\n })\n })\n )\n ]\n )\n ])\n ]\n )\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-8087f122\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-8087f122\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Wallet/Wallet.vue\n// module id = 106\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0954b78f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Mining.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Mining.vue\"\nimport __vue_script__ from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Mining.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0954b78f\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Mining.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Mining/Mining.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-0954b78f\", Component.options)\n } else {\n hotAPI.reload(\"data-v-0954b78f\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Mining/Mining.vue\n// module id = 107\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-0954b78f\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Mining/Mining.vue\n// module id = 109\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2b39a900\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./slider.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./slider.vue\"\nimport __vue_script__ from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./slider.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2b39a900\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./slider.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/Mining/slider.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-2b39a900\", Component.options)\n } else {\n hotAPI.reload(\"data-v-2b39a900\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Mining/slider.vue\n// module id = 110\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-2b39a900\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/Mining/slider.vue\n// module id = 112\n// module chunks = 0","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"vue-slider-component\",[],e):\"object\"==typeof exports?exports[\"vue-slider-component\"]=e():t[\"vue-slider-component\"]=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var r=i[s]={i:s,l:!1,exports:{}};return t[s].call(r.exports,r,r.exports,e),r.l=!0,r.exports}var i={};return e.m=t,e.c=i,e.i=function(t){return t},e.d=function(t,i,s){e.o(t,i)||Object.defineProperty(t,i,{configurable:!1,enumerable:!0,get:s})},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p=\"\",e(e.s=2)}([function(t,e,i){i(7);var s=i(5)(i(1),i(6),null,null);t.exports=s.exports},function(t,e,i){\"use strict\";Object.defineProperty(e,\"__esModule\",{value:!0});var s=function(){var t=\"undefined\"!=typeof window?window.devicePixelRatio||1:1;return function(e){return Math.round(e*t)/t}}();e.default={name:\"VueSliderComponent\",props:{width:{type:[Number,String],default:\"auto\"},height:{type:[Number,String],default:6},data:{type:Array,default:null},dotSize:{type:Number,default:16},dotWidth:{type:Number,required:!1},dotHeight:{type:Number,required:!1},min:{type:Number,default:0},max:{type:Number,default:100},interval:{type:Number,default:1},show:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},piecewise:{type:Boolean,default:!1},tooltip:{type:[String,Boolean],default:\"always\"},eventType:{type:String,default:\"auto\"},direction:{type:String,default:\"horizontal\"},reverse:{type:Boolean,default:!1},lazy:{type:Boolean,default:!1},clickable:{type:Boolean,default:!0},speed:{type:Number,default:.5},realTime:{type:Boolean,default:!1},stopPropagation:{type:Boolean,default:!1},value:{type:[String,Number,Array,Object],default:0},piecewiseLabel:{type:Boolean,default:!1},debug:{type:Boolean,default:!0},fixed:{type:Boolean,default:!1},processDragable:{type:Boolean,default:!1},useKeyboard:{type:Boolean,default:!1},actionsKeyboard:{type:Array,default:function(){return[function(t){return t-1},function(t){return t+1}]}},sliderStyle:[Array,Object,Function],focusStyle:[Array,Object,Function],tooltipDir:[Array,String],formatter:[String,Function],piecewiseStyle:Object,piecewiseActiveStyle:Object,processStyle:Object,bgStyle:Object,tooltipStyle:[Array,Object,Function],labelStyle:Object,labelActiveStyle:Object},data:function(){return{flag:!1,keydownFlag:null,focusFlag:!1,processFlag:!1,processSign:null,size:0,fixedValue:0,focusSlider:0,currentValue:0,currentSlider:0,isComponentExists:!0}},computed:{dotWidthVal:function(){return\"number\"==typeof this.dotWidth?this.dotWidth:this.dotSize},dotHeightVal:function(){return\"number\"==typeof this.dotHeight?this.dotHeight:this.dotSize},flowDirection:function(){return\"vue-slider-\"+this.direction+(this.reverse?\"-reverse\":\"\")},tooltipDirection:function(){var t=this.tooltipDir||(\"vertical\"===this.direction?\"left\":\"top\");return Array.isArray(t)?this.isRange?t:t[1]:this.isRange?[t,t]:t},tooltipStatus:function(){return\"hover\"===this.tooltip&&this.flag?\"vue-slider-always\":this.tooltip?\"vue-slider-\"+this.tooltip:\"\"},tooltipClass:function(){return[\"vue-slider-tooltip-\"+this.tooltipDirection,\"vue-slider-tooltip\"]},isDisabled:function(){return\"none\"===this.eventType||this.disabled},disabledClass:function(){return this.disabled?\"vue-slider-disabled\":\"\"},stateClass:function(){return{\"vue-slider-state-process-drag\":this.processFlag,\"vue-slider-state-drag\":this.flag&&!this.processFlag&&!this.keydownFlag,\"vue-slider-state-focus\":this.focusFlag}},isRange:function(){return Array.isArray(this.value)},slider:function(){return this.isRange?[this.$refs.dot0,this.$refs.dot1]:this.$refs.dot},minimum:function(){return this.data?0:this.min},val:{get:function(){return this.data?this.isRange?[this.data[this.currentValue[0]],this.data[this.currentValue[1]]]:this.data[this.currentValue]:this.currentValue},set:function(t){if(this.data)if(this.isRange){var e=this.data.indexOf(t[0]),i=this.data.indexOf(t[1]);e>-1&&i>-1&&(this.currentValue=[e,i])}else{var s=this.data.indexOf(t);s>-1&&(this.currentValue=s)}else this.currentValue=t}},currentIndex:function(){return this.isRange?this.data?this.currentValue:[(this.currentValue[0]-this.minimum)/this.spacing,(this.currentValue[1]-this.minimum)/this.spacing]:(this.currentValue-this.minimum)/this.spacing},indexRange:function(){return this.isRange?this.currentIndex:[0,this.currentIndex]},maximum:function(){return this.data?this.data.length-1:this.max},multiple:function(){var t=(\"\"+this.interval).split(\".\")[1];return t?Math.pow(10,t.length):1},spacing:function(){return this.data?1:this.interval},total:function(){return this.data?this.data.length-1:(Math.floor((this.maximum-this.minimum)*this.multiple)%(this.interval*this.multiple)!=0&&this.printError(\"Prop[interval] is illegal, Please make sure that the interval can be divisible\"),(this.maximum-this.minimum)/this.interval)},gap:function(){return this.size/this.total},position:function(){return this.isRange?[(this.currentValue[0]-this.minimum)/this.spacing*this.gap,(this.currentValue[1]-this.minimum)/this.spacing*this.gap]:(this.currentValue-this.minimum)/this.spacing*this.gap},limit:function(){return this.isRange?this.fixed?[[0,(this.maximum-this.fixedValue*this.spacing)/this.spacing*this.gap],[(this.minimum+this.fixedValue*this.spacing)/this.spacing*this.gap,this.size]]:[[0,this.position[1]],[this.position[0],this.size]]:[0,this.size]},valueLimit:function(){return this.isRange?this.fixed?[[this.minimum,this.maximum-this.fixedValue*this.spacing],[this.minimum+this.fixedValue*this.spacing,this.maximum]]:[[this.minimum,this.currentValue[1]],[this.currentValue[0],this.maximum]]:[this.minimum,this.maximum]},idleSlider:function(){return 0===this.currentSlider?1:0},wrapStyles:function(){return\"vertical\"===this.direction?{height:\"number\"==typeof this.height?this.height+\"px\":this.height,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}:{width:\"number\"==typeof this.width?this.width+\"px\":this.width,padding:this.dotHeightVal/2+\"px \"+this.dotWidthVal/2+\"px\"}},sliderStyles:function(){return Array.isArray(this.sliderStyle)?this.isRange?this.sliderStyle:this.sliderStyle[1]:\"function\"==typeof this.sliderStyle?this.sliderStyle(this.val,this.currentIndex):this.isRange?[this.sliderStyle,this.sliderStyle]:this.sliderStyle},focusStyles:function(){return Array.isArray(this.focusStyle)?this.isRange?this.focusStyle:this.focusStyle[1]:\"function\"==typeof this.focusStyle?this.focusStyle(this.val,this.currentIndex):this.isRange?[this.focusStyle,this.focusStyle]:this.focusStyle},tooltipStyles:function(){return Array.isArray(this.tooltipStyle)?this.isRange?this.tooltipStyle:this.tooltipStyle[1]:\"function\"==typeof this.tooltipStyle?this.tooltipStyle(this.val,this.currentIndex):this.isRange?[this.tooltipStyle,this.tooltipStyle]:this.tooltipStyle},elemStyles:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:\"100%\"}:{height:this.height+\"px\"}},dotStyles:function(){return\"vertical\"===this.direction?{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",left:-(this.dotWidthVal-this.width)/2+\"px\"}:{width:this.dotWidthVal+\"px\",height:this.dotHeightVal+\"px\",top:-(this.dotHeightVal-this.height)/2+\"px\"}},piecewiseDotStyle:function(){return\"vertical\"===this.direction?{width:this.width+\"px\",height:this.width+\"px\"}:{width:this.height+\"px\",height:this.height+\"px\"}},piecewiseDotWrap:function(){if(!this.piecewise&&!this.piecewiseLabel)return!1;for(var t=[],e=0;e<=this.total;e++){var i=\"vertical\"===this.direction?{bottom:this.gap*e-this.width/2+\"px\",left:0}:{left:this.gap*e-this.height/2+\"px\",top:0},s=this.reverse?this.total-e:e,r=this.data?this.data[s]:this.spacing*s+this.min;t.push({style:i,label:this.formatter?this.formatting(r):r,inRange:s>=this.indexRange[0]&&s<=this.indexRange[1]})}return t}},watch:{value:function(t){this.flag||this.setValue(t,!0)},max:function(t){if(tthis.max)return this.printError(\"The minimum value can not be greater than the maximum value.\");var e=this.limitValue(this.val);this.setValue(e),this.refresh()},show:function(t){var e=this;t&&!this.size&&this.$nextTick(function(){e.refresh()})},fixed:function(){this.computedFixedValue()}},methods:{bindEvents:function(){document.addEventListener(\"touchmove\",this.moving,{passive:!1}),document.addEventListener(\"touchend\",this.moveEnd,{passive:!1}),document.addEventListener(\"mousedown\",this.blurSlider),document.addEventListener(\"mousemove\",this.moving),document.addEventListener(\"mouseup\",this.moveEnd),document.addEventListener(\"mouseleave\",this.moveEnd),document.addEventListener(\"keydown\",this.handleKeydown),document.addEventListener(\"keyup\",this.handleKeyup),window.addEventListener(\"resize\",this.refresh)},unbindEvents:function(){document.removeEventListener(\"touchmove\",this.moving),document.removeEventListener(\"touchend\",this.moveEnd),document.removeEventListener(\"mousedown\",this.blurSlider),document.removeEventListener(\"mousemove\",this.moving),document.removeEventListener(\"mouseup\",this.moveEnd),document.removeEventListener(\"mouseleave\",this.moveEnd),document.removeEventListener(\"keydown\",this.handleKeydown),document.removeEventListener(\"keyup\",this.handleKeyup),window.removeEventListener(\"resize\",this.refresh)},handleKeydown:function(t){if(!this.useKeyboard||!this.focusFlag)return!1;switch(t.keyCode){case 37:case 40:t.preventDefault(),this.keydownFlag=!0,this.flag=!0,this.changeFocusSlider(this.actionsKeyboard[0]);break;case 38:case 39:t.preventDefault(),this.keydownFlag=!0,this.flag=!0,this.changeFocusSlider(this.actionsKeyboard[1])}},handleKeyup:function(){this.keydownFlag&&(this.keydownFlag=!1,this.flag=!1)},changeFocusSlider:function(t){var e=this;if(this.isRange){var i=this.currentIndex.map(function(i,s){if(s===e.focusSlider||e.fixed){var r=t(i),n=e.fixed?e.valueLimit[s]:[e.minimum,e.maximum];if(r<=n[1]&&r>=n[0])return r}return i});i[0]>i[1]&&(this.focusSlider=0===this.focusSlider?1:0,i=i.reverse()),this.setIndex(i)}else this.setIndex(t(this.currentIndex))},blurSlider:function(t){var e=this.isRange?this.$refs[\"dot\"+this.focusSlider]:this.$refs.dot;if(!e||e===t.target)return!1;this.focusFlag=!1},formatting:function(t){return\"string\"==typeof this.formatter?this.formatter.replace(/\\{value\\}/,t):this.formatter(t)},getPos:function(t){return this.realTime&&this.getStaticData(),\"vertical\"===this.direction?this.reverse?t.pageY-this.offset:this.size-(t.pageY-this.offset):this.reverse?this.size-(t.clientX-this.offset):t.clientX-this.offset},processClick:function(t){this.fixed&&t.stopPropagation()},wrapClick:function(t){if(this.isDisabled||!this.clickable||this.processFlag)return!1;var e=this.getPos(t);this.isRange&&(this.currentSlider=e>(this.position[1]-this.position[0])/2+this.position[0]?1:0),this.setValueOnPos(e)},moveStart:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments[2];if(this.isDisabled)return!1;if(this.stopPropagation&&t.stopPropagation(),this.isRange&&(this.currentSlider=e,i)){if(!this.processDragable)return!1;this.processFlag=!0,this.processSign={pos:this.position,start:this.getPos(t.targetTouches&&t.targetTouches[0]?t.targetTouches[0]:t)}}!i&&this.useKeyboard&&(this.focusFlag=!0,this.focusSlider=e),this.flag=!0,this.$emit(\"drag-start\",this)},moving:function(t){if(this.stopPropagation&&t.stopPropagation(),!this.flag)return!1;t.preventDefault(),t.targetTouches&&t.targetTouches[0]&&(t=t.targetTouches[0]),this.processFlag?(this.currentSlider=0,this.setValueOnPos(this.processSign.pos[0]+this.getPos(t)-this.processSign.start,!0),this.currentSlider=1,this.setValueOnPos(this.processSign.pos[1]+this.getPos(t)-this.processSign.start,!0)):this.setValueOnPos(this.getPos(t),!0)},moveEnd:function(t){var e=this;if(this.stopPropagation&&t.stopPropagation(),!this.flag)return!1;this.$emit(\"drag-end\",this),this.lazy&&this.isDiff(this.val,this.value)&&this.syncValue(),this.flag=!1,window.setTimeout(function(){e.processFlag=!1},0),this.setPosition()},setValueOnPos:function(t,e){var i=this.isRange?this.limit[this.currentSlider]:this.limit,s=this.isRange?this.valueLimit[this.currentSlider]:this.valueLimit;if(t>=i[0]&&t<=i[1]){this.setTransform(t);var r=(Math.round(t/this.gap)*(this.spacing*this.multiple)+this.minimum*this.multiple)/this.multiple;this.setCurrentValue(r,e),this.isRange&&this.fixed&&(this.setTransform(t+this.fixedValue*this.gap*(0===this.currentSlider?1:-1),!0),this.setCurrentValue(r+this.fixedValue*this.spacing*(0===this.currentSlider?1:-1),e,!0))}else tthis.maximum)return!1;this.isRange?this.isDiff(this.currentValue[s],t)&&(this.currentValue.splice(s,1,t),this.lazy&&this.flag||this.syncValue()):this.isDiff(this.currentValue,t)&&(this.currentValue=t,this.lazy&&this.flag||this.syncValue()),e||this.setPosition()},setIndex:function(t){if(Array.isArray(t)&&this.isRange){var e=void 0;e=this.data?[this.data[t[0]],this.data[t[1]]]:[this.spacing*t[0]+this.minimum,this.spacing*t[1]+this.minimum],this.setValue(e)}else t=this.spacing*t+this.minimum,this.isRange&&(this.currentSlider=t>(this.currentValue[1]-this.currentValue[0])/2+this.currentValue[0]?1:0),this.setCurrentValue(t)},setValue:function(t,e,i){var s=this;if(this.isDiff(this.val,t)){var r=this.limitValue(t);this.val=this.isRange?r.concat():r,this.computedFixedValue(),this.syncValue(e)}this.$nextTick(function(){return s.setPosition(i)})},computedFixedValue:function(){if(!this.fixed)return this.fixedValue=0,!1;this.fixedValue=this.currentIndex[1]-this.currentIndex[0]},setPosition:function(t){this.flag||this.setTransitionTime(void 0===t?this.speed:t),this.isRange?(this.setTransform(this.position[0],1===this.currentSlider),this.setTransform(this.position[1],0===this.currentSlider)):this.setTransform(this.position),this.flag||this.setTransitionTime(0)},setTransform:function(t,e){var i=e?this.idleSlider:this.currentSlider,r=s((\"vertical\"===this.direction?this.dotHeightVal/2-t:t-this.dotWidthVal/2)*(this.reverse?-1:1)),n=\"vertical\"===this.direction?\"translateY(\"+r+\"px)\":\"translateX(\"+r+\"px)\",o=this.fixed?this.fixedValue*this.gap+\"px\":(0===i?this.position[1]-t:t-this.position[0])+\"px\",l=this.fixed?(0===i?t:t-this.fixedValue*this.gap)+\"px\":(0===i?t:this.position[0])+\"px\";this.isRange?(this.slider[i].style.transform=n,this.slider[i].style.WebkitTransform=n,this.slider[i].style.msTransform=n,\"vertical\"===this.direction?(this.$refs.process.style.height=o,this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=l):(this.$refs.process.style.width=o,this.$refs.process.style[this.reverse?\"right\":\"left\"]=l)):(this.slider.style.transform=n,this.slider.style.WebkitTransform=n,this.slider.style.msTransform=n,\"vertical\"===this.direction?(this.$refs.process.style.height=t+\"px\",this.$refs.process.style[this.reverse?\"top\":\"bottom\"]=0):(this.$refs.process.style.width=t+\"px\",this.$refs.process.style[this.reverse?\"right\":\"left\"]=0))},setTransitionTime:function(t){if(t||this.$refs.process.offsetWidth,this.isRange){for(var e=0;ee.max?(e.printError(\"The value of the slider is \"+t+\", the maximum value is \"+e.max+\", the value of this slider can not be greater than the maximum value\"),e.max):i};return this.isRange?t.map(function(t){return i(t)}):i(t)},syncValue:function(t){var e=this.isRange?this.val.concat():this.val;this.$emit(\"input\",e),t||this.$emit(\"callback\",e)},getValue:function(){return this.val},getIndex:function(){return this.currentIndex},getStaticData:function(){this.$refs.elem&&(this.size=\"vertical\"===this.direction?this.$refs.elem.offsetHeight:this.$refs.elem.offsetWidth,this.offset=\"vertical\"===this.direction?this.$refs.elem.getBoundingClientRect().top+window.pageYOffset||document.documentElement.scrollTop:this.$refs.elem.getBoundingClientRect().left)},refresh:function(){this.$refs.elem&&(this.getStaticData(),this.computedFixedValue(),this.setPosition())},printError:function(t){this.debug&&console.error(\"[VueSlider error]: \"+t)}},mounted:function(){var t=this;if(this.isComponentExists=!0,\"undefined\"==typeof window||\"undefined\"==typeof document)return this.printError(\"window or document is undefined, can not be initialization.\");this.$nextTick(function(){t.isComponentExists&&(t.getStaticData(),t.setValue(t.limitValue(t.value),!0,0),t.bindEvents())})},beforeDestroy:function(){this.isComponentExists=!1,this.unbindEvents()}}},function(t,e,i){\"use strict\";var s=i(0);t.exports=s},function(t,e,i){e=t.exports=i(4)(),e.push([t.i,'.vue-slider-component{position:relative;box-sizing:border-box;-ms-user-select:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-o-user-select:none}.vue-slider-component.vue-slider-disabled{opacity:.5;cursor:not-allowed}.vue-slider-component.vue-slider-has-label{margin-bottom:15px}.vue-slider-component.vue-slider-disabled .vue-slider-dot{cursor:not-allowed}.vue-slider-component .vue-slider{position:relative;display:block;border-radius:15px;background-color:#ccc}.vue-slider-component .vue-slider:after{content:\"\";position:absolute;left:0;top:0;width:100%;height:100%;z-index:2}.vue-slider-component .vue-slider-process{position:absolute;border-radius:15px;background-color:#3498db;transition:all 0s;z-index:1}.vue-slider-component .vue-slider-process.vue-slider-process-dragable{cursor:pointer;z-index:3}.vue-slider-component.vue-slider-horizontal .vue-slider-process{width:0;height:100%;top:0;left:0;will-change:width}.vue-slider-component.vue-slider-vertical .vue-slider-process{width:100%;height:0;bottom:0;left:0;will-change:height}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-process{width:0;height:100%;top:0;right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-process{width:100%;height:0;top:0;left:0}.vue-slider-component .vue-slider-dot{position:absolute;border-radius:50%;background-color:#fff;box-shadow:.5px .5px 2px 1px rgba(0,0,0,.32);transition:all 0s;will-change:transform;cursor:pointer;z-index:4}.vue-slider-component .vue-slider-dot.vue-slider-dot-focus{box-shadow:0 0 2px 1px #3498db}.vue-slider-component.vue-slider-horizontal .vue-slider-dot{left:0}.vue-slider-component.vue-slider-vertical .vue-slider-dot{bottom:0}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-dot{right:0}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-dot{top:0}.vue-slider-component .vue-slider-tooltip-wrap{display:none;position:absolute;z-index:9}.vue-slider-component .vue-slider-tooltip{display:block;font-size:14px;white-space:nowrap;padding:2px 5px;min-width:20px;text-align:center;color:#fff;border-radius:5px;border:1px solid #3498db;background-color:#3498db}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top{top:-9px;left:50%;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom{bottom:-9px;left:50%;-webkit-transform:translate(-50%,100%);transform:translate(-50%,100%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left{top:50%;left:-9px;-webkit-transform:translate(-100%,-50%);transform:translate(-100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right{top:50%;right:-9px;-webkit-transform:translate(100%,-50%);transform:translate(100%,-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip:before{content:\"\";position:absolute;bottom:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-top-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-bottom .vue-slider-tooltip:before{content:\"\";position:absolute;top:-10px;left:50%;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-bottom-color:inherit;-webkit-transform:translate(-50%);transform:translate(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-left .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;right:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-left-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-right .vue-slider-tooltip:before{content:\"\";position:absolute;top:50%;left:-10px;width:0;height:0;border:5px solid transparent;border:6px solid transparent\\\\0;border-right-color:inherit;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.vue-slider-component .vue-slider-dot.vue-slider-hover:hover .vue-slider-tooltip-wrap{display:block}.vue-slider-component .vue-slider-dot.vue-slider-always .vue-slider-tooltip-wrap{display:block!important}.vue-slider-component .vue-slider-piecewise{position:absolute;width:100%;padding:0;margin:0;left:0;top:0;height:100%;list-style:none}.vue-slider-component .vue-slider-piecewise-item{position:absolute;width:8px;height:8px}.vue-slider-component .vue-slider-piecewise-dot{position:absolute;left:50%;top:50%;width:100%;height:100%;display:inline-block;background-color:rgba(0,0,0,.16);border-radius:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:2;transition:all .3s}.vue-slider-component .vue-slider-piecewise-item:first-child .vue-slider-piecewise-dot,.vue-slider-component .vue-slider-piecewise-item:last-child .vue-slider-piecewise-dot{visibility:hidden}.vue-slider-component.vue-slider-horizontal-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-horizontal .vue-slider-piecewise-label{position:absolute;display:inline-block;top:100%;left:50%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(-50%,8px);transform:translate(-50%,8px);visibility:visible}.vue-slider-component.vue-slider-vertical-reverse .vue-slider-piecewise-label,.vue-slider-component.vue-slider-vertical .vue-slider-piecewise-label{position:absolute;display:inline-block;top:50%;left:100%;white-space:nowrap;font-size:12px;color:#333;-webkit-transform:translate(8px,-50%);transform:translate(8px,-50%);visibility:visible}.vue-slider-component .vue-slider-sr-only{clip:rect(1px,1px,1px,1px);height:1px;width:1px;overflow:hidden;position:absolute!important}',\"\"])},function(t,e){t.exports=function(){var t=[];return t.toString=function(){for(var t=[],e=0;ei.parts.length&&(s.parts.length=i.parts.length)}else{for(var o=[],r=0;r {\n\n if (document.getElementById('WebDollarMap') === null)\n return;\n\n new Vue({\n el: '#WebDollarMap',\n render: h => h(NetworkNativeMap)\n })\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/initialize-params/vue/Network-Native-Map-main-vue.js\n// module id = 117\n// module chunks = 0","var disposed = false\nvar normalizeComponent = require(\"!../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map.vue\"\nimport __vue_script__ from \"!!!../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6f992934\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Network-Native-Map.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/maps/Native-Map/Network-Native-Map.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-6f992934\", Component.options)\n } else {\n hotAPI.reload(\"data-v-6f992934\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Native-Map/Network-Native-Map.vue\n// module id = 118\n// module chunks = 0","import Projection from \"./Projection\"\n\nclass CircleMap {\n\n constructor(svgElement) {\n\n this._svg = svgElement;\n // temporarily unhide all the circlesto get the bounding rects\n\n svgElement.classList.remove('hide-circles');\n\n let mapDimensions = this.getDimensions(); // also enforces a style update\n this._circleDiameter = 0;\n let circles = svgElement.querySelectorAll('circle');\n\n for (let i = 0; i < circles.length; ++i) {\n circles[i].cellId = i;\n let boundingBox = circles[i].getBoundingClientRect();\n // values relative to map width / height such that they work also when we resize the map\n circles[i].centerX = (boundingBox.left + boundingBox.width/2 - mapDimensions.left) / mapDimensions.width;\n circles[i].centerY = (boundingBox.top + boundingBox.height/2 - mapDimensions.top) / mapDimensions.height;\n // the circles differ very slightly in size, so we take the biggest\n this._circleDiameter = Math.max(this._circleDiameter, boundingBox.width / mapDimensions.width);\n }\n this._cells = circles;\n this._links = [];\n // after we got the circle bounding rects, we can hide them again\n svgElement.classList.add('hide-circles');\n }\n\n getDimensions() {\n return this._svg.getBoundingClientRect();\n }\n\n unhighlightCell(cell, index) {\n cell.setAttribute('class', '');\n delete cell.data[index]\n if (cell.data === {})\n cell.data = null;\n }\n\n putCellOnTop(cell){\n // put my own cell on top of everything else. In svg the stacking is not affected by z-index, but\n // only by document order. So we make the cell the last child\n cell.parentElement.appendChild(cell);\n }\n\n highlightCell(cell, className, data, index) {\n\n if (cell.getAttribute('class') !== 'peer-own')\n if(cell.getAttribute('class') !== 'peer-connected-terminal')\n if(cell.getAttribute('class') !== 'peer-connected-browser')\n cell.setAttribute('class', className);\n\n // deleted\n\n // if (className === 'peer-own')\n // cell.parentElement.appendChild(cell);\n\n\n // XXX another hack\n if (data) {\n if (cell.data === undefined) cell.data = {};\n cell.data[index] = data;\n }\n }\n\n _convertCoordinates(latitude, longitude) {\n let mapDimensions = this.getDimensions();\n // the map that we have is cropped out from the full robinson projected map. We have to make\n // the computation on the full/original map, so we calculate the full size.\n let fullMapWidth = 1.0946808510638297 * mapDimensions.width;\n let fullMapHeight = fullMapWidth / 1.97165551906973; // RobinsonProjection maps have a fixed aspect ratio\n let projection = new Projection(fullMapWidth, fullMapHeight);\n let point = projection.project(latitude, longitude);\n // the origin is centered in the middle of the map, so we translate it\n // to the top left corner\n point.x = fullMapWidth/2 + point.x;\n point.y = fullMapHeight/2 - point.y;\n // the map that we have is robinson projected and then cropped out and scaled\n point.x = Math.max(0, point.x - 0.07045675413022352*fullMapWidth);\n point.y = Math.max(0, point.y - 0.012380952380952381*fullMapHeight);\n return point;\n }\n\n _testCoordinateConversion(latitude, longitude) {\n let testDot = window.testDot;\n if (!testDot) {\n testDot = document.createElement('div');\n testDot.style.background = 'red';\n testDot.style.width = '5px';\n testDot.style.height = '5px';\n testDot.style.position = 'absolute';\n document.body.appendChild(testDot);\n window.testDot = testDot;\n }\n let convertedCoordinates = this._convertCoordinates(latitude, longitude);\n console.log(convertedCoordinates);\n testDot.style.left = convertedCoordinates.x-2+'px';\n testDot.style.top = convertedCoordinates.y-2+'px';\n }\n\n _getClosestCell(x, y) {\n let mapDimensions = this.getDimensions();\n let bestDistance = 0;\n let bestCell = null;\n\n\n for (let i = 0; i < this._cells.length; ++i) {\n // Calculate position from bounding box.\n let cell = this._cells[i];\n let centerX = cell.centerX * mapDimensions.width;\n let centerY = cell.centerY * mapDimensions.height;\n let xDist = centerX - x;\n let yDist = centerY - y;\n let distance = xDist*xDist + yDist*yDist;\n\n // Update best cell accordingly.\n if (!bestCell || distance < bestDistance) {\n bestDistance = distance;\n bestCell = cell;\n }\n }\n\n\n // Return best cell only if its distance in terms of cells is not too far.\n let circleDiameter = this._circleDiameter * mapDimensions.width;\n return bestDistance > CircleMap.MAX_CELL_DISTANCE * circleDiameter ? null : bestCell;\n }\n\n getCellByLocation(latitude, longitude) {\n let convertedCoordinates = this._convertCoordinates(latitude, longitude);\n let closestCell = this._getClosestCell(convertedCoordinates.x, convertedCoordinates.y);\n return closestCell;\n }\n\n addLink(startCell, endCell) {\n\n if (!startCell || !endCell)\n return;\n\n // search whether we already drew that link\n for (let i=0, link; link = this._links[i]; ++i)\n if (link.start === startCell && link.end === endCell || link.end === startCell && link.start === endCell)\n return;\n\n // draw the link\n let svgBoundingRect = this.getDimensions();\n let viewBox = this._svg.viewBox;\n let viewBoxWidth = viewBox.baseVal.width;\n let viewBoxHeight = viewBox.baseVal.height;\n let pathEl = document.createElementNS(this._svg.namespaceURI, 'path');\n\n let path = 'M'+(startCell.centerX*viewBoxWidth)+' '+(startCell.centerY*viewBoxHeight) +'L'+(endCell.centerX*viewBoxWidth)+' '+(endCell.centerY*viewBoxHeight);\n\n pathEl.setAttributeNS(null,'d', path);\n pathEl.classList.add('link');\n\n this._links.push({\n start: startCell,\n end: endCell,\n path: pathEl\n });\n\n // insert the path before the startCell such that it will not be drawn over the startCell\n startCell.parentElement.append(pathEl);\n //startCell.parentElement.insertBefore(pathEl, startCell);\n }\n\n removeLink(startCell, endCell) {\n\n for (let i=0, link; link = this._links[i]; ++i)\n if (link.start === startCell && link.end === endCell || link.end === startCell && link.start === endCell) {\n // we found the link\n startCell.parentElement.removeChild(link.path);\n this._links.splice(i, 1);\n return;\n }\n\n }\n}\n\nCircleMap.MAX_CELL_DISTANCE = 12; // in terms of cells\n\n\nexport default CircleMap;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Native-Map/helpers/Circle-Map.js\n// module id = 119\n// module chunks = 0","/**\n * It's a Robison Projection\n *\n * https://en.wikipedia.org/wiki/Robinson_projection\n */\n\n\nclass Projection {\n\n constructor(width) {\n\n this.X = [594090, 593258.274, 591357.186, 588149.1, 583515.198, 578049.5700000001, 570326.4, 560048.643, 547513.3439999999, 532423.4580000001, 515610.71099999995, 496065.14999999997, 474440.274, 451330.173, 426913.07399999996, 399941.388, 369108.11699999997, 339938.298, 316174.698]\n\n this.Y = [0, 58689.82, 117379.64, 176069.46000000002, 234759.28, 293449.10000000003, 352138.92000000004, 410828.74000000005, 470275.848, 527356.431, 584626.336, 640760.3089999999, 695379.706, 748105.883, 798465.5349999999, 845890.696, 889245.434, 923986.021, 946610]\n\n this.EPS = 1e-8;\n this.INTERVAL = 5;\n\n this.radians = Math.PI / 180;\n this.degrees = 180 / Math.PI;\n\n this._width = width;\n this._r = this._width / 5.332539516;\n }\n\n _project(lat, lng)\n {\n // 5 degree intervals, so find right indices\n let lI = Math.floor((Math.abs(lat)-this.EPS)/this.INTERVAL);\n lI = Math.max(lI, 0);\n let hI = lI + 1;\n let ratio = (Math.abs(lat)-lI*this.INTERVAL) / this.INTERVAL;\n\n // interpolate x and y\n let xDist = this.X[hI]/700000-this.X[lI]/700000;\n let yDist = this.Y[hI]/700000-this.Y[lI]/700000;\n\n let x = ((xDist*ratio)+this.X[lI]/700000) * (Math.abs(lng) * this.radians);\n x = lng < 0 ? -x : x;\n let y = (yDist*ratio)+this.Y[lI]/700000;\n y = lat < 0 ? -y : y;\n\n return {\n x : x,\n y : y\n };\n }\n\n project(lat, lng) {\n let p = this._project(lat, lng);\n return {\n x: p.x * this._r,\n y: p.y * this._r\n };\n }\n}\n\nexport default Projection;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Native-Map/helpers/Projection.js\n// module id = 120\n// module chunks = 0","class Circles {\n\n constructor() {\n this.cells = {};\n }\n\n inc(cell) {\n if (!this.cells[cell.cellId])\n this.cells[cell.cellId] = 0;\n\n this.cells[cell.cellId]++;\n }\n\n del(cell) {\n\n if (!this.cells[cell.cellId]) this.cells[cell.cellId] = 0;\n\n if (this.cells[cell.cellId] > 0) return --this.cells[cell.cellId];\n\n return 0;\n }\n\n get(cell) {\n return this.cells[cell.cellId] || 0;\n }\n \n}\n\nexport default Circles;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Native-Map/helpers/Circles.js\n// module id = 121\n// module chunks = 0","class MapsTester{\n\n constructor(parent){\n\n this.parent = parent;\n }\n\n testConnections(){\n\n this._createFakeMarker({country: 'USA', lat: 37.980388, lng:-92.539714 }, 2000);\n this._createFakeMarker({country: 'USA', lat: 36.828015, lng:-119.458796 }, 3100);\n this._createFakeMarker({country: 'Brazil', lat: -10.252334, lng:-55.143146}, 4200);\n this._createFakeMarker({country: 'Germany', lat: 51.809770, lng:8.688927}, 2000);\n this._createFakeMarker({country: 'France', lat: 44.745281, lng:2.080051}, 1500);\n this._createFakeMarker({country: 'Russia', lat: 56.875767, lng:41.410924}, 3500);\n this._createFakeMarker({country: 'India', lat: 17.001243, lng:78.807492}, 2500);\n this._createFakeMarker({country: 'UK', lat: 53.376271, lng:-0.660215}, 1500);\n this._createFakeMarker({country: 'China', lat: 29.832851, lng: 120.072671}, 5000);\n this._createFakeMarker({country: 'South Africa', lat: -29.256599, lng: 24.324561}, 5000);\n this._createFakeMarker({country: 'Portugal', lat: 38.989770, lng: -7.430283}, 5100);\n this._createFakeMarker({country: 'Australia', lat: -34.041968, lng: 150.994123}, 5200);\n this._createFakeMarker({country: 'Saint Petersburg', lat: 59.884495, lng: 30.434003}, 5100);\n this._createFakeMarker({country: 'Saudi', lat: 24.759399, lng: 46.640036}, 4800);\n this._createFakeMarker({country: 'Mexico', lat: 19.409722, lng: -98.991313}, 2200);\n this._createFakeMarker({country: 'USA', lat: 31.124374, lng: -97.531948}, 2200);\n this._createFakeMarker({country: 'South Korea', lat: 37.542154, lng: 126.988170}, 3400);\n this._createFakeMarker({country: 'Buenos Aires', lat: -34.534501, lng:-58.438049}, 3400);\n\n\n }\n\n _createFakeMarker( coordinates, timeOut){\n\n setTimeout( ()=>{\n\n //console.log(\"coordinates\", coordinates);\n this.parent._addMarker(coordinates, \"fake\");\n\n }, timeOut)\n\n }\n\n\n}\n\nexport default MapsTester;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Maps.tester.js\n// module id = 122\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-df567280\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Network-Native-Map-Canvas.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map-Canvas.vue\"\nimport __vue_script__ from \"!!!../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map-Canvas.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-df567280\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Network-Native-Map-Canvas.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-df567280\", Component.options)\n } else {\n hotAPI.reload(\"data-v-df567280\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue\n// module id = 123\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \\n\\n\"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-df567280\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue\n// module id = 125\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"svg\",\n {\n staticClass: \"hide-circles WebDollarNativeMap\",\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 1082 502\",\n preserveAspectRatio: \"xMinYMin meet\",\n \"xml:space\": \"preserve\"\n }\n },\n [\n _c(\"circle\", {\n attrs: { cx: \"909.4049999999999\", cy: \"270.32666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.5949999999999\", cy: \"309.0416666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.9049999999999\", cy: \"304.16833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"13.805\", cy: \"222.02166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"5.45\", cy: \"217.17833333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"46.903333333333336\", cy: \"105.98666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"55.245000000000005\", cy: \"101.14333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.06166666666667\", cy: \"23.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.38500000000005\", cy: \"18.933333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.75499999999994\", cy: \"18.93666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.21833333333333\", cy: \"212.3283333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.57500000000002\", cy: \"217.1716666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.49999999999994\", cy: \"221.98333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.14500000000004\", cy: \"226.83833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.39\", cy: \"236.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.76666666666665\", cy: \"9.238333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.4366666666666\", cy: \"14.103333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.7616666666667\", cy: \"18.965\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.66\", cy: \"14.141666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"378.97499999999997\", cy: \"9.268333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"387.32500000000005\", cy: \"4.428333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.365\", cy: \"9.261666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.0783333333333\", cy: \"14.121666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.98499999999996\", cy: \"483.0466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.53\", cy: \"260.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.725\", cy: \"188.17500000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.71\", cy: \"178.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.4983333333334\", cy: \"270.33666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.09333333333336\", cy: \"309.0083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.77\", cy: \"294.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.79333333333335\", cy: \"304.17499999999995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.77\", cy: \"275.16333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.71\", cy: \"168.83333333333331\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.77\", cy: \"284.8333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.41666666666666\", cy: \"163.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.47\", cy: \"120.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.76\", cy: \"134.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.135\", cy: \"115.65666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.76\", cy: \"125.31666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.1\", cy: \"159.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.76\", cy: \"144.65333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.77999999999997\", cy: \"154.32\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.11333333333334\", cy: \"318.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.93\", cy: \"101.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.97499999999997\", cy: \"304.18833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.00666666666666\", cy: \"323.5216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.595\", cy: \"333.1766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.3\", cy: \"328.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.27000000000004\", cy: \"279.9916666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.965\", cy: \"294.5133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"320.94\", cy: \"110.81\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"320.965\", cy: \"284.8433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.66666666666663\", cy: \"328.3566666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"163.14\", cy: \"105.99\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"321.00666666666666\", cy: \"333.19166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.4083333333333\", cy: \"323.5216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.605\", cy: \"342.84499999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.3\", cy: \"338.01666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.31\", cy: \"347.68333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.0133333333334\", cy: \"342.8633333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.0233333333333\", cy: \"352.52666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.99666666666667\", cy: \"313.84666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.645\", cy: \"309.02500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.66666666666663\", cy: \"318.69\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.3983333333333\", cy: \"313.8583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.0733333333333\", cy: \"299.3383333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.37833333333333\", cy: \"304.17833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.625\", cy: \"299.3533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.625\", cy: \"280.0133333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.9833333333333\", cy: \"275.18333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.625\", cy: \"289.68333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.85\", cy: \"255.8016666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.55333333333337\", cy: \"188.165\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.21833333333333\", cy: \"183.34333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.56499999999997\", cy: \"197.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.905\", cy: \"178.49833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.9266666666667\", cy: \"120.47166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.07166666666666\", cy: \"289.66833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.07166666666666\", cy: \"279.99833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.10166666666663\", cy: \"270.33333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.50333333333333\", cy: \"81.81\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.885\", cy: \"91.47333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.955\", cy: \"96.32333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.58833333333334\", cy: \"96.30833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.67999999999998\", cy: \"91.48333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.29333333333332\", cy: \"91.48333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.58500000000004\", cy: \"115.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.38666666666668\", cy: \"96.30833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.76999999999998\", cy: \"96.30833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.06999999999996\", cy: \"91.47333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.48000000000002\", cy: \"91.48333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.58000000000004\", cy: \"86.63\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.59000000000003\", cy: \"96.30666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.59000000000003\", cy: \"105.97333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.54\", cy: \"76.97166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.875\", cy: \"72.11666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.14\", cy: \"96.32333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.835\", cy: \"86.61833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.21666666666667\", cy: \"86.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.47833333333335\", cy: \"149.50666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.3\", cy: \"318.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.595\", cy: \"323.50666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.28000000000003\", cy: \"309.0083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.91333333333324\", cy: \"338.0166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.91333333333324\", cy: \"328.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.615\", cy: \"284.8333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.22166666666664\", cy: \"96.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.23\", cy: \"105.96333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.26\", cy: \"289.66833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.26\", cy: \"299.3383333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.67833333333334\", cy: \"347.695\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.69\", cy: \"357.3666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.02833333333336\", cy: \"362.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.66666666666663\", cy: \"338.02666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.32\", cy: \"357.34999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.32\", cy: \"367.0183333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.6166666666667\", cy: \"352.5133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.93\", cy: \"91.47000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.52\", cy: \"81.78666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.93500000000003\", cy: \"76.985\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.56666666666663\", cy: \"76.96833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"221.26\", cy: \"72.15\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"196.365\", cy: \"76.96833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.64666666666665\", cy: \"72.13833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.4483333333333\", cy: \"72.15\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"163.12\", cy: \"76.985\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"179.75\", cy: \"76.96833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.04833333333332\", cy: \"72.135\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.845\", cy: \"76.93666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.22166666666664\", cy: \"86.62333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.5\", cy: \"62.468333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.16499999999996\", cy: \"57.613333333333344\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.4083333333333\", cy: \"333.19166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.795\", cy: \"67.31333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"237.865\", cy: \"72.135\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"246.17666666666665\", cy: \"67.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.47000000000003\", cy: \"62.46333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.92333333333335\", cy: \"347.6816666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.06999999999996\", cy: \"81.80333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.38666666666668\", cy: \"86.63833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.815\", cy: \"81.82166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.76999999999998\", cy: \"86.63833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.955\", cy: \"86.65333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.85166666666666\", cy: \"101.17\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.81833333333333\", cy: \"120.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.47000000000003\", cy: \"81.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.14\", cy: \"86.65333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.91999999999996\", cy: \"81.79666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.21999999999997\", cy: \"76.94500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.11333333333334\", cy: \"328.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.28166666666667\", cy: \"81.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.13\", cy: \"125.32666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.48166666666665\", cy: \"72.12833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.1966666666667\", cy: \"76.965\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.58833333333334\", cy: \"86.63833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.885\", cy: \"81.80333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"262.835\", cy: \"76.96\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"271.215\", cy: \"255.8216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"271.195\", cy: \"275.185\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"271.22499999999997\", cy: \"265.5033333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.46833333333333\", cy: \"130.16166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.4733333333333\", cy: \"279.99833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.4733333333333\", cy: \"299.33833333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.815\", cy: \"323.50666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"287.815\", cy: \"313.84\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"279.49499999999995\", cy: \"309.0083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.4733333333333\", cy: \"289.66833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.80166666666665\", cy: \"163.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.61833333333334\", cy: \"173.6583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"171.5\", cy: \"159.16\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"171.46833333333333\", cy: \"139.83166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.41666666666666\", cy: \"173.6583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.41666666666666\", cy: \"183.32833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.4433333333333\", cy: \"193.00666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.1\", cy: \"168.82333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.66833333333332\", cy: \"81.81833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.28333333333333\", cy: \"130.16166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.57500000000002\", cy: \"134.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.50666666666666\", cy: \"120.47500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.20666666666668\", cy: \"125.31333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.875\", cy: \"130.14666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.57499999999996\", cy: \"144.65333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.89499999999998\", cy: \"149.48499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.94500000000002\", cy: \"134.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.28333333333333\", cy: \"139.83166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.50333333333333\", cy: \"139.81666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.135\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.50333333333333\", cy: \"130.14666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.20666666666668\", cy: \"134.98333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.43\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.795\", cy: \"134.98333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.795\", cy: \"125.31333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.22833333333332\", cy: \"154.315\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.20666666666668\", cy: \"144.65\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.875\", cy: \"139.81666666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.875\", cy: \"120.47666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.21\", cy: \"115.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.8\", cy: \"115.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.57500000000002\", cy: \"125.31666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.51166666666668\", cy: \"110.80833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.67166666666665\", cy: \"120.49166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.67\", cy: \"130.16166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.28666666666666\", cy: \"120.49333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.94500000000002\", cy: \"125.32666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.72499999999997\", cy: \"130.13\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.755\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.135\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.44\", cy: \"144.64333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"262.795\", cy: \"144.65\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"279.43\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.0516666666667\", cy: \"134.98\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.1383333333333\", cy: \"120.47500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.51333333333332\", cy: \"149.47833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"121.65333333333332\", cy: \"62.47666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.13500000000002\", cy: \"28.60166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.63\", cy: \"43.126666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.41333333333333\", cy: \"43.12166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.04666666666665\", cy: \"43.10166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"129.945\", cy: \"57.633333333333326\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.76500000000004\", cy: \"304.1683333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.91\", cy: \"178.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"295.99499999999995\", cy: \"28.588333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.53999999999996\", cy: \"18.93666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.225\", cy: \"43.12166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"105.07333333333334\", cy: \"81.82166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"121.63166666666666\", cy: \"72.16833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.54333333333332\", cy: \"38.263333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.08\", cy: \"497.58500000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.92166666666665\", cy: \"197.86\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"105.01333333333334\", cy: \"52.80833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"80.14833333333333\", cy: \"86.63833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"71.80166666666666\", cy: \"91.49000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.725\", cy: \"425.0466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.85666666666665\", cy: \"91.46999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.67\", cy: \"139.83166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.805\", cy: \"265.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.82666666666665\", cy: \"110.82333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.3066666666667\", cy: \"91.45666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.375\", cy: \"275.1716666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.365\", cy: \"284.8433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.38\", cy: \"115.64666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.3666666666667\", cy: \"294.5133333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"221.335\", cy: \"178.51\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"154.83833333333334\", cy: \"62.47666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.47\", cy: \"197.84333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.02833333333336\", cy: \"371.8633333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.545\", cy: \"57.63333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.84166666666664\", cy: \"33.43833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.72\", cy: \"434.7166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.03833333333336\", cy: \"381.53999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.06499999999997\", cy: \"110.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.67666666666665\", cy: \"110.82333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.885\", cy: \"101.13999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.45\", cy: \"105.95166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.72999999999996\", cy: \"110.79333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.0066666666667\", cy: \"105.94\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"295.97499999999997\", cy: \"96.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.21666666666667\", cy: \"96.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.51333333333332\", cy: \"91.47333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.805\", cy: \"96.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.15\", cy: \"91.46833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"279.46\", cy: \"96.29\", r: \"3.6\" } }),\n _c(\"circle\", { attrs: { cx: \"320.9\", cy: \"130.165\", r: \"3.6\" } }),\n _c(\"circle\", { attrs: { cx: \"312.69\", cy: \"270.325\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"329.22999999999996\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.4166666666667\", cy: \"265.5133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.33000000000004\", cy: \"101.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.3283333333334\", cy: \"110.80499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.32166666666666\", cy: \"120.47166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.58000000000004\", cy: \"125.31333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.29333333333332\", cy: \"101.15333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.06000000000003\", cy: \"130.14666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.58833333333334\", cy: \"105.97666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.06000000000003\", cy: \"139.8166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.06000000000003\", cy: \"120.47666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.98499999999999\", cy: \"173.67333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.98499999999999\", cy: \"164.00333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.39666666666665\", cy: \"154.31833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.765\", cy: \"115.64666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.69999999999996\", cy: \"159.17333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.08\", cy: \"149.48499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.67999999999998\", cy: \"101.15333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.38666666666668\", cy: \"105.97666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"212.955\", cy: \"105.99\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"296.13\", cy: \"260.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.4766666666667\", cy: \"110.82000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.48000000000002\", cy: \"101.15333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.76999999999998\", cy: \"105.97666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.06999999999996\", cy: \"101.13999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.02833333333336\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.72499999999997\", cy: \"120.46333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.43499999999995\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.035\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.33\", cy: \"130.1483333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.94499999999996\", cy: \"144.66666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.51333333333332\", cy: \"101.13999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.14166666666665\", cy: \"110.80166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.805\", cy: \"105.97333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.145\", cy: \"101.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.59666666666666\", cy: \"154.31833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.21666666666667\", cy: \"105.97333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.915\", cy: \"159.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.25\", cy: \"163.98666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.29333333333332\", cy: \"149.50666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.5333333333334\", cy: \"159.16\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.145\", cy: \"149.48666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.81500000000005\", cy: \"154.315\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.41833333333335\", cy: \"255.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.5533333333333\", cy: \"168.83\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.32500000000002\", cy: \"168.83333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.965\", cy: \"154.33499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.61833333333334\", cy: \"163.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.31500000000003\", cy: \"159.16\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.915\", cy: \"168.82333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.8666666666667\", cy: \"164.00333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.18\", cy: \"159.14833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.88\", cy: \"110.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.56333333333336\", cy: \"178.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.25\", cy: \"173.65666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.29166666666666\", cy: \"110.82\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"213.01500000000001\", cy: \"183.36166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.95000000000002\", cy: \"115.65666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.58166666666668\", cy: \"115.64666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.37666666666667\", cy: \"144.65333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.37666666666667\", cy: \"125.31666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.67999999999998\", cy: \"149.49499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.37666666666667\", cy: \"134.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.81000000000003\", cy: \"72.16000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.1566666666667\", cy: \"386.35833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.82500000000005\", cy: \"362.19000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.135\", cy: \"376.68833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.81500000000005\", cy: \"371.8533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.855\", cy: \"391.1933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.46999999999997\", cy: \"458.87833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.46000000000004\", cy: \"449.21666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.16833333333335\", cy: \"434.70666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.845\", cy: \"429.8666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.55666666666664\", cy: \"304.18\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.885\", cy: \"328.3566666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.83500000000004\", cy: \"352.5133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.5816666666667\", cy: \"323.53000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.225\", cy: \"309.03000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.57833333333338\", cy: \"313.8616666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.52500000000003\", cy: \"347.68333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.22499999999997\", cy: \"342.8633333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.875\", cy: \"338.0316666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.13666666666666\", cy: \"444.39166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.24666666666667\", cy: \"381.53333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.50500000000005\", cy: \"367.0333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.2266666666667\", cy: \"371.8633333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.9549999999999\", cy: \"386.35833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"379.115\", cy: \"328.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"379.125\", cy: \"338.02333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.82500000000005\", cy: \"342.8633333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.83500000000004\", cy: \"352.52666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.84\", cy: \"362.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.69\", cy: \"410.54333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.65999999999997\", cy: \"400.86000000000007\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.36999999999995\", cy: \"434.70666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.47166666666664\", cy: \"478.23999999999995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.49\", cy: \"468.55833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.8233333333333\", cy: \"483.06333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.36499999999995\", cy: \"425.0433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.13666666666666\", cy: \"463.715\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.36\", cy: \"415.36666666666673\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.9766666666667\", cy: \"396.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.025\", cy: \"52.79666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.73\", cy: \"57.63333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.245\", cy: \"62.46333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.34333333333333\", cy: \"57.63333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.4383333333333\", cy: \"52.81166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.245\", cy: \"52.79666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.545\", cy: \"47.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.10000000000002\", cy: \"57.64666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.83833333333334\", cy: \"52.81166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.63666666666666\", cy: \"52.81166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.76500000000004\", cy: \"47.96333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.465\", cy: \"43.12833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.13666666666666\", cy: \"38.31166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.915\", cy: \"57.64666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.105\", cy: \"52.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.84333333333333\", cy: \"52.796666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.25\", cy: \"52.81166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.545\", cy: \"57.63333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.47\", cy: \"207.51166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.45833333333334\", cy: \"221.99499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"204.75\", cy: \"226.84\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"188.12\", cy: \"217.16666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.82166666666663\", cy: \"212.33666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.53833333333333\", cy: \"294.5116666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.69000000000003\", cy: \"241.34500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.29000000000005\", cy: \"260.68833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"213.025\", cy: \"231.68500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.545\", cy: \"67.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.38\", cy: \"236.51166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.48499999999999\", cy: \"188.1933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.59833333333333\", cy: \"154.31833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.295\", cy: \"159.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.255\", cy: \"139.81666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.57833333333335\", cy: \"144.65333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.61833333333334\", cy: \"163.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"163.16\", cy: \"183.35\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"146.58666666666667\", cy: \"173.67499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.8166666666667\", cy: \"222.01\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.68500000000003\", cy: \"251.005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.19333333333336\", cy: \"299.3533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"213.035\", cy: \"241.36166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.35500000000002\", cy: \"246.205\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.995\", cy: \"255.83333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.87\", cy: \"347.6983333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"271.205\", cy: \"352.545\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"254.57333333333335\", cy: \"333.1933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.23499999999999\", cy: \"318.69\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.47\", cy: \"217.18166666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.57833333333332\", cy: \"183.34166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.60666666666665\", cy: \"192.98\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.29500000000002\", cy: \"168.82333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.53\", cy: \"357.35166666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.74\", cy: \"236.53999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.42666666666665\", cy: \"231.69000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.4083333333333\", cy: \"57.623333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.12\", cy: \"226.84666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"379.155\", cy: \"367.0183333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.84999999999997\", cy: \"371.86999999999995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.26500000000001\", cy: \"149.49\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.535\", cy: \"376.72166666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.28999999999996\", cy: \"391.2033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.29\", cy: \"400.8733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"379.15500000000003\", cy: \"357.3500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"387.47333333333336\", cy: \"333.1766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"387.47333333333336\", cy: \"323.50666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"379.15000000000003\", cy: \"347.68\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.40000000000003\", cy: \"492.71166666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.44666666666666\", cy: \"487.8966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.14666666666665\", cy: \"473.37833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.105\", cy: \"454.03833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.845\", cy: \"439.5366666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.82500000000005\", cy: \"381.53000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.78166666666664\", cy: \"492.7183333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.7183333333333\", cy: \"420.19833333333327\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.9933333333334\", cy: \"405.70666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"105.01833333333333\", cy: \"62.471666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.01000000000005\", cy: \"38.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.51500000000004\", cy: \"38.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"320.8433333333333\", cy: \"23.796666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.65999999999997\", cy: \"33.446666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.105\", cy: \"43.116666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"262.785\", cy: \"38.275\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"254.465\", cy: \"33.446666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.265\", cy: \"72.15833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.80833333333337\", cy: \"33.46\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.17\", cy: \"28.60166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.18666666666667\", cy: \"304.1716666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.46166666666664\", cy: \"309.02500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.4983333333334\", cy: \"33.425000000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"387.47333333333336\", cy: \"313.84\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"379.1133333333333\", cy: \"308.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.81333333333333\", cy: \"38.26333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.10666666666674\", cy: \"43.123333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.15000000000003\", cy: \"101.13666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.4083333333333\", cy: \"47.94166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"96.70166666666667\", cy: \"67.27999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"88.395\", cy: \"72.14\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"379.1133333333334\", cy: \"318.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"88.46499999999999\", cy: \"81.81666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"113.31500000000001\", cy: \"57.64666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"129.945\", cy: \"67.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"113.31500000000001\", cy: \"67.31333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"105.04833333333333\", cy: \"72.14333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"96.75333333333333\", cy: \"76.96833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.34333333333333\", cy: \"47.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.73\", cy: \"47.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.10000000000002\", cy: \"47.97666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.55499999999998\", cy: \"47.961666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"121.62166666666666\", cy: \"52.79500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.915\", cy: \"47.97666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"129.935\", cy: \"47.96000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"138.235\", cy: \"43.120000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.84833333333333\", cy: \"43.13666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.82\", cy: \"333.19166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.91333333333336\", cy: \"318.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"337.595\", cy: \"313.84\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"354.2066666666667\", cy: \"323.5216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.48499999999996\", cy: \"328.3566666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.58500000000004\", cy: \"294.4866666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.52\", cy: \"101.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.7833333333333\", cy: \"115.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.07\", cy: \"400.8733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.52\", cy: \"91.45333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"337.575\", cy: \"304.175\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"337.6166666666667\", cy: \"371.8533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.32\", cy: \"376.68833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.34000000000003\", cy: \"386.3583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.06\", cy: \"391.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.22166666666664\", cy: \"352.53333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.21166666666664\", cy: \"342.85833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.935\", cy: \"357.34999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.6166666666667\", cy: \"362.18333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.20666666666665\", cy: \"333.19166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"229.545\", cy: \"67.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.25\", cy: \"62.47666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"212.915\", cy: \"67.31333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"237.84333333333336\", cy: \"62.46333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"246.17666666666665\", cy: \"57.63\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"204.63666666666666\", cy: \"62.47666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.73\", cy: \"67.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.025\", cy: \"62.46333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.34333333333333\", cy: \"67.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"345.875\", cy: \"86.62\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"246.14666666666665\", cy: \"47.94666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.47\", cy: \"52.771666666666675\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"295.96666666666664\", cy: \"57.63499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.81333333333333\", cy: \"57.626666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.28000000000003\", cy: \"62.47833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.4383333333333\", cy: \"62.47666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.115\", cy: \"62.46666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.76500000000004\", cy: \"57.63\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.47000000000003\", cy: \"52.79666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.89\", cy: \"260.66999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.29666666666665\", cy: \"217.18333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.47500000000002\", cy: \"202.66333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.12\", cy: \"197.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.17999999999995\", cy: \"284.84333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.18\", cy: \"294.5133333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.87666666666667\", cy: \"270.3433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"188.11\", cy: \"188.16\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"262.83500000000004\", cy: \"280.0083333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.1\", cy: \"178.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"163.15\", cy: \"154.335\", r: \"3.6\" } }),\n _c(\"circle\", { attrs: { cx: \"271.19\", cy: \"304.19\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"163.13\", cy: \"134.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.84666666666666\", cy: \"130.14666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.13\", cy: \"144.66666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.80166666666665\", cy: \"173.6583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.17\", cy: \"164.00333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.51\", cy: \"168.83333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.815\", cy: \"333.1766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.73\", cy: \"396.04333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.69\", cy: \"376.7033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"312.71\", cy: \"386.375\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"304.46999999999997\", cy: \"410.5433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.47\", cy: \"400.8733333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.73\", cy: \"415.38000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.17833333333334\", cy: \"405.69666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.4683333333333\", cy: \"420.21333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.17833333333334\", cy: \"415.36666666666673\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.51500000000004\", cy: \"328.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.11333333333334\", cy: \"338.01666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.73\", cy: \"405.7133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.21\", cy: \"313.84666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.51499999999993\", cy: \"318.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.42333333333335\", cy: \"352.5333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.4133333333333\", cy: \"342.8583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.42833333333334\", cy: \"362.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.69\", cy: \"367.0333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.43833333333333\", cy: \"381.52833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.6383333333333\", cy: \"381.52500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.935\", cy: \"376.68833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.65999999999997\", cy: \"391.1933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.36\", cy: \"396.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.93499999999995\", cy: \"367.01833333333326\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.50500000000005\", cy: \"357.3666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.36\", cy: \"405.6966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.49499999999995\", cy: \"347.695\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.2266666666667\", cy: \"362.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.07000000000005\", cy: \"410.54333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.78\", cy: \"454.05333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.74999999999994\", cy: \"444.40333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.105\", cy: \"468.54999999999995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.7916666666667\", cy: \"473.41166666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.77\", cy: \"463.70666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.0683333333334\", cy: \"420.21000000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.0683333333333\", cy: \"439.5566666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"321.06\", cy: \"429.8833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"362.48499999999996\", cy: \"338.0266666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"329.16999999999996\", cy: \"38.276666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"337.47\", cy: \"43.11500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.7966666666667\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.85833333333335\", cy: \"96.27666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.10666666666674\", cy: \"52.79333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.29833333333335\", cy: \"52.798333333333325\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"295.995\", cy: \"47.913333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"312.57\", cy: \"47.97666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"320.895\", cy: \"43.125\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"362.48499999999996\", cy: \"318.69\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.8066666666667\", cy: \"105.97500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.525\", cy: \"96.30833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.82\", cy: \"323.52166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.1966666666667\", cy: \"313.85833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"370.81\", cy: \"313.84666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"354.1466666666667\", cy: \"110.80499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.10000000000002\", cy: \"67.31333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.89333333333326\", cy: \"299.32666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"345.89333333333326\", cy: \"309.0083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"196.47500000000002\", cy: \"212.33333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"188.12\", cy: \"207.49666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.82166666666663\", cy: \"202.66666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.8116666666667\", cy: \"192.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"221.32833333333335\", cy: \"226.83666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"238.02666666666667\", cy: \"236.4983333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.53\", cy: \"284.8466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.845\", cy: \"289.68333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"254.59500000000003\", cy: \"265.5183333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"179.80166666666665\", cy: \"183.32833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.87\", cy: \"139.83166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"154.88\", cy: \"149.495\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"154.9\", cy: \"159.17333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.46\", cy: \"439.5516666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"171.51\", cy: \"178.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.845\", cy: \"299.3533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"163.17\", cy: \"173.67333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"154.91\", cy: \"168.83333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"146.54666666666665\", cy: \"134.97\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.17833333333334\", cy: \"396.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.4283333333333\", cy: \"371.8633333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.4583333333333\", cy: \"391.2083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.695\", cy: \"52.776666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.855\", cy: \"400.85999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.855\", cy: \"410.52666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"304.46166666666664\", cy: \"429.87999999999994\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.175\", cy: \"425.0366666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.85333333333335\", cy: \"420.195\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.21999999999997\", cy: \"333.19166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.865\", cy: \"309.02500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"271.22\", cy: \"323.5216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"279.51499999999993\", cy: \"338.01666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"262.885\", cy: \"318.69000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.135\", cy: \"367.0183333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.135\", cy: \"357.34999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"296.125\", cy: \"347.6816666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"287.82500000000005\", cy: \"342.84499999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"412.455\", cy: \"492.73\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"420.52500000000003\", cy: \"33.45666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"428.81500000000005\", cy: \"28.60833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"403.91499999999996\", cy: \"52.79333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"403.91\", cy: \"43.12499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"428.8149999999999\", cy: \"18.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"412.195\", cy: \"38.29333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"387.27500000000003\", cy: \"52.776666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"395.57\", cy: \"28.625\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"420.52\", cy: \"23.78333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"403.8933333333334\", cy: \"23.78333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"412.185\", cy: \"18.953333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"395.59\", cy: \"47.93000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"412.205\", cy: \"9.261666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"428.81333333333333\", cy: \"9.258333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"445.41166666666663\", cy: \"9.235\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"461.9866666666667\", cy: \"9.261666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"395.6000000000001\", cy: \"67.31\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"453.7033333333334\", cy: \"43.14833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"395.555\", cy: \"38.281666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"412.185\", cy: \"28.623333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"403.90000000000003\", cy: \"33.45\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"445.4116666666667\", cy: \"18.938333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"437.1133333333333\", cy: \"23.77333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"453.7050000000001\", cy: \"23.78333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"395.62000000000006\", cy: \"57.61666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"403.925\", cy: \"62.468333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"428.845\", cy: \"47.95333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"420.55\", cy: \"52.79833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"412.23499999999996\", cy: \"57.64666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"387.27500000000003\", cy: \"62.44666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"387.25500000000005\", cy: \"23.77333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"445.4216666666666\", cy: \"38.278333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.3200000000001\", cy: \"23.786666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.60999999999996\", cy: \"9.263333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"395.57\", cy: \"18.919999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"437.165\", cy: \"43.12833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"462.0316666666667\", cy: \"38.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"428.825\", cy: \"38.27666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"445.41166666666663\", cy: \"28.60833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"437.1233333333333\", cy: \"33.443333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"453.71166666666676\", cy: \"33.45\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"461.99666666666667\", cy: \"28.641666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"412.205\", cy: \"47.96333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"420.535\", cy: \"43.12\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"420.52\", cy: \"14.116666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"437.1133333333333\", cy: \"14.103333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"403.8833333333334\", cy: \"14.11166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"453.705\", cy: \"14.116666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"461.965\", cy: \"18.95333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.31500000000005\", cy: \"14.123333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.305\", cy: \"62.48500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"461.99666666666667\", cy: \"57.61166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.62999999999994\", cy: \"57.61166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"486.99999999999994\", cy: \"101.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.54999999999995\", cy: \"81.80333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.5416666666667\", cy: \"101.145\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.905\", cy: \"96.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.5416666666667\", cy: \"91.46833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.4785714285714\", cy: \"18.662857142857142\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.6916666666666\", cy: \"18.958333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.3666666666667\", cy: \"14.098333333333331\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"568.995\", cy: \"14.086666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4699999999999\", cy: \"159.13666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.495\", cy: \"9.266666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.0899999999999\", cy: \"9.253333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7216666666667\", cy: \"38.275\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.37\", cy: \"33.428333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"651.9716666666667\", cy: \"23.776666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.685\", cy: \"28.58666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.2633333333334\", cy: \"18.908333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4133333333333\", cy: \"357.325\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.11\", cy: \"381.5383333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.08\", cy: \"362.1816666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.7133333333333\", cy: \"342.83\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.745\", cy: \"352.4916666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.08\", cy: \"371.8516666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4533333333334\", cy: \"367.00666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4533333333334\", cy: \"376.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"710.5749999999999\", cy: \"9.26\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4266666666667\", cy: \"14.11\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0166666666668\", cy: \"23.773333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.58\", cy: \"105.95833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"859.58\", cy: \"96.29\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"859.5749999999999\", cy: \"115.62833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.58\", cy: \"86.62333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9350000000001\", cy: \"144.65\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.2783333333333\", cy: \"120.47500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6599999999999\", cy: \"149.475\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.275\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.275\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.2866666666667\", cy: \"91.47000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.11\", cy: \"86.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4383333333334\", cy: \"81.79666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7400000000001\", cy: \"86.62333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5283333333334\", cy: \"221.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.66\", cy: \"91.46999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0366666666667\", cy: \"91.45333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9466666666666\", cy: \"86.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3683333333333\", cy: \"86.62333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8216666666667\", cy: \"81.80833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6533333333333\", cy: \"159.14666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"743.305\", cy: \"154.315\", r: \"3.6\" } }),\n _c(\"circle\", { attrs: { cx: \"735.035\", cy: \"149.475\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"759.9583333333334\", cy: \"163.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7283333333334\", cy: \"144.63666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.255\", cy: \"159.13666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.7887499999999\", cy: \"134.96375\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4266666666666\", cy: \"139.79666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5499999999998\", cy: \"154.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.07\", cy: \"159.13666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.75\", cy: \"154.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.4\", cy: \"163.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.69\", cy: \"168.82166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4466666666667\", cy: \"149.48666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.68\", cy: \"159.15833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8333333333334\", cy: \"149.475\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.1183333333333\", cy: \"154.315\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7333333333333\", cy: \"105.95666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7283333333334\", cy: \"115.62666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"702.13875\", cy: \"139.7975\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"552.4266666666666\", cy: \"139.79666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.725\", cy: \"96.28166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7133333333334\", cy: \"125.30166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.255\", cy: \"101.12166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3516666666666\", cy: \"86.60166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9633333333334\", cy: \"96.27666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.66\", cy: \"91.43666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.2133333333334\", cy: \"168.8216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.235\", cy: \"207.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.895\", cy: \"212.33333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.235\", cy: \"217.16333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.1883333333334\", cy: \"159.13166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.23\", cy: \"197.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.515\", cy: \"96.28666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.2133333333334\", cy: \"178.49\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"520.22\", cy: \"188.16\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"718.44\", cy: \"81.78666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.225\", cy: \"81.78666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7199999999999\", cy: \"76.95666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"710.1442857142857\", cy: \"77.23285714285716\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"702.14125\", cy: \"81.78125\", r: \"3.6\" } }),\n _c(\"circle\", { attrs: { cx: \"743.275\", cy: \"76.965\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"759.9050000000001\", cy: \"76.95666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.0016666666667\", cy: \"72.125\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6\", cy: \"72.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"693.48\", cy: \"86.62\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"685.2033333333334\", cy: \"91.45166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4449999999999\", cy: \"101.10666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3566666666667\", cy: \"144.63666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.855\", cy: \"101.12166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1483333333333\", cy: \"105.94666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7633333333333\", cy: \"105.94666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.91\", cy: \"96.27666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3383333333334\", cy: \"96.27666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.595\", cy: \"101.10666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.54\", cy: \"86.62333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.2033333333334\", cy: \"101.12166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"702.1487500000001\", cy: \"91.45375000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.48\", cy: \"96.28666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.91\", cy: \"105.94666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.0233333333332\", cy: \"81.80833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.59\", cy: \"110.77500000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7416666666667\", cy: \"86.62333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.295\", cy: \"86.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.7987499999999\", cy: \"86.62\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.44\", cy: \"91.45333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8516666666666\", cy: \"110.79\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.14\", cy: \"115.61833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.515\", cy: \"105.95666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2516666666667\", cy: \"110.79333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9616666666667\", cy: \"105.94666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4399999999999\", cy: \"110.77666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3383333333334\", cy: \"105.94666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.76\", cy: \"115.61666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"652.015\", cy: \"110.79\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"851.2866666666667\", cy: \"101.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9466666666666\", cy: \"96.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.66\", cy: \"101.13666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.2816666666666\", cy: \"110.80166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3683333333333\", cy: \"96.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9350000000001\", cy: \"134.98333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.65\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.935\", cy: \"125.31333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9416666666666\", cy: \"115.64333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.11\", cy: \"96.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.225\", cy: \"91.45333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0366666666667\", cy: \"101.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"776.54\", cy: \"96.29\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"759.9250000000001\", cy: \"86.62333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8316666666666\", cy: \"91.46999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7400000000001\", cy: \"96.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4483333333333\", cy: \"91.47000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.62\", cy: \"81.79666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3616666666667\", cy: \"96.27666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3483333333334\", cy: \"255.82333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.9499999999999\", cy: \"246.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.61\", cy: \"250.99333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.25\", cy: \"241.30166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.485\", cy: \"197.80166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4583333333333\", cy: \"250.97833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4583333333333\", cy: \"260.6466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.055\", cy: \"260.6466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.7299999999999\", cy: \"265.4733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0516666666666\", cy: \"168.79999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9200000000001\", cy: \"154.28833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.8033333333333\", cy: \"192.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.2033333333334\", cy: \"149.45833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3683333333333\", cy: \"163.95833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.625\", cy: \"159.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0616666666666\", cy: \"188.14\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4583333333334\", cy: \"241.3083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0516666666666\", cy: \"178.47\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5083333333334\", cy: \"173.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.0616666666666\", cy: \"120.46333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.0683333333333\", cy: \"110.78999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.0300000000001\", cy: \"130.145\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5083333333334\", cy: \"163.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.66\", cy: \"101.10666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.07\", cy: \"101.12166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.4699999999999\", cy: \"144.63333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1533333333333\", cy: \"236.47666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"569.04\", cy: \"91.435\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"552.4833333333333\", cy: \"226.81333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.825\", cy: \"217.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"544.995\", cy: \"221.98625\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"560.8050000000001\", cy: \"231.655\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5083333333334\", cy: \"183.30999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5183333333333\", cy: \"192.98\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5283333333334\", cy: \"202.64833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5283333333334\", cy: \"212.3183333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0200000000001\", cy: \"101.12\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4200000000001\", cy: \"101.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3366666666667\", cy: \"76.94166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4200000000001\", cy: \"110.79333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"585.66\", cy: \"81.77\", r: \"3.6\" } }),\n _c(\"circle\", { attrs: { cx: \"610.515\", cy: \"86.62\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"618.855\", cy: \"91.45166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9616666666667\", cy: \"86.60666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"551.9371428571429\", cy: \"120.73571428571428\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.255\", cy: \"91.45166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1483333333333\", cy: \"96.27666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.895\", cy: \"202.66333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.5557142857143\", cy: \"135.25285714285715\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.88499999999993\", cy: \"192.995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.61999999999995\", cy: \"217.16333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.62000000000006\", cy: \"207.49333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.875\", cy: \"183.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.86499999999995\", cy: \"163.98\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.875\", cy: \"173.65666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3383333333334\", cy: \"86.60666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"734.9916666666667\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.255\", cy: \"67.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.6983333333333\", cy: \"67.28666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4183333333334\", cy: \"72.115\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.8833333333332\", cy: \"67.28666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.2049999999999\", cy: \"72.115\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4449999999999\", cy: \"91.43666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.52\", cy: \"76.95666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.75875\", cy: \"67.28375000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.5900000000001\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.595\", cy: \"91.43666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0200000000001\", cy: \"91.45\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.32666666666665\", cy: \"221.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7633333333333\", cy: \"96.27666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.4583333333334\", cy: \"76.95500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"701.7585714285715\", cy: \"71.84285714285714\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1916666666666\", cy: \"81.78833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.91\", cy: \"86.60666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5533333333334\", cy: \"289.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"618.92\", cy: \"313.83\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"610.595\", cy: \"328.3433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.44\", cy: \"337.99833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"610.575\", cy: \"309.005\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"610.595\", cy: \"318.67333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4499999999999\", cy: \"347.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0516666666667\", cy: \"347.6683333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0416666666667\", cy: \"337.99833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.34666666666664\", cy: \"231.6583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5533333333334\", cy: \"299.33666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.895\", cy: \"250.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.2399999999999\", cy: \"260.6466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.5366666666667\", cy: \"255.81000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7833333333333\", cy: \"231.645\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8016666666666\", cy: \"72.125\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"618.935\", cy: \"265.485\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"610.5533333333334\", cy: \"279.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5866666666667\", cy: \"270.32666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.335\", cy: \"333.17333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.15\", cy: \"333.17333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"545.035\", cy: \"241.32375\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"536.865\", cy: \"236.48666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.5133333333334\", cy: \"246.15666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"511.915\", cy: \"231.67\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"503.6499999999999\", cy: \"236.50833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.245\", cy: \"226.83833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.825\", cy: \"250.99333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5500000000001\", cy: \"231.65833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.845\", cy: \"226.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4399999999999\", cy: \"318.65833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4399999999999\", cy: \"328.3283333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.825\", cy: \"260.66333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4\", cy: \"299.3233333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4\", cy: \"289.6566666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1216666666668\", cy: \"275.17\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4\", cy: \"279.9866666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.42\", cy: \"308.9883333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.8133333333334\", cy: \"202.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.0883333333335\", cy: \"76.965\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.2399999999999\", cy: \"250.97833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.475\", cy: \"207.46666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.475\", cy: \"217.13333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3333333333334\", cy: \"265.50166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.9499999999999\", cy: \"255.82333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3016666666666\", cy: \"275.1566666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2916666666666\", cy: \"284.83166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.61\", cy: \"260.66333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"668.625\", cy: \"168.79\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"676.94\", cy: \"163.95833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.2233333333334\", cy: \"159.13833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0716666666667\", cy: \"197.81000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.4899999999999\", cy: \"154.305\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4033333333333\", cy: \"192.96333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3783333333334\", cy: \"183.3033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3683333333333\", cy: \"173.6266666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.165\", cy: \"246.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.6949999999999\", cy: \"284.81666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1516666666665\", cy: \"265.485\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"577.425\", cy: \"270.32\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"585.6949999999999\", cy: \"275.1466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1649999999998\", cy: \"255.82333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.6685714285715\", cy: \"231.9285714285714\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"701.7900000000001\", cy: \"149.19285714285715\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.5033333333334\", cy: \"236.49166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.825\", cy: \"241.32333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3233333333334\", cy: \"313.8433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.335\", cy: \"323.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0416666666666\", cy: \"328.3283333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2916666666666\", cy: \"294.50166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3016666666666\", cy: \"304.165\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.6949999999999\", cy: \"294.4866666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.7183333333334\", cy: \"304.155\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.74\", cy: \"323.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.74\", cy: \"313.8233333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.5666666666667\", cy: \"246.12666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.875\", cy: \"101.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.7887499999999\", cy: \"144.63375000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.87\", cy: \"110.79333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1816666666667\", cy: \"76.97166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.8750000000001\", cy: \"81.78666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.57\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.2866666666667\", cy: \"149.48666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.57\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9583333333334\", cy: \"154.315\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.8650000000001\", cy: \"120.46333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0366666666667\", cy: \"81.78666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3466666666667\", cy: \"76.95666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7199999999999\", cy: \"76.95666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4150000000001\", cy: \"72.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6500000000001\", cy: \"81.80833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.2766666666668\", cy: \"81.79666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.56\", cy: \"76.95666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9250000000001\", cy: \"76.965\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.2066666666666\", cy: \"96.27333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6633333333333\", cy: \"168.82166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5699999999998\", cy: \"163.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.98\", cy: \"163.98666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.255\", cy: \"168.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9583333333334\", cy: \"173.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4483333333333\", cy: \"149.465\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7516666666667\", cy: \"154.30833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.055\", cy: \"159.15833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.3250000000002\", cy: \"163.98666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"834.69\", cy: \"178.49\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"826.4\", cy: \"173.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.98\", cy: \"173.65666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8533333333334\", cy: \"159.15833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.07\", cy: \"168.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.14\", cy: \"163.98666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7700000000001\", cy: \"163.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4699999999999\", cy: \"159.14666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"710.147142857143\", cy: \"115.89999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.295\", cy: \"105.97333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.035\", cy: \"101.13666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7416666666667\", cy: \"105.95833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4333333333333\", cy: \"110.79333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9250000000001\", cy: \"105.95833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5333333333333\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.2199999999999\", cy: \"110.79333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.7987499999999\", cy: \"105.9575\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6300000000001\", cy: \"101.13666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9\", cy: \"125.28333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"618.855\", cy: \"149.47\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"602.3083333333333\", cy: \"207.48166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.92\", cy: \"207.48333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.015\", cy: \"202.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1966666666666\", cy: \"120.46\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.475\", cy: \"115.62666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"701.7971428571428\", cy: \"110.51857142857143\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8299999999999\", cy: \"110.80499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3800000000001\", cy: \"154.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5299999999999\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.215\", cy: \"130.13000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.915\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8249999999999\", cy: \"120.47166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6199999999999\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.735\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.1033333333334\", cy: \"115.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.0266666666666\", cy: \"120.47166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.285\", cy: \"125.31333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.0966666666667\", cy: \"125.31333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.025\", cy: \"120.46333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.735\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.445\", cy: \"110.80166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3616666666667\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.44\", cy: \"120.47499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.73\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3566666666666\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0250000000001\", cy: \"130.13000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.105\", cy: \"188.14499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2916666666666\", cy: \"188.13833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3033333333333\", cy: \"197.81499999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2716666666666\", cy: \"178.45333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8266666666667\", cy: \"168.80333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.7149999999999\", cy: \"207.46666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3083333333333\", cy: \"217.14999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.015\", cy: \"212.30333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5966666666667\", cy: \"202.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5666666666667\", cy: \"212.3166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9216666666666\", cy: \"154.295\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4683333333334\", cy: \"197.8166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4583333333334\", cy: \"188.14166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.13\", cy: \"144.61333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.765\", cy: \"183.30666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.785\", cy: \"202.64666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4250000000001\", cy: \"139.77833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4\", cy: \"154.28666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"569.07\", cy: \"178.455\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"618.8466666666667\", cy: \"159.145\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.705\", cy: \"188.12666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4150000000001\", cy: \"202.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.7233333333332\", cy: \"178.4383333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4033333333334\", cy: \"192.9666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2316666666667\", cy: \"149.44333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2566666666667\", cy: \"159.16166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.7149999999999\", cy: \"197.7966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2033333333334\", cy: \"139.79000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.535\", cy: \"144.61666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.775\", cy: \"192.9766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.0316666666666\", cy: \"110.80499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.115\", cy: \"197.80833333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3933333333334\", cy: \"183.29666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"610.525\", cy: \"154.305\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"593.9933333333332\", cy: \"183.29666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.005\", cy: \"192.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3950000000001\", cy: \"173.61666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0416666666667\", cy: \"318.65833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.005\", cy: \"43.10166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.64\", cy: \"43.086666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1350000000001\", cy: \"38.24333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.225\", cy: \"43.10666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3083333333334\", cy: \"38.251666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"784.77\", cy: \"33.435\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"859.5400000000001\", cy: \"38.266666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.1383333333333\", cy: \"47.93666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9149999999998\", cy: \"38.27\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.3650000000001\", cy: \"33.434999999999995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.29\", cy: \"115.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.62\", cy: \"52.77666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.23\", cy: \"52.79333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.3216666666667\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.5050000000001\", cy: \"57.629999999999995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.5050000000001\", cy: \"67.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.23\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.8449999999999\", cy: \"52.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0750000000002\", cy: \"159.165\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.5450000000001\", cy: \"23.76166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.60166666666674\", cy: \"275.19\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.1816666666665\", cy: \"212.35833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"569.16\", cy: \"420.2\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"768.3649999999999\", cy: \"265.5\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.8699999999999\", cy: \"101.15833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"975.7583333333332\", cy: \"57.63166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.995\", cy: \"309.0416666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.7533333333332\", cy: \"135.00166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.8216666666666\", cy: \"420.20666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.2750000000001\", cy: \"47.905\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"710.1014285714285\", cy: \"28.874285714285715\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.01499999999993\", cy: \"275.18833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"734.9583333333334\", cy: \"23.763333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.8283333333334\", cy: \"38.25\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3216666666666\", cy: \"38.25166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.425\", cy: \"52.741666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.495\", cy: \"47.92166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"925.9366666666666\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0183333333333\", cy: \"308.9883333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.12\", cy: \"207.48166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9983333333333\", cy: \"299.3233333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"585.75\", cy: \"342.83\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"593.9983333333333\", cy: \"279.9866666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.62999999999994\", cy: \"226.82666666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.895\", cy: \"222.0033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"876.23\", cy: \"86.62\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"867.8750000000001\", cy: \"91.45333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9983333333333\", cy: \"289.6566666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6233333333333\", cy: \"120.47500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9200000000001\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0266666666668\", cy: \"270.31666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6283333333334\", cy: \"110.80166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.215\", cy: \"120.46333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6566666666666\", cy: \"110.80499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9466666666667\", cy: \"105.97333333333331\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.915\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.74\", cy: \"333.16333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"826.415\", cy: \"260.655\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"909.3666666666667\", cy: \"76.95333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.4000000000001\", cy: \"241.32666666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.41\", cy: \"251.0016666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.045\", cy: \"280.0133333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"760.04\", cy: \"241.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9783333333334\", cy: \"221.98833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"760.0099999999999\", cy: \"231.66166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.7516666666667\", cy: \"246.1716666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.8000000000001\", cy: \"270.3266666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.76\", cy: \"362.1666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.76\", cy: \"352.49666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.5799999999999\", cy: \"144.64333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.7416666666667\", cy: \"236.50833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.7216666666667\", cy: \"226.82666666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.5133333333334\", cy: \"265.49666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.73333333333335\", cy: \"231.65833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.585\", cy: \"130.11333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3583333333332\", cy: \"115.61666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3533333333332\", cy: \"125.28333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569\", cy: \"139.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3616666666667\", cy: \"105.94666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3533333333332\", cy: \"134.94833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5416666666666\", cy: \"115.64499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.2483333333333\", cy: \"120.46\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1233333333333\", cy: \"125.28000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9549999999999\", cy: \"115.61666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.6566666666666\", cy: \"110.77666666666669\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.825\", cy: \"207.48333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"544.995\", cy: \"212.31625\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"536.825\", cy: \"197.81333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4733333333334\", cy: \"217.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.855\", cy: \"159.13000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.835\", cy: \"168.78833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.815\", cy: \"188.14499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.8050000000001\", cy: \"178.47333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.7987499999999\", cy: \"96.2875\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.035\", cy: \"91.46999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.295\", cy: \"96.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7416666666667\", cy: \"96.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.785\", cy: \"221.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.44\", cy: \"101.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.225\", cy: \"101.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4350000000001\", cy: \"120.44666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.54\", cy: \"105.95833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9250000000001\", cy: \"96.29\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6300000000001\", cy: \"91.47000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3316666666666\", cy: \"115.61666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0083333333333\", cy: \"120.46\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7533333333333\", cy: \"125.28333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.585\", cy: \"120.44666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9066666666666\", cy: \"115.61666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.48\", cy: \"105.95666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"702.1487500000001\", cy: \"101.12375\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.2016666666667\", cy: \"110.79166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3466666666667\", cy: \"154.28833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7283333333334\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.025\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"743.285\", cy: \"144.65\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"718.4266666666666\", cy: \"130.13000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.7887499999999\", cy: \"125.29625\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6300000000001\", cy: \"149.48666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.4699999999999\", cy: \"134.96333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1933333333333\", cy: \"139.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.13\", cy: \"226.82333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.0966666666667\", cy: \"144.65\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4366666666666\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9000000000001\", cy: \"144.61833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.73\", cy: \"144.63666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0483333333332\", cy: \"149.465\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5299999999999\", cy: \"144.63666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"768.235\", cy: \"149.465\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"759.9366666666666\", cy: \"154.30666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8216666666667\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"702.13875\", cy: \"130.13\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"585.755\", cy: \"255.80999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.605\", cy: \"149.45499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3483333333334\", cy: \"246.1533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.9399999999999\", cy: \"236.47666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.61\", cy: \"241.32333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4366666666666\", cy: \"231.63833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.755\", cy: \"246.1433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.755\", cy: \"236.47333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.055\", cy: \"250.97833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7933333333333\", cy: \"173.6266666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7933333333333\", cy: \"163.95833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0516666666666\", cy: \"159.13000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8316666666666\", cy: \"101.13666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.485\", cy: \"188.12666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"627.185\", cy: \"192.97\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"643.7933333333333\", cy: \"183.29666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.25\", cy: \"231.63333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7533333333333\", cy: \"134.94833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.97125\", cy: \"183.30749999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3566666666667\", cy: \"144.62666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.6214285714285\", cy: \"173.91428571428574\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.7133333333333\", cy: \"139.78333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4616666666666\", cy: \"178.46833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5566666666667\", cy: \"125.30166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.055\", cy: \"241.3083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.6533333333333\", cy: \"120.44666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.6833333333333\", cy: \"130.13166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"569.12\", cy: \"217.15\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"585.735\", cy: \"226.80499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.425\", cy: \"130.11999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4150000000001\", cy: \"221.97\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.6357142857142\", cy: \"193.25142857142856\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.035\", cy: \"231.63833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.9950000000001\", cy: \"202.64625\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.785\", cy: \"212.3166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4733333333334\", cy: \"207.48333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.975\", cy: \"125.29666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.92\", cy: \"217.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.18\", cy: \"173.62666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5466666666666\", cy: \"183.30666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4150000000001\", cy: \"212.30333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5816666666666\", cy: \"192.99\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"594.015\", cy: \"221.97\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"585.7149999999999\", cy: \"217.13333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3183333333335\", cy: \"226.8116666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5666666666667\", cy: \"221.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8566666666667\", cy: \"178.455\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0083333333333\", cy: \"139.79\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3249999999999\", cy: \"125.28333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.325\", cy: \"134.94833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.18\", cy: \"163.95833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0083333333333\", cy: \"130.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.16\", cy: \"154.28833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.455\", cy: \"149.45499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7533333333333\", cy: \"144.61833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.475\", cy: \"178.45666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.215\", cy: \"139.79666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5299999999999\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8216666666667\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.0966666666667\", cy: \"134.98333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7283333333334\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.285\", cy: \"134.98333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.025\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6199999999999\", cy: \"139.81333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.915\", cy: \"144.63666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4366666666666\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0299999999999\", cy: \"110.79333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3383333333335\", cy: \"236.48833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3683333333333\", cy: \"105.95833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4483333333333\", cy: \"101.13666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3566666666666\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.65\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.0250000000001\", cy: \"139.79666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.73\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6533333333333\", cy: \"120.47166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4266666666666\", cy: \"120.46333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.18\", cy: \"183.2966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.11\", cy: \"105.97333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.475\", cy: \"159.12333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.5883333333334\", cy: \"231.655\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7733333333333\", cy: \"154.28833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.92\", cy: \"226.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8916666666667\", cy: \"188.145\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"635.475\", cy: \"168.79\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"693.4699999999999\", cy: \"125.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0300000000001\", cy: \"149.46166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7833333333333\", cy: \"221.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1933333333333\", cy: \"130.1266666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"702.14\", cy: \"120.46374999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9000000000001\", cy: \"134.94833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.325\", cy: \"144.61833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.585\", cy: \"139.78333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7400000000001\", cy: \"105.95833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"544.9325\", cy: \"289.66625\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"544.9549999999999\", cy: \"280.01\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.455\", cy: \"294.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.465\", cy: \"304.1683333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.6414285714287\", cy: \"270.6114285714286\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.0157142857142\", cy: \"313.57142857142856\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.275\", cy: \"255.84166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.57\", cy: \"260.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.84\", cy: \"265.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.9350000000001\", cy: \"260.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.2100000000002\", cy: \"400.8566666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1800000000002\", cy: \"381.5266666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1999999999999\", cy: \"391.185\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.8516666666668\", cy: \"396.02666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.83\", cy: \"367.01666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.6342857142856\", cy: \"347.95714285714286\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.0414285714287\", cy: \"352.79\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.5566666666667\", cy: \"139.81333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.82\", cy: \"376.6916666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.71000000000004\", cy: \"202.64833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.6466666666667\", cy: \"265.5183333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487\", cy: \"188.14499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.42\", cy: \"207.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.2716666666666\", cy: \"154.33333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.2633333333333\", cy: \"144.63666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.42\", cy: \"217.16333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"486.98\", cy: \"178.46833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487\", cy: \"168.78833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.695\", cy: \"192.9766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.75333333333333\", cy: \"260.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.0266666666667\", cy: \"265.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.36666666666673\", cy: \"260.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.43\", cy: \"226.83833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.43000000000006\", cy: \"255.86\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"462.09\", cy: \"231.665\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"462.11999999999995\", cy: \"241.33666666666662\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.46000000000004\", cy: \"246.17166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.5166666666668\", cy: \"362.18333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.48\", cy: \"188.14499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4000000000001\", cy: \"260.63000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.2483333333333\", cy: \"207.46666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"709.8325\", cy: \"183.3075\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"693.505\", cy: \"192.98499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.715\", cy: \"236.49166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"685.265\", cy: \"217.155\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"668.665\", cy: \"226.80499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9633333333334\", cy: \"221.97\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"701.83\", cy: \"187.87000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.685\", cy: \"236.51333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"743.335\", cy: \"222.01\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"751.695\", cy: \"226.83833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6650000000001\", cy: \"246.17166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7616666666667\", cy: \"202.665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.3449999999999\", cy: \"212.33333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7816666666668\", cy: \"192.97833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.085\", cy: \"207.4933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4050000000001\", cy: \"270.32500000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.655\", cy: \"386.3666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.615\", cy: \"376.68666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.615\", cy: \"367.01666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.3850000000001\", cy: \"391.1966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.5016666666667\", cy: \"405.6783333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.9633333333334\", cy: \"362.18666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.8000000000001\", cy: \"410.5133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.1016666666667\", cy: \"396.0133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"569.18\", cy: \"410.54\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"594.125\", cy: \"405.6933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4833333333332\", cy: \"284.81666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7983333333333\", cy: \"279.9866666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.5133333333332\", cy: \"294.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0550000000001\", cy: \"275.16\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.59\", cy: \"342.82666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.5849999999999\", cy: \"333.16333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.2383333333333\", cy: \"347.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.9483333333334\", cy: \"352.51\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.42\", cy: \"212.3183333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.6899999999999\", cy: \"57.63\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.4616666666666\", cy: \"139.8133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0300000000001\", cy: \"52.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.43\", cy: \"52.79333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.3316666666666\", cy: \"67.29333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0750000000002\", cy: \"101.135\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.7233333333334\", cy: \"125.31333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.7283333333334\", cy: \"115.64333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0683333333333\", cy: \"110.80166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1383333333333\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3250000000002\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.8350000000002\", cy: \"52.77666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.62\", cy: \"52.79333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.6999999999999\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"817.995\", cy: \"52.77666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9049999999999\", cy: \"47.96333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.5400000000001\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.245\", cy: \"52.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9166666666666\", cy: \"188.14499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.2599999999999\", cy: \"163.97333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.42\", cy: \"221.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.41\", cy: \"231.67499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.7566666666667\", cy: \"265.52\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7800000000001\", cy: \"192.98000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.42\", cy: \"202.6483333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.0300000000001\", cy: \"251.01166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"801.485\", cy: \"188.16\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"818.09\", cy: \"197.81333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"760.0400000000001\", cy: \"250.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4000000000001\", cy: \"43.120000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.6199999999999\", cy: \"192.98000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9066666666668\", cy: \"178.47333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9066666666668\", cy: \"168.80666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.335\", cy: \"197.81999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.0500000000001\", cy: \"231.65166666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.04\", cy: \"241.33666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.3400000000001\", cy: \"207.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.47\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9216666666666\", cy: \"57.59833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.03\", cy: \"52.77333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3216666666667\", cy: \"47.928333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.215\", cy: \"62.443333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.62\", cy: \"52.76333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1083333333333\", cy: \"67.26833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.405\", cy: \"62.43333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8149999999999\", cy: \"62.443333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.475\", cy: \"57.613333333333344\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.4599999999999\", cy: \"76.965\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7233333333334\", cy: \"67.26833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.825\", cy: \"125.32000000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7233333333332\", cy: \"57.63166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.1733333333333\", cy: \"120.47500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.465\", cy: \"105.95333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.3866666666667\", cy: \"62.451666666666675\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.7516666666667\", cy: \"72.115\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.9012500000001\", cy: \"67.28375\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.3949999999999\", cy: \"43.10999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.5749999999999\", cy: \"33.45666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.2433333333333\", cy: \"38.29333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"734.9766666666666\", cy: \"33.45\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.8733333333333\", cy: \"38.276666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.1833333333334\", cy: \"43.10999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.785\", cy: \"43.12500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.6883333333334\", cy: \"38.27833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.4983333333333\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"702.10375\", cy: \"43.1075\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"676.8683333333332\", cy: \"57.59833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.5533333333334\", cy: \"62.43333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.295\", cy: \"57.598333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.0649999999999\", cy: \"47.96333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1616666666667\", cy: \"52.77333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"710.1085714285715\", cy: \"38.55142857142857\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"651.9783333333334\", cy: \"62.44\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.4366666666666\", cy: \"47.94333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.09\", cy: \"217.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.405\", cy: \"400.8616666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.155\", cy: \"415.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.715\", cy: \"396.02666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.5016666666667\", cy: \"415.3483333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.6385714285715\", cy: \"357.62142857142857\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.97\", cy: \"381.52333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.8516666666666\", cy: \"405.6933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9983333333333\", cy: \"231.64833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.82\", cy: \"386.3616666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.605\", cy: \"352.49666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.7366666666666\", cy: \"265.4816666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.39\", cy: \"279.9866666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.7366666666666\", cy: \"255.80499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.97\", cy: \"371.8533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0849999999999\", cy: \"284.8466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.8149999999999\", cy: \"289.665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.2566666666667\", cy: \"357.3433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.135\", cy: \"309.01166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.5166666666668\", cy: \"371.8533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"544.9325\", cy: \"299.33625\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"462.05999999999995\", cy: \"222.0033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"462.06\", cy: \"202.66333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"453.7966666666667\", cy: \"236.51\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"486.94000000000005\", cy: \"149.47166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"453.8066666666667\", cy: \"246.17333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"486.9283333333333\", cy: \"139.79666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.39000000000004\", cy: \"197.80499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.675\", cy: \"183.30666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"462.05999999999995\", cy: \"212.33333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.5300000000001\", cy: \"270.33833333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.9550000000001\", cy: \"270.3683333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.2616666666667\", cy: \"265.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"536.8\", cy: \"275.17\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"470.385\", cy: \"265.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"462.1116666666667\", cy: \"251.01166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.7166666666667\", cy: \"270.33833333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.34\", cy: \"270.33333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.335\", cy: \"304.18666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.285\", cy: \"202.64666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.5266666666666\", cy: \"188.155\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9566666666666\", cy: \"207.50166666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.285\", cy: \"226.8116666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6733333333335\", cy: \"294.51666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.25499999999994\", cy: \"134.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.7433333333333\", cy: \"154.305\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.69\", cy: \"241.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.69\", cy: \"250.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.535\", cy: \"96.31166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.1483333333332\", cy: \"57.623333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.1583333333332\", cy: \"67.28666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.9000000000001\", cy: \"91.47333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.4650000000001\", cy: \"52.75833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3716666666666\", cy: \"280.01500000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.7216666666667\", cy: \"110.795\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.3716666666666\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.235\", cy: \"91.47333333333331\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.5216666666666\", cy: \"178.49\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7316666666667\", cy: \"212.31833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.0566666666667\", cy: \"217.17999999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.48\", cy: \"197.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6650000000001\", cy: \"255.84166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.335\", cy: \"231.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.5933333333332\", cy: \"212.31666666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"710.2014285714286\", cy: \"193.25428571428571\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"701.8199999999999\", cy: \"197.55285714285714\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8850000000001\", cy: \"207.4933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.775\", cy: \"221.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.785\", cy: \"212.3216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.5\", cy: \"207.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.315\", cy: \"226.83166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.8166666666666\", cy: \"231.665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.63\", cy: \"221.98666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.085\", cy: \"275.14666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.6083333333332\", cy: \"212.3283333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"760.0233333333332\", cy: \"260.6616666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.07\", cy: \"130.14833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.7733333333334\", cy: \"144.655\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0616666666666\", cy: \"120.47500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.2366666666667\", cy: \"173.62666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.6300000000001\", cy: \"202.64833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.3666666666667\", cy: \"115.63333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9266666666666\", cy: \"197.81333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.2433333333333\", cy: \"192.99166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.2083333333334\", cy: \"183.30999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.5766666666665\", cy: \"86.61833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.245\", cy: \"81.79833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.6349999999999\", cy: \"212.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.8233333333333\", cy: \"72.155\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.8449999999999\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.2199999999999\", cy: \"72.14999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.3716666666666\", cy: \"105.95166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.62\", cy: \"62.446666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"925.9066666666666\", cy: \"67.30499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.275\", cy: \"207.48333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"793.15\", cy: \"192.995\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"801.495\", cy: \"197.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.09\", cy: \"207.48333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.16\", cy: \"202.66333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.79\", cy: \"202.6483333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.88\", cy: \"197.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.275\", cy: \"217.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"942.535\", cy: \"47.945\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"776.5933333333332\", cy: \"202.6483333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6833333333333\", cy: \"284.8516666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.005\", cy: \"299.3433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.36\", cy: \"255.86499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.3800000000001\", cy: \"246.17166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.375\", cy: \"236.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.6350000000001\", cy: \"221.98666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6983333333333\", cy: \"275.1666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.1100000000001\", cy: \"226.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.0450000000001\", cy: \"289.68333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.415\", cy: \"38.26833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1083333333333\", cy: \"57.598333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.215\", cy: \"52.77333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8199999999999\", cy: \"52.77\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9499999999999\", cy: \"47.913333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"925.9366666666666\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.8383333333334\", cy: \"47.91\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7233333333334\", cy: \"57.59833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.6516666666666\", cy: \"43.076666666666675\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1566666666668\", cy: \"43.10999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"651.9616666666667\", cy: \"52.76166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.1483333333333\", cy: \"110.78333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.72\", cy: \"62.440000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.4166666666666\", cy: \"67.28333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.83\", cy: \"115.63833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.8787500000001\", cy: \"57.60125\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.6833333333333\", cy: \"47.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"568.9999999999999\", cy: \"43.089999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.3766666666667\", cy: \"52.77666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.5533333333334\", cy: \"52.76333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.8350000000002\", cy: \"43.10999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.2400000000001\", cy: \"43.120000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.5233333333333\", cy: \"120.47500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"817.995\", cy: \"43.10999999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.6899999999999\", cy: \"47.96333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.4399999999999\", cy: \"43.116666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.3216666666667\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7049999999999\", cy: \"38.26833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.6150000000001\", cy: \"43.12500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.6483333333332\", cy: \"28.59\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.2333333333332\", cy: \"28.623333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.3849999999999\", cy: \"33.443333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.055\", cy: \"38.29333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"701.71\", cy: \"33.15428571428571\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.8716666666666\", cy: \"28.60166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.4883333333333\", cy: \"38.27833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.2033333333333\", cy: \"33.425000000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.48\", cy: \"168.82166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4616666666667\", cy: \"367.00666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1166666666667\", cy: \"304.1766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1066666666667\", cy: \"284.83166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1066666666667\", cy: \"294.50166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7666666666668\", cy: \"279.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.57\", cy: \"241.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9683333333332\", cy: \"192.98000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"545.035\", cy: \"250.9925\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"536.865\", cy: \"246.15666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.5133333333334\", cy: \"255.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1650000000001\", cy: \"352.51000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1550000000001\", cy: \"342.84666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"569.14\", cy: \"313.83\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"577.4616666666667\", cy: \"357.33666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.81\", cy: \"338.0133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1500000000001\", cy: \"323.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.81\", cy: \"328.3433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.495\", cy: \"333.1766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.9350000000001\", cy: \"241.33666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.585\", cy: \"168.81166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.4699999999999\", cy: \"134.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"503.605\", cy: \"188.155\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"503.59999999999997\", cy: \"178.49\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"536.765\", cy: \"130.13\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"544.5914285714287\", cy: \"96.56142857142856\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.9412500000001\", cy: \"105.95750000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.5828571428572\", cy: \"115.90142857142857\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.115\", cy: \"125.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.32666666666665\", cy: \"202.64833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.04999999999995\", cy: \"246.15666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.03\", cy: \"226.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.05\", cy: \"236.48666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.615\", cy: \"197.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.36666666666673\", cy: \"241.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.01\", cy: \"217.15333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.66\", cy: \"246.17166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.32666666666665\", cy: \"212.3183333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.2083333333334\", cy: \"270.32\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.6750000000001\", cy: \"207.4483333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.91\", cy: \"192.97833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.91\", cy: \"183.31500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.5099999999999\", cy: \"173.64\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.235\", cy: \"178.47166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0916666666667\", cy: \"236.49166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.39\", cy: \"212.30333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0916666666666\", cy: \"226.81499999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0716666666666\", cy: \"217.14666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"702.1787499999999\", cy: \"168.80625000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.3250000000002\", cy: \"183.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"735.065\", cy: \"178.49\", r: \"3.6\" } }),\n _c(\"circle\", { attrs: { cx: \"743.335\", cy: \"192.995\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"751.68\", cy: \"197.82000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4699999999999\", cy: \"168.80666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7716666666666\", cy: \"173.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.8325\", cy: \"163.97250000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.8783333333332\", cy: \"260.635\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.76\", cy: \"371.83666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.35\", cy: \"352.51500000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"602.34\", cy: \"342.84\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"594.0616666666667\", cy: \"357.33666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.93\", cy: \"333.17333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.595\", cy: \"338.0133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.78\", cy: \"381.50500000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0616666666667\", cy: \"367.00666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0616666666666\", cy: \"376.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.89\", cy: \"284.83166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.93\", cy: \"323.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.9050000000001\", cy: \"275.17\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.89\", cy: \"294.50166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.785\", cy: \"91.43666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.515\", cy: \"265.4733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.245\", cy: \"318.65833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.9\", cy: \"304.1766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"626.8042857142857\", cy: \"308.6142857142857\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.265\", cy: \"236.49666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"834.695\", cy: \"188.155\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"851.3100000000001\", cy: \"159.14666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.98\", cy: \"183.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.32\", cy: \"168.8216666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.14\", cy: \"173.65666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.8133333333334\", cy: \"212.3033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.4\", cy: \"183.31000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1383333333333\", cy: \"67.28666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.07\", cy: \"178.47333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"851.32\", cy: \"178.49\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"884.4716666666668\", cy: \"101.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1783333333333\", cy: \"105.95833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4399999999999\", cy: \"81.78666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1750000000001\", cy: \"115.62833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.8649999999999\", cy: \"130.13000000000002\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.8649999999999\", cy: \"139.79666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"859.61\", cy: \"154.295\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"876.1683333333334\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7700000000001\", cy: \"173.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.4699999999999\", cy: \"159.13666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"702.17125\", cy: \"159.13125\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"685.235\", cy: \"168.8033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"710.1757142857142\", cy: \"154.58285714285716\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.5099999999999\", cy: \"163.97333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4\", cy: \"202.63166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.94\", cy: \"173.62666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0716666666667\", cy: \"207.48\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.625\", cy: \"178.45666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"751.665\", cy: \"178.49\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"759.9583333333334\", cy: \"183.31000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.255\", cy: \"178.47333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7716666666666\", cy: \"163.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.6700000000001\", cy: \"188.16\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5699999999998\", cy: \"173.64333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.065\", cy: \"168.82166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8633333333333\", cy: \"168.82166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.3250000000002\", cy: \"173.65666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.4516666666667\", cy: \"72.13166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"867.855\", cy: \"72.115\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"676.89\", cy: \"76.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3166666666667\", cy: \"76.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0200000000001\", cy: \"81.78\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1716666666666\", cy: \"72.10833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7633333333333\", cy: \"86.60666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"709.75875\", cy: \"57.613749999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"702.1075000000001\", cy: \"62.447500000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.4366666666666\", cy: \"67.28333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"668.595\", cy: \"81.77\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"602.245\", cy: \"81.78833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9416666666667\", cy: \"76.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.64\", cy: \"72.10333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3066666666667\", cy: \"67.26666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8449999999999\", cy: \"81.77666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1483333333333\", cy: \"86.60666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.495\", cy: \"76.95500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4449999999999\", cy: \"81.77\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.3949999999999\", cy: \"62.446666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"818.015\", cy: \"72.115\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"826.3250000000002\", cy: \"67.28666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.6999999999999\", cy: \"67.28666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"834.63\", cy: \"72.125\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"859.5400000000001\", cy: \"67.28666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4050000000001\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9049999999999\", cy: \"67.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.2550000000001\", cy: \"72.13666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"743.255\", cy: \"57.63\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"751.5900000000001\", cy: \"52.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.6983333333333\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.0649999999999\", cy: \"67.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.8833333333332\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"734.9916666666667\", cy: \"52.79333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.7916666666666\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.4983333333333\", cy: \"67.28666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.1833333333334\", cy: \"62.446666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.765\", cy: \"120.46333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7666666666668\", cy: \"299.33666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7883333333333\", cy: \"309.00500000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.81\", cy: \"318.67333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.495\", cy: \"323.50666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.865\", cy: \"255.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.465\", cy: \"275.15833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.7666666666668\", cy: \"289.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"545.035\", cy: \"260.6625\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"552.455\", cy: \"284.8333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.5\", cy: \"342.8433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4816666666667\", cy: \"386.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"560.82\", cy: \"347.68\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"577.5016666666667\", cy: \"396.0133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.855\", cy: \"134.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.4616666666667\", cy: \"376.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.17\", cy: \"371.8516666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"560.83\", cy: \"357.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"569.1700000000001\", cy: \"362.1816666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"470.45\", cy: \"236.49666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.01\", cy: \"207.48333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.265\", cy: \"188.14499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.01\", cy: \"197.8133333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.71\", cy: \"212.31833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.71000000000004\", cy: \"221.98833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.57666666666665\", cy: \"149.48166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.3066666666667\", cy: \"183.31000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"511.895\", cy: \"144.65\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"495.3066666666667\", cy: \"173.64333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.36666666666673\", cy: \"250.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"503.66\", cy: \"255.84166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.57\", cy: \"250.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.8\", cy: \"391.17333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.275\", cy: \"246.17166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"511.9350000000001\", cy: \"251.00666666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.75333333333333\", cy: \"241.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"478.7533333333334\", cy: \"250.99666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"487.05\", cy: \"255.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.8000000000001\", cy: \"400.8433333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"709.8325\", cy: \"173.64\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"718.4699999999999\", cy: \"178.47333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.7716666666666\", cy: \"183.31000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"702.1787499999999\", cy: \"178.47375\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"594.0816666666667\", cy: \"386.34499999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.3899999999999\", cy: \"221.97\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"693.5099999999999\", cy: \"183.3066666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.9633333333334\", cy: \"212.30333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.2399999999999\", cy: \"188.13833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.645\", cy: \"217.13333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9783333333334\", cy: \"202.64833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.275\", cy: \"197.81333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.5816666666666\", cy: \"192.97833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.9783333333334\", cy: \"212.3183333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.685\", cy: \"207.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.3449999999999\", cy: \"202.66333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"735.0799999999999\", cy: \"197.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.685\", cy: \"217.16333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"735.07\", cy: \"188.155\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"660.41\", cy: \"231.63833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.615\", cy: \"357.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.935\", cy: \"342.84666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.2283333333334\", cy: \"337.99833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"610.605\", cy: \"347.68\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"602.3649999999999\", cy: \"381.51500000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.355\", cy: \"371.8516666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.355\", cy: \"362.1816666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.2366666666666\", cy: \"328.32166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.8266666666666\", cy: \"270.31666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"652.0833333333334\", cy: \"265.49\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.4833333333333\", cy: \"275.1466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.4150000000001\", cy: \"241.32833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1850000000001\", cy: \"289.6566666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1850000000001\", cy: \"299.3233333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.555\", cy: \"304.14833333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1850000000001\", cy: \"279.9866666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"495.3166666666666\", cy: \"192.97833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.7550000000001\", cy: \"96.28166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.7333333333335\", cy: \"105.97333333333331\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0099999999999\", cy: \"72.155\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.4683333333332\", cy: \"110.80499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1616666666667\", cy: \"144.66833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.4633333333333\", cy: \"120.47166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0300000000001\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1683333333334\", cy: \"134.96666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.4616666666666\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.6899999999999\", cy: \"67.29666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.245\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9366666666668\", cy: \"159.11833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.5400000000001\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.62\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9049999999999\", cy: \"57.63\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"520.17\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1383333333333\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.8350000000002\", cy: \"62.446666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.7700000000001\", cy: \"183.31000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"818.08\", cy: \"188.14499999999998\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.3250000000002\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.61\", cy: \"163.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.7066666666666\", cy: \"197.82666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8633333333333\", cy: \"178.49\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"801.48\", cy: \"178.49\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"776.5699999999998\", cy: \"183.31000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.7116666666666\", cy: \"207.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.14\", cy: \"183.32666666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"826.41\", cy: \"192.97833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.61\", cy: \"183.31000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.3249999999999\", cy: \"188.16\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"834.7116666666666\", cy: \"217.16333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.61\", cy: \"173.64333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"842.9899999999999\", cy: \"192.995\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.06\", cy: \"222.0033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843\", cy: \"202.66333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"843.0300000000001\", cy: \"212.35166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.43\", cy: \"62.461666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"618.8249999999999\", cy: \"72.12\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"627.1283333333333\", cy: \"76.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"610.475\", cy: \"67.28333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"593.9216666666666\", cy: \"67.26833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"602.225\", cy: \"72.10666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"635.425\", cy: \"72.10333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"651.9983333333333\", cy: \"72.11\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"660.295\", cy: \"67.26833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"643.7433333333333\", cy: \"76.93833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.7683333333333\", cy: \"110.79333333333331\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"668.575\", cy: \"72.10499999999999\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.8683333333333\", cy: \"188.155\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"536.765\", cy: \"101.11833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"585.62\", cy: \"62.43333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"528.465\", cy: \"125.29833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"577.3166666666666\", cy: \"57.60166666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"817.995\", cy: \"62.446666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"544.5485714285713\", cy: \"77.24285714285715\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"552.4083333333334\", cy: \"72.11\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"676.8683333333332\", cy: \"67.26833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"768.1833333333334\", cy: \"52.77666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"751.585\", cy: \"43.120000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"759.8833333333332\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"784.7916666666666\", cy: \"52.79333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"793.0649999999999\", cy: \"57.63\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"809.6999999999999\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"801.4050000000001\", cy: \"52.79333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"776.4983333333333\", cy: \"57.616666666666674\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"743.255\", cy: \"47.96333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"702.1075000000001\", cy: \"52.7775\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"685.1616666666667\", cy: \"62.443333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"709.75875\", cy: \"47.94375\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"693.4366666666666\", cy: \"57.613333333333344\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"718.3949999999999\", cy: \"52.77666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"734.9866666666667\", cy: \"43.12500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"726.6983333333333\", cy: \"47.946666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1850000000001\", cy: \"289.65\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.1550000000001\", cy: \"279.99833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.5033333333334\", cy: \"275.16333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.4983333333333\", cy: \"304.2\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9249999999998\", cy: \"304.19166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.5283333333333\", cy: \"284.84333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.895\", cy: \"294.50333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.5283333333333\", cy: \"294.5133333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.215\", cy: \"299.3383333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"859.6583333333333\", cy: \"318.6666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"868.0050000000001\", cy: \"323.51166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"851.3116666666666\", cy: \"323.52666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.8250000000002\", cy: \"212.33333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.8249999999999\", cy: \"202.66333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.805\", cy: \"231.65833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"909.4733333333334\", cy: \"251\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"901.1066666666666\", cy: \"246.16833333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.1366666666667\", cy: \"236.51500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.8650000000001\", cy: \"260.6766666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0566666666667\", cy: \"294.52000000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.0633333333334\", cy: \"304.18666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.41\", cy: \"289.66333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.8533333333334\", cy: \"328.3566666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"925.9233333333333\", cy: \"134.97666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.2800000000001\", cy: \"130.14333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"925.9283333333333\", cy: \"125.28666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.7133333333335\", cy: \"168.81666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"909.39\", cy: \"173.645\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"925.9933333333335\", cy: \"163.96833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.2449999999999\", cy: \"149.48333333333332\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.305\", cy: \"159.14166666666668\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.7950000000001\", cy: \"265.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.7366666666667\", cy: \"304.17333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.4350000000001\", cy: \"328.34999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"917.79\", cy: \"323.5\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"934.2900000000001\", cy: \"294.51666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.685\", cy: \"454.07166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.9983333333333\", cy: \"449.2033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.5749999999999\", cy: \"323.52833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"959.2516666666667\", cy: \"309\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"992.5649999999999\", cy: \"328.34999999999997\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"976.3714285714285\", cy: \"318.94714285714286\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"983.7371428571429\", cy: \"323.2271428571429\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.585\", cy: \"313.82166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.2433333333333\", cy: \"318.67333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"1000.805\", cy: \"313.84\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"951.025\", cy: \"410.54333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.41\", cy: \"400.8733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.8000000000001\", cy: \"391.1933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.685\", cy: \"415.38000000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.6850000000001\", cy: \"405.71333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.4816666666666\", cy: \"386.3583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.1166666666667\", cy: \"396.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"892.85\", cy: \"386.375\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"909.46\", cy: \"376.68833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.6\", cy: \"391.2083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.8699999999999\", cy: \"396.04333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.61\", cy: \"400.8733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.1999999999999\", cy: \"391.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.1783333333333\", cy: \"381.53999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.2783333333333\", cy: \"376.68833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.5749999999999\", cy: \"371.8533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.985\", cy: \"371.8633333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.6750000000001\", cy: \"357.34833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"975.9249999999998\", cy: \"367.01666666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.69\", cy: \"347.6933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.6150000000001\", cy: \"400.85999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"976.3914285714287\", cy: \"376.96000000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.3183333333333\", cy: \"415.3666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.3183333333335\", cy: \"405.69666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.6149999999999\", cy: \"391.1933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"976.4171428571428\", cy: \"386.62857142857143\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.5916666666666\", cy: \"420.23499999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.3000000000001\", cy: \"386.35833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9949999999999\", cy: \"400.85999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.5949999999999\", cy: \"381.52500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"951.015\", cy: \"391.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"942.665\", cy: \"386.375\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"876.3183333333333\", cy: \"396.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.5949999999999\", cy: \"342.84666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.7600000000001\", cy: \"371.8533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.3650000000001\", cy: \"352.5333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.38\", cy: \"381.52833333333325\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.3133333333334\", cy: \"434.715\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"868.025\", cy: \"420.21333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.6750000000001\", cy: \"338.02000000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.695\", cy: \"434.7383333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.3699999999999\", cy: \"371.8633333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.6449999999999\", cy: \"376.7033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.995\", cy: \"381.53999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.0766666666667\", cy: \"367.0183333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.3183333333333\", cy: \"396.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.3699999999999\", cy: \"362.19666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.7800000000001\", cy: \"381.52500000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"951.025\", cy: \"400.8733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.0766666666667\", cy: \"376.68833333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.0966666666667\", cy: \"386.3583333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.4\", cy: \"391.2083333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.6850000000001\", cy: \"396.04333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.6449999999999\", cy: \"367.0333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.75\", cy: \"352.5083333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.1383333333333\", cy: \"362.17833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"975.9249999999998\", cy: \"357.34666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.82\", cy: \"367.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9649999999998\", cy: \"381.53000000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.2466666666666\", cy: \"376.67\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.5466666666667\", cy: \"371.8500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.0416666666666\", cy: \"347.66833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.585\", cy: \"352.49666666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.2783333333333\", cy: \"367.01833333333326\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.5650000000002\", cy: \"362.17833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"950.9899999999999\", cy: \"362.195\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.3400000000001\", cy: \"342.84833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.4499999999999\", cy: \"357.3433333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"976.4357142857143\", cy: \"415.09\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.6650000000001\", cy: \"429.8666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"951.0183333333333\", cy: \"429.8833333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"983.4525\", cy: \"400.86\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"934.3666666666667\", cy: \"429.88166666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"983.4525000000001\", cy: \"410.52750000000003\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.0866666666666\", cy: \"415.38499999999993\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.9016666666666\", cy: \"415.3983333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.2199999999999\", cy: \"410.5483333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.3183333333333\", cy: \"415.3666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.5016666666667\", cy: \"405.6966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.79\", cy: \"410.5316666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.6416666666668\", cy: \"420.215\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.3183333333333\", cy: \"405.6966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.5016666666667\", cy: \"396.02833333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.61\", cy: \"410.54333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.995\", cy: \"410.5266666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.8699999999999\", cy: \"405.71333333333337\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.21\", cy: \"400.8733333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"867.9949999999999\", cy: \"391.1933333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"909.46\", cy: \"367.01833333333326\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"876.2983333333333\", cy: \"386.35833333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.7600000000001\", cy: \"362.18333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"901.1683333333334\", cy: \"371.8633333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"884.58\", cy: \"381.52833333333325\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"892.83\", cy: \"376.7033333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"959.3149999999999\", cy: \"425.03666666666663\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"967.6149999999999\", cy: \"410.52666666666664\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.0766666666667\", cy: \"357.3500000000001\", r: \"3.6\" }\n }),\n _c(\"circle\", { attrs: { cx: \"976.785\", cy: \"405.69375\", r: \"3.6\" } }),\n _c(\"circle\", {\n attrs: { cx: \"983.7742857142857\", cy: \"381.2442857142857\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"976.7850000000001\", cy: \"396.02625\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"983.4525000000001\", cy: \"391.19250000000005\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"917.8000000000001\", cy: \"400.85999999999996\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.41\", cy: \"410.54333333333335\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"926.1166666666667\", cy: \"405.6966666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"934.39\", cy: \"420.22333333333336\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"951.0216666666666\", cy: \"420.21000000000004\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"942.68\", cy: \"425.0466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1017.485\", cy: \"323.49333333333334\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1009.2283333333334\", cy: \"463.70166666666665\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1000.8916666666665\", cy: \"468.5466666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1017.525\", cy: \"458.8616666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1025.8149999999998\", cy: \"454.00666666666666\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1034.0249999999999\", cy: \"371.8533333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1034.0449999999998\", cy: \"439.5416666666667\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1042.4\", cy: \"434.6983333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1042.4\", cy: \"425.0333333333333\", r: \"3.6\" }\n }),\n _c(\"circle\", {\n attrs: { cx: \"1075.54\", cy: \"357.3333333333333\", r: \"3.6\" }\n })\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-df567280\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-df567280\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/maps/Native-Map/res/Network-Native-Map-Canvas.vue\n// module id = 126\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-05fc5bd9\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Network-Native-Map-Dialog.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map-Dialog.vue\"\nimport __vue_script__ from \"!!!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map-Dialog.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-05fc5bd9\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Network-Native-Map-Dialog.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-05fc5bd9\", Component.options)\n } else {\n hotAPI.reload(\"data-v-05fc5bd9\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue\n// module id = 127\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-05fc5bd9\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue\n// module id = 129\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-094a8568\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Network-Native-Map-Dialog-Element.vue\")\n}\nvar normalizeComponent = require(\"!../../../../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map-Dialog-Element.vue\"\nimport __vue_script__ from \"!!!../../../../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Network-Native-Map-Dialog-Element.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-094a8568\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Network-Native-Map-Dialog-Element.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-094a8568\", Component.options)\n } else {\n hotAPI.reload(\"data-v-094a8568\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue\n// module id = 130\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-094a8568\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue\n// module id = 132\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", [\n _c(\n \"div\",\n { staticStyle: { display: \"inline-block\", \"padding-right\": \"10px\" } },\n [\n _vm.nodeType === \"myself\"\n ? _c(\"icon\", {\n staticStyle: { \"padding-right\": \"10px\" },\n attrs: { icon: \"sun-glasses\" }\n })\n : _vm._e(),\n _vm.nodeType === \"browser\"\n ? _c(\"icon\", {\n staticStyle: { \"padding-right\": \"10px\" },\n attrs: { icon: \"network\" }\n })\n : _vm._e(),\n _vm.nodeType === \"terminal\"\n ? _c(\"icon\", {\n staticStyle: { \"padding-right\": \"10px\" },\n attrs: { icon: \"terminal\" }\n })\n : _vm._e(),\n _vm.nodeType === \"terminal-waitlist\"\n ? _c(\"icon\", {\n staticStyle: { \"padding-right\": \"10px\" },\n attrs: { icon: \"terminal\" }\n })\n : _vm._e(),\n _vm.nodeType === \"browser-waitlist\"\n ? _c(\"icon\", {\n staticStyle: { \"padding-right\": \"10px\" },\n attrs: { icon: \"network\" }\n })\n : _vm._e(),\n _c(\"img\", {\n staticClass: \"icon-connected\",\n attrs: {\n src:\n this.connected === \"connected\"\n ? \"https://icons.iconarchive.com/icons/icons8/windows-8/16/Network-Connected-icon.png\"\n : \"https://icons.iconarchive.com/icons/icons8/windows-8/16/Network-Disconnected-icon.png\"\n }\n })\n ],\n 1\n ),\n _c(\n \"div\",\n {\n ref: \"refText\",\n staticClass: \"map-dialog-description-text\",\n staticStyle: { display: \"inline-block\" }\n },\n [\n _c(\"br\"),\n _vm._v(_vm._s(_vm.country) + \", \" + _vm._s(_vm.city)),\n _c(\"br\"),\n _c(\"small\", [_vm._v(_vm._s(this.getAddress || \" \") + \" \")])\n ]\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-094a8568\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-094a8568\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog-Element.vue\n// module id = 133\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { staticClass: \"map-dialog \" }, [\n _c(\n \"div\",\n {\n ref: \"refDialogContainer\",\n staticClass: \"map-dialog-description\",\n style: { opacity: this.display ? 1 : 0 }\n },\n _vm._l(this.desc, function(desc) {\n return _c(\"NetworkNativeMapDialogElement\", {\n key: desc.uuid || desc.index,\n staticStyle: { \"padding-bottom\": \"20px\" },\n attrs: {\n address: desc.address,\n status: desc.status,\n country: desc.country,\n city: desc.city,\n nodeType: desc.nodeType\n }\n })\n })\n )\n ])\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-05fc5bd9\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-05fc5bd9\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/maps/Native-Map/res/dialog/Network-Native-Map-Dialog.vue\n// module id = 134\n// module chunks = 0","var v1 = require('./v1');\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\n\nmodule.exports = uuid;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/index.js\n// module id = 135\n// module chunks = 0","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\nvar _clockseq;\n\n// Previous uuid creation time\nvar _lastMSecs = 0;\nvar _lastNSecs = 0;\n\n// See https://github.com/broofa/node-uuid for API details\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq;\n\n // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [\n seedBytes[0] | 0x01,\n seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]\n ];\n }\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n }\n\n // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime();\n\n // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1;\n\n // Time since last uuid creation (in msecs)\n var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000;\n\n // Per 4.2.1.2, Bump clockseq on clock regression\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n }\n\n // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n }\n\n // Per 4.2.1.2 Throw error if too many uuids are requested\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq;\n\n // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n msecs += 12219292800000;\n\n // `time_low`\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff;\n\n // `time_mid`\n var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff;\n\n // `time_high_and_version`\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n b[i++] = tmh >>> 16 & 0xff;\n\n // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n b[i++] = clockseq >>> 8 | 0x80;\n\n // `clock_seq_low`\n b[i++] = clockseq & 0xff;\n\n // `node`\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/v1.js\n// module id = 136\n// module chunks = 0","var rng = require('./lib/rng');\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof(options) == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n options = options || {};\n\n var rnds = options.random || (options.rng || rng)();\n\n // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n\n // Copy bytes to buffer, if provided\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/uuid/v4.js\n// module id = 137\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"NetworkNativeMapCanvas\"),\n _c(\"NetworkNativeMapDialog\", { ref: \"refDialog\" })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-6f992934\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6f992934\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/maps/Native-Map/Network-Native-Map.vue\n// module id = 138\n// module chunks = 0","var Vue = require('vue/dist/vue.min.js');\n\nimport AlertsStickyBar from 'components/alerts/Notifications.vue';\n\n//for safari workaround\nexport default (params)=> {\n\n if (document.getElementById(\"WebDollarAlertsStickyBarDiv\") !== null && document.getElementById(\"WebDollarAlertsStickyBarDiv\")){\n return false;\n }\n\n if (document.getElementById('WebDollarAlertsStickyBar') === null)\n document.getElementsByTagName(\"body\")[0].insertAdjacentHTML(\"afterbegin\", `
`);\n\n new Vue({\n el: '#WebDollarAlertsStickyBar',\n render: h => h(AlertsStickyBar)\n })\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/initialize-params/vue/Alerts-Sticky-Bar-main-vue.js\n// module id = 139\n// module chunks = 0","var disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n require(\"!!vue-style-loader!css-loader?sourceMap!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-87887140\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":true}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Notifications.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Notifications.vue\"\nimport __vue_script__ from \"!!!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Notifications.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-87887140\\\",\\\"hasScoped\\\":false,\\\"preserveWhitespace\\\":false,\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Notifications.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/components/alerts/Notifications.vue\"\n\n/* hot reload */\nif (module.hot) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-87887140\", Component.options)\n } else {\n hotAPI.reload(\"data-v-87887140\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/alerts/Notifications.vue\n// module id = 140\n// module chunks = 0","// style-loader: Adds some css to the DOM by adding a \"],\"sourceRoot\":\"\"}]);\n\n// exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader?sourceMap!./node_modules/vue-loader/lib/style-compiler?{\"vue\":true,\"id\":\"data-v-87887140\",\"scoped\":false,\"hasInlineConfig\":true}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/components/alerts/Notifications.vue\n// module id = 142\n// module chunks = 0","var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"notifications\", {\n staticClass: \"notificationsBox\",\n attrs: { group: \"all\", position: \"bottom left\", max: \"5\" }\n }),\n _c(\"notifications\", {\n staticClass: \"notificationsBox\",\n attrs: { group: \"error-firewall\", position: \"bottom left\" }\n }),\n _c(\"notifications\", {\n staticClass: \"notificationsBox\",\n attrs: { group: \"error-internet\", position: \"bottom left\" }\n }),\n _c(\"notifications\", {\n staticClass: \"notificationsBox\",\n attrs: { group: \"indexedDB-error-reason\", position: \"bottom left\" }\n }),\n _c(\"notifications\", {\n staticClass: \"notificationsBox\",\n attrs: { group: \"network-adjusted-time-error\", position: \"bottom left\" }\n }),\n _c(\"notifications\", {\n staticClass: \"notificationsBox\",\n attrs: { group: \"network-adjusted-time-error\", position: \"bottom left\" }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\nif (module.hot) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-87887140\", esExports)\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-87887140\",\"hasScoped\":false,\"preserveWhitespace\":false,\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/alerts/Notifications.vue\n// module id = 143\n// module chunks = 0"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/1PA;AACA;;;;;;;ACDA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClJA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACnlCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC8kDA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3gEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxLA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC9EA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvLA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;;;;;;;ACFA;AACA;;;;;;;;;ACDA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7BA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClNA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClLA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjCA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACfA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACx4LA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AClBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;A","sourceRoot":""} \ No newline at end of file diff --git a/public/assets/fonts/avenir-light.woff b/public/assets/fonts/avenir-light.woff new file mode 100644 index 00000000..e69de29b diff --git a/public/assets/images/SocialMedia/discord_white.png b/public/assets/images/SocialMedia/discord_white.png new file mode 100644 index 00000000..249e2e3f Binary files /dev/null and b/public/assets/images/SocialMedia/discord_white.png differ diff --git a/public/assets/images/SocialMedia/discord_yellow.png b/public/assets/images/SocialMedia/discord_yellow.png new file mode 100644 index 00000000..fcf967a0 Binary files /dev/null and b/public/assets/images/SocialMedia/discord_yellow.png differ diff --git a/public/assets/images/SocialMedia/facebook_white.png b/public/assets/images/SocialMedia/facebook_white.png new file mode 100644 index 00000000..4cedd7da Binary files /dev/null and b/public/assets/images/SocialMedia/facebook_white.png differ diff --git a/public/assets/images/SocialMedia/facebook_yellow.png b/public/assets/images/SocialMedia/facebook_yellow.png new file mode 100644 index 00000000..a5d4c7a8 Binary files /dev/null and b/public/assets/images/SocialMedia/facebook_yellow.png differ diff --git a/public/assets/images/SocialMedia/forum_white.png b/public/assets/images/SocialMedia/forum_white.png new file mode 100644 index 00000000..98778b1f Binary files /dev/null and b/public/assets/images/SocialMedia/forum_white.png differ diff --git a/public/assets/images/SocialMedia/forum_yellow.png b/public/assets/images/SocialMedia/forum_yellow.png new file mode 100644 index 00000000..ba6bc1ee Binary files /dev/null and b/public/assets/images/SocialMedia/forum_yellow.png differ diff --git a/public/assets/images/SocialMedia/github_white.png b/public/assets/images/SocialMedia/github_white.png new file mode 100644 index 00000000..93f73a3a Binary files /dev/null and b/public/assets/images/SocialMedia/github_white.png differ diff --git a/public/assets/images/SocialMedia/github_yellow.png b/public/assets/images/SocialMedia/github_yellow.png new file mode 100644 index 00000000..dde8d2f0 Binary files /dev/null and b/public/assets/images/SocialMedia/github_yellow.png differ diff --git a/public/assets/images/SocialMedia/medium_white.png b/public/assets/images/SocialMedia/medium_white.png new file mode 100644 index 00000000..bcbc2c29 Binary files /dev/null and b/public/assets/images/SocialMedia/medium_white.png differ diff --git a/public/assets/images/SocialMedia/medium_yellow.png b/public/assets/images/SocialMedia/medium_yellow.png new file mode 100644 index 00000000..577539f2 Binary files /dev/null and b/public/assets/images/SocialMedia/medium_yellow.png differ diff --git a/public/assets/images/SocialMedia/reddit_white.png b/public/assets/images/SocialMedia/reddit_white.png new file mode 100644 index 00000000..846ac553 Binary files /dev/null and b/public/assets/images/SocialMedia/reddit_white.png differ diff --git a/public/assets/images/SocialMedia/reddit_yellow.png b/public/assets/images/SocialMedia/reddit_yellow.png new file mode 100644 index 00000000..755cbb28 Binary files /dev/null and b/public/assets/images/SocialMedia/reddit_yellow.png differ diff --git a/public/assets/images/SocialMedia/skype_white.png b/public/assets/images/SocialMedia/skype_white.png new file mode 100644 index 00000000..80f6c8e7 Binary files /dev/null and b/public/assets/images/SocialMedia/skype_white.png differ diff --git a/public/assets/images/SocialMedia/skype_yellow.png b/public/assets/images/SocialMedia/skype_yellow.png new file mode 100644 index 00000000..a4a8e101 Binary files /dev/null and b/public/assets/images/SocialMedia/skype_yellow.png differ diff --git a/public/assets/images/SocialMedia/telegram_white.png b/public/assets/images/SocialMedia/telegram_white.png new file mode 100644 index 00000000..afec2bc4 Binary files /dev/null and b/public/assets/images/SocialMedia/telegram_white.png differ diff --git a/public/assets/images/SocialMedia/telegram_yellow.png b/public/assets/images/SocialMedia/telegram_yellow.png new file mode 100644 index 00000000..315a0e93 Binary files /dev/null and b/public/assets/images/SocialMedia/telegram_yellow.png differ diff --git a/public/assets/images/SocialMedia/twitter_white.png b/public/assets/images/SocialMedia/twitter_white.png new file mode 100644 index 00000000..3e4f0c3a Binary files /dev/null and b/public/assets/images/SocialMedia/twitter_white.png differ diff --git a/public/assets/images/SocialMedia/twitter_yellow.png b/public/assets/images/SocialMedia/twitter_yellow.png new file mode 100644 index 00000000..7509ae99 Binary files /dev/null and b/public/assets/images/SocialMedia/twitter_yellow.png differ diff --git a/public/assets/images/SocialMedia/youtube_white.png b/public/assets/images/SocialMedia/youtube_white.png new file mode 100644 index 00000000..62c43656 Binary files /dev/null and b/public/assets/images/SocialMedia/youtube_white.png differ diff --git a/public/assets/images/SocialMedia/youtube_yellow.png b/public/assets/images/SocialMedia/youtube_yellow.png new file mode 100644 index 00000000..b60185be Binary files /dev/null and b/public/assets/images/SocialMedia/youtube_yellow.png differ diff --git a/public/assets/images/WebDollar-Browser.png b/public/assets/images/WebDollar-Browser.png new file mode 100644 index 00000000..ce0ca05b Binary files /dev/null and b/public/assets/images/WebDollar-Browser.png differ diff --git a/public/assets/images/WebDollar-Landing-image.png b/public/assets/images/WebDollar-Landing-image.png new file mode 100644 index 00000000..53ca371d Binary files /dev/null and b/public/assets/images/WebDollar-Landing-image.png differ diff --git a/public/assets/images/WebDollar-Security.png b/public/assets/images/WebDollar-Security.png new file mode 100644 index 00000000..d0eb92ea Binary files /dev/null and b/public/assets/images/WebDollar-Security.png differ diff --git a/public/assets/images/WebDollar-logo-black.png b/public/assets/images/WebDollar-logo-black.png new file mode 100644 index 00000000..d4a58f72 Binary files /dev/null and b/public/assets/images/WebDollar-logo-black.png differ diff --git a/public/assets/images/WebDollar-logo-white.png b/public/assets/images/WebDollar-logo-white.png new file mode 100644 index 00000000..a3919570 Binary files /dev/null and b/public/assets/images/WebDollar-logo-white.png differ diff --git a/public/assets/images/WebDollar-ming.png b/public/assets/images/WebDollar-ming.png new file mode 100644 index 00000000..c69a9c99 Binary files /dev/null and b/public/assets/images/WebDollar-ming.png differ diff --git a/public/assets/images/WebDollar-wallet.png b/public/assets/images/WebDollar-wallet.png new file mode 100644 index 00000000..90a9e8c2 Binary files /dev/null and b/public/assets/images/WebDollar-wallet.png differ diff --git a/public/assets/images/activeBrowserMining.png b/public/assets/images/activeBrowserMining.png new file mode 100644 index 00000000..762eeb37 Binary files /dev/null and b/public/assets/images/activeBrowserMining.png differ diff --git a/public/assets/images/bitcointalk/3-1-git.png b/public/assets/images/bitcointalk/3-1-git.png new file mode 100644 index 00000000..614e2902 Binary files /dev/null and b/public/assets/images/bitcointalk/3-1-git.png differ diff --git a/public/assets/images/bitcointalk/3-2-telegram.png b/public/assets/images/bitcointalk/3-2-telegram.png new file mode 100644 index 00000000..4bbd5ce9 Binary files /dev/null and b/public/assets/images/bitcointalk/3-2-telegram.png differ diff --git a/public/assets/images/bitcointalk/3-3-reddit.png b/public/assets/images/bitcointalk/3-3-reddit.png new file mode 100644 index 00000000..843b7dd7 Binary files /dev/null and b/public/assets/images/bitcointalk/3-3-reddit.png differ diff --git a/public/assets/images/bitcointalk/3-4-medium.png b/public/assets/images/bitcointalk/3-4-medium.png new file mode 100644 index 00000000..62f3a3a6 Binary files /dev/null and b/public/assets/images/bitcointalk/3-4-medium.png differ diff --git a/public/assets/images/bitcointalk/3-5-fb.png b/public/assets/images/bitcointalk/3-5-fb.png new file mode 100644 index 00000000..9ff4a83f Binary files /dev/null and b/public/assets/images/bitcointalk/3-5-fb.png differ diff --git a/public/assets/images/bitcointalk/3-6-twitter.png b/public/assets/images/bitcointalk/3-6-twitter.png new file mode 100644 index 00000000..c12ef5a7 Binary files /dev/null and b/public/assets/images/bitcointalk/3-6-twitter.png differ diff --git a/public/assets/images/bitcointalk/WebDollar-Block-Reward_left.png b/public/assets/images/bitcointalk/WebDollar-Block-Reward_left.png new file mode 100644 index 00000000..856958a8 Binary files /dev/null and b/public/assets/images/bitcointalk/WebDollar-Block-Reward_left.png differ diff --git a/public/assets/images/bitcointalk/WebDollar-Block-Reward_right.png b/public/assets/images/bitcointalk/WebDollar-Block-Reward_right.png new file mode 100644 index 00000000..66a98f16 Binary files /dev/null and b/public/assets/images/bitcointalk/WebDollar-Block-Reward_right.png differ diff --git a/public/assets/images/bitcointalk/bitcointalk-webdollar-hero.jpeg b/public/assets/images/bitcointalk/bitcointalk-webdollar-hero.jpeg new file mode 100644 index 00000000..db15589e Binary files /dev/null and b/public/assets/images/bitcointalk/bitcointalk-webdollar-hero.jpeg differ diff --git a/public/assets/images/bitcointalk/button-medium-webdollar.png b/public/assets/images/bitcointalk/button-medium-webdollar.png new file mode 100644 index 00000000..c3a1ef78 Binary files /dev/null and b/public/assets/images/bitcointalk/button-medium-webdollar.png differ diff --git a/public/assets/images/bitcointalk/button-whitepaper-webdol.png b/public/assets/images/bitcointalk/button-whitepaper-webdol.png new file mode 100644 index 00000000..c9a0faa4 Binary files /dev/null and b/public/assets/images/bitcointalk/button-whitepaper-webdol.png differ diff --git a/public/assets/images/bitcointalk/check-testnet-button.png b/public/assets/images/bitcointalk/check-testnet-button.png new file mode 100644 index 00000000..1919a24f Binary files /dev/null and b/public/assets/images/bitcointalk/check-testnet-button.png differ diff --git a/public/assets/images/bitcointalk/goto-button.png b/public/assets/images/bitcointalk/goto-button.png new file mode 100644 index 00000000..9698484e Binary files /dev/null and b/public/assets/images/bitcointalk/goto-button.png differ diff --git a/public/assets/images/bitcointalk/icon-article.png b/public/assets/images/bitcointalk/icon-article.png new file mode 100644 index 00000000..22da1e4d Binary files /dev/null and b/public/assets/images/bitcointalk/icon-article.png differ diff --git a/public/assets/images/bitcointalk/icon-video.png b/public/assets/images/bitcointalk/icon-video.png new file mode 100644 index 00000000..d60df99b Binary files /dev/null and b/public/assets/images/bitcointalk/icon-video.png differ diff --git a/public/assets/images/bitcointalk/names.tar.gz b/public/assets/images/bitcointalk/names.tar.gz new file mode 100644 index 00000000..7b885a66 Binary files /dev/null and b/public/assets/images/bitcointalk/names.tar.gz differ diff --git a/public/assets/images/bitcointalk/section-ecosystem.png b/public/assets/images/bitcointalk/section-ecosystem.png new file mode 100644 index 00000000..6e44b03d Binary files /dev/null and b/public/assets/images/bitcointalk/section-ecosystem.png differ diff --git a/public/assets/images/bitcointalk/section-media.png b/public/assets/images/bitcointalk/section-media.png new file mode 100644 index 00000000..3954f30b Binary files /dev/null and b/public/assets/images/bitcointalk/section-media.png differ diff --git a/public/assets/images/bitcointalk/section-roadmap.png b/public/assets/images/bitcointalk/section-roadmap.png new file mode 100644 index 00000000..d663e3ea Binary files /dev/null and b/public/assets/images/bitcointalk/section-roadmap.png differ diff --git a/public/assets/images/bitcointalk/section-specs.png b/public/assets/images/bitcointalk/section-specs.png new file mode 100644 index 00000000..f8448f2a Binary files /dev/null and b/public/assets/images/bitcointalk/section-specs.png differ diff --git a/public/assets/images/bitcointalk/section-supply.png b/public/assets/images/bitcointalk/section-supply.png new file mode 100644 index 00000000..2fde2a73 Binary files /dev/null and b/public/assets/images/bitcointalk/section-supply.png differ diff --git a/public/assets/images/bitcointalk/section-what-makes.png b/public/assets/images/bitcointalk/section-what-makes.png new file mode 100644 index 00000000..4b4827fd Binary files /dev/null and b/public/assets/images/bitcointalk/section-what-makes.png differ diff --git a/public/assets/images/bitcointalk/webDollar-genesis.png b/public/assets/images/bitcointalk/webDollar-genesis.png new file mode 100644 index 00000000..ef6771e1 Binary files /dev/null and b/public/assets/images/bitcointalk/webDollar-genesis.png differ diff --git a/public/assets/images/bitcointalk/webdollar-genesis-investment.png b/public/assets/images/bitcointalk/webdollar-genesis-investment.png new file mode 100644 index 00000000..15d3153d Binary files /dev/null and b/public/assets/images/bitcointalk/webdollar-genesis-investment.png differ diff --git a/public/assets/images/bitcointalk/webdollar-telegram.png b/public/assets/images/bitcointalk/webdollar-telegram.png new file mode 100644 index 00000000..4a31f21e Binary files /dev/null and b/public/assets/images/bitcointalk/webdollar-telegram.png differ diff --git a/public/assets/images/bitcointalk/webdollar-timeline.png b/public/assets/images/bitcointalk/webdollar-timeline.png new file mode 100644 index 00000000..6414baa2 Binary files /dev/null and b/public/assets/images/bitcointalk/webdollar-timeline.png differ diff --git a/public/assets/images/black_paper.png b/public/assets/images/black_paper.png new file mode 100644 index 00000000..4a82f1f8 Binary files /dev/null and b/public/assets/images/black_paper.png differ diff --git a/public/assets/images/browserMining.png b/public/assets/images/browserMining.png new file mode 100644 index 00000000..035f1b13 Binary files /dev/null and b/public/assets/images/browserMining.png differ diff --git a/public/assets/images/darkBrowser.png b/public/assets/images/darkBrowser.png new file mode 100644 index 00000000..817dbbf8 Binary files /dev/null and b/public/assets/images/darkBrowser.png differ diff --git a/public/assets/images/facebook-logo.svg b/public/assets/images/facebook-logo.svg new file mode 100644 index 00000000..d35e9864 --- /dev/null +++ b/public/assets/images/facebook-logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/favicon.ico b/public/assets/images/favicon.ico new file mode 100644 index 00000000..357e7216 Binary files /dev/null and b/public/assets/images/favicon.ico differ diff --git a/public/assets/images/github-logo.svg b/public/assets/images/github-logo.svg new file mode 100644 index 00000000..9dd8eb57 --- /dev/null +++ b/public/assets/images/github-logo.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/logo-120.png b/public/assets/images/logo-120.png new file mode 100644 index 00000000..997ef494 Binary files /dev/null and b/public/assets/images/logo-120.png differ diff --git a/public/assets/images/logo-48.png b/public/assets/images/logo-48.png new file mode 100644 index 00000000..9b40e397 Binary files /dev/null and b/public/assets/images/logo-48.png differ diff --git a/public/assets/images/logo-coin.png b/public/assets/images/logo-coin.png new file mode 100644 index 00000000..80bd274a Binary files /dev/null and b/public/assets/images/logo-coin.png differ diff --git a/public/assets/images/logo.png b/public/assets/images/logo.png new file mode 100644 index 00000000..a3919570 Binary files /dev/null and b/public/assets/images/logo.png differ diff --git a/public/assets/images/logoSmall.png b/public/assets/images/logoSmall.png new file mode 100644 index 00000000..954424ad Binary files /dev/null and b/public/assets/images/logoSmall.png differ diff --git a/public/assets/images/media/1webdollar-alexandru-budisteanu-d10e.jpg b/public/assets/images/media/1webdollar-alexandru-budisteanu-d10e.jpg new file mode 100644 index 00000000..42e6b621 Binary files /dev/null and b/public/assets/images/media/1webdollar-alexandru-budisteanu-d10e.jpg differ diff --git a/public/assets/images/media/WebDollar-Eu-Parliament.jpeg b/public/assets/images/media/WebDollar-Eu-Parliament.jpeg new file mode 100644 index 00000000..92c08542 Binary files /dev/null and b/public/assets/images/media/WebDollar-Eu-Parliament.jpeg differ diff --git a/public/assets/images/media/WebDollar-Eu-Parliament.jpg b/public/assets/images/media/WebDollar-Eu-Parliament.jpg new file mode 100644 index 00000000..a2d4ddcc Binary files /dev/null and b/public/assets/images/media/WebDollar-Eu-Parliament.jpg differ diff --git a/public/assets/images/media/ibitcoin.jpg b/public/assets/images/media/ibitcoin.jpg new file mode 100644 index 00000000..1e188473 Binary files /dev/null and b/public/assets/images/media/ibitcoin.jpg differ diff --git a/public/assets/images/media/icofail.jpg b/public/assets/images/media/icofail.jpg new file mode 100644 index 00000000..c2be50bf Binary files /dev/null and b/public/assets/images/media/icofail.jpg differ diff --git a/public/assets/images/media/medium1.jpg b/public/assets/images/media/medium1.jpg new file mode 100644 index 00000000..dabcdc0c Binary files /dev/null and b/public/assets/images/media/medium1.jpg differ diff --git a/public/assets/images/media/meetup.jpg b/public/assets/images/media/meetup.jpg new file mode 100644 index 00000000..6dfc04b2 Binary files /dev/null and b/public/assets/images/media/meetup.jpg differ diff --git a/public/assets/images/media/mining.jpg b/public/assets/images/media/mining.jpg new file mode 100644 index 00000000..4f8fc718 Binary files /dev/null and b/public/assets/images/media/mining.jpg differ diff --git a/public/assets/images/media/omega.jpg b/public/assets/images/media/omega.jpg new file mode 100644 index 00000000..3efc1217 Binary files /dev/null and b/public/assets/images/media/omega.jpg differ diff --git a/public/assets/images/media/play.png b/public/assets/images/media/play.png new file mode 100644 index 00000000..08be400d Binary files /dev/null and b/public/assets/images/media/play.png differ diff --git a/public/assets/images/media/poolparty.jpeg b/public/assets/images/media/poolparty.jpeg new file mode 100644 index 00000000..de42fd37 Binary files /dev/null and b/public/assets/images/media/poolparty.jpeg differ diff --git a/public/assets/images/media/techhub.jpg b/public/assets/images/media/techhub.jpg new file mode 100644 index 00000000..08ad576b Binary files /dev/null and b/public/assets/images/media/techhub.jpg differ diff --git a/public/assets/images/media/webdollar-alexandru-budisteanu-d10e.jpg b/public/assets/images/media/webdollar-alexandru-budisteanu-d10e.jpg new file mode 100644 index 00000000..f5fd20d4 Binary files /dev/null and b/public/assets/images/media/webdollar-alexandru-budisteanu-d10e.jpg differ diff --git a/public/assets/images/media/webdollar-alexandru-budisteanu-human-machine-future.jpg b/public/assets/images/media/webdollar-alexandru-budisteanu-human-machine-future.jpg new file mode 100644 index 00000000..b975316f Binary files /dev/null and b/public/assets/images/media/webdollar-alexandru-budisteanu-human-machine-future.jpg differ diff --git a/public/assets/images/media/webdollar-alexandru-budisteanu-kanal33.jpg b/public/assets/images/media/webdollar-alexandru-budisteanu-kanal33.jpg new file mode 100644 index 00000000..d7010d01 Binary files /dev/null and b/public/assets/images/media/webdollar-alexandru-budisteanu-kanal33.jpg differ diff --git a/public/assets/images/media/webdollar-alexandru-panait-adrian-stratulat-oprea-cosmin.jpg b/public/assets/images/media/webdollar-alexandru-panait-adrian-stratulat-oprea-cosmin.jpg new file mode 100644 index 00000000..570e6735 Binary files /dev/null and b/public/assets/images/media/webdollar-alexandru-panait-adrian-stratulat-oprea-cosmin.jpg differ diff --git a/public/assets/images/media/webdollar-alexandru-panait-digi24.jpg b/public/assets/images/media/webdollar-alexandru-panait-digi24.jpg new file mode 100644 index 00000000..87025579 Binary files /dev/null and b/public/assets/images/media/webdollar-alexandru-panait-digi24.jpg differ diff --git a/public/assets/images/picker.png b/public/assets/images/picker.png new file mode 100644 index 00000000..666932d7 Binary files /dev/null and b/public/assets/images/picker.png differ diff --git a/public/assets/images/reddit.svg b/public/assets/images/reddit.svg new file mode 100644 index 00000000..13a1922d --- /dev/null +++ b/public/assets/images/reddit.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/team/Adrian-Stratulat.jpg b/public/assets/images/team/Adrian-Stratulat.jpg new file mode 100644 index 00000000..11f3bd23 Binary files /dev/null and b/public/assets/images/team/Adrian-Stratulat.jpg differ diff --git a/public/assets/images/team/AdrianManea.jpg b/public/assets/images/team/AdrianManea.jpg new file mode 100644 index 00000000..74253ae4 Binary files /dev/null and b/public/assets/images/team/AdrianManea.jpg differ diff --git a/public/assets/images/team/AdrianRobescu.jpg b/public/assets/images/team/AdrianRobescu.jpg new file mode 100644 index 00000000..fd468bf4 Binary files /dev/null and b/public/assets/images/team/AdrianRobescu.jpg differ diff --git a/public/assets/images/team/Alexandru-Ionut-Budisteanu.jpg b/public/assets/images/team/Alexandru-Ionut-Budisteanu.jpg new file mode 100644 index 00000000..17bc9554 Binary files /dev/null and b/public/assets/images/team/Alexandru-Ionut-Budisteanu.jpg differ diff --git a/public/assets/images/team/ConstantinBusuioceanu.jpeg b/public/assets/images/team/ConstantinBusuioceanu.jpeg new file mode 100644 index 00000000..04dd01ee Binary files /dev/null and b/public/assets/images/team/ConstantinBusuioceanu.jpeg differ diff --git a/public/assets/images/team/CristianAntal.jpg b/public/assets/images/team/CristianAntal.jpg new file mode 100644 index 00000000..c594a33a Binary files /dev/null and b/public/assets/images/team/CristianAntal.jpg differ diff --git a/public/assets/images/team/DanielMaxer.jpg b/public/assets/images/team/DanielMaxer.jpg new file mode 100644 index 00000000..fda9aaa5 Binary files /dev/null and b/public/assets/images/team/DanielMaxer.jpg differ diff --git a/public/assets/images/team/DeaconuMadalin.jpg b/public/assets/images/team/DeaconuMadalin.jpg new file mode 100644 index 00000000..8b20affc Binary files /dev/null and b/public/assets/images/team/DeaconuMadalin.jpg differ diff --git a/public/assets/images/team/GeorgeAlexandruSfica.jpg b/public/assets/images/team/GeorgeAlexandruSfica.jpg new file mode 100644 index 00000000..3519d084 Binary files /dev/null and b/public/assets/images/team/GeorgeAlexandruSfica.jpg differ diff --git a/public/assets/images/team/IonutMoraru.jpeg b/public/assets/images/team/IonutMoraru.jpeg new file mode 100644 index 00000000..2dcf12d7 Binary files /dev/null and b/public/assets/images/team/IonutMoraru.jpeg differ diff --git a/public/assets/images/team/Issam-Outaleb.jpg b/public/assets/images/team/Issam-Outaleb.jpg new file mode 100644 index 00000000..cd1eeff5 Binary files /dev/null and b/public/assets/images/team/Issam-Outaleb.jpg differ diff --git a/public/assets/images/team/Iulian-Vasilescu.jpg b/public/assets/images/team/Iulian-Vasilescu.jpg new file mode 100644 index 00000000..c0943867 Binary files /dev/null and b/public/assets/images/team/Iulian-Vasilescu.jpg differ diff --git a/public/assets/images/team/PanaitAlexandru.jpg b/public/assets/images/team/PanaitAlexandru.jpg new file mode 100644 index 00000000..f84e5d06 Binary files /dev/null and b/public/assets/images/team/PanaitAlexandru.jpg differ diff --git a/public/assets/images/team/Patrick-McCullough.jpg b/public/assets/images/team/Patrick-McCullough.jpg new file mode 100644 index 00000000..aa02692b Binary files /dev/null and b/public/assets/images/team/Patrick-McCullough.jpg differ diff --git a/public/assets/images/team/Tudor-Smirna.jpeg b/public/assets/images/team/Tudor-Smirna.jpeg new file mode 100644 index 00000000..212bf913 Binary files /dev/null and b/public/assets/images/team/Tudor-Smirna.jpeg differ diff --git a/public/assets/images/team/silviuStroe.jpg b/public/assets/images/team/silviuStroe.jpg new file mode 100644 index 00000000..ab28642d Binary files /dev/null and b/public/assets/images/team/silviuStroe.jpg differ diff --git a/public/assets/images/telegram.svg b/public/assets/images/telegram.svg new file mode 100644 index 00000000..e1081f65 --- /dev/null +++ b/public/assets/images/telegram.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/white_paper.png b/public/assets/images/white_paper.png new file mode 100644 index 00000000..3bd2b823 Binary files /dev/null and b/public/assets/images/white_paper.png differ diff --git a/public/assets/scripts/map.js b/public/assets/scripts/map.js new file mode 100755 index 00000000..48d0f213 --- /dev/null +++ b/public/assets/scripts/map.js @@ -0,0 +1,188 @@ +function initMap() { + // Create a new StyledMapType object, passing it an array of styles, + // and the name to be displayed on the map type control. + var styledMapType = new google.maps.StyledMapType( +[ + { + "featureType": "all", + "elementType": "labels.text.fill", + "stylers": [ + { + "saturation": 36 + }, + { + "color": "#000000" + }, + { + "lightness": 40 + } + ] + }, + { + "featureType": "all", + "elementType": "labels.text.stroke", + "stylers": [ + { + "visibility": "on" + }, + { + "color": "#000000" + }, + { + "lightness": 16 + } + ] + }, + { + "featureType": "all", + "elementType": "labels.icon", + "stylers": [ + { + "visibility": "off" + } + ] + }, + { + "featureType": "administrative", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 20 + } + ] + }, + { + "featureType": "administrative", + "elementType": "geometry.stroke", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 17 + }, + { + "weight": 1.2 + } + ] + }, + { + "featureType": "landscape", + "elementType": "geometry", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 20 + } + ] + }, + { + "featureType": "poi", + "elementType": "geometry", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 21 + } + ] + }, + { + "featureType": "road.highway", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 17 + } + ] + }, + { + "featureType": "road.highway", + "elementType": "geometry.stroke", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 29 + }, + { + "weight": 0.2 + } + ] + }, + { + "featureType": "road.arterial", + "elementType": "geometry", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 18 + } + ] + }, + { + "featureType": "road.local", + "elementType": "geometry", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 16 + } + ] + }, + { + "featureType": "transit", + "elementType": "geometry", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 19 + } + ] + }, + { + "featureType": "water", + "elementType": "geometry", + "stylers": [ + { + "color": "#000000" + }, + { + "lightness": 17 + } + ] + } +], + {name: 'Styled Map'}); + + // Create a map object, and include the MapTypeId to add + // to the map type control. + var map = new google.maps.Map(document.getElementById('map'), { + center: {lat: 55.647, lng: 37.581}, + zoom: 11, + mapTypeControlOptions: { + mapTypeIds: ['roadmap', 'satellite', 'hybrid', 'terrain', + 'styled_map'] + } + }); + + //Associate the styled map with the MapTypeId and set it to display. + map.mapTypes.set('styled_map', styledMapType); + map.setMapTypeId('styled_map'); +} \ No newline at end of file diff --git a/public/assets/styles/animations.css b/public/assets/styles/animations.css new file mode 100644 index 00000000..b37adaaf --- /dev/null +++ b/public/assets/styles/animations.css @@ -0,0 +1,63 @@ +.fadeIn{ + opacity: 0; + -webkit-animation: fadein 2s; /* Safari, Chrome and Opera > 12.1 */ + -moz-animation: fadein 2s; /* Firefox < 16 */ + -ms-animation: fadein 2s; /* Internet Explorer */ + -o-animation: fadein 2s; /* Opera < 12.1 */ + animation: fadein 2s; + + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; + + -webkit-animation-fill-mode: forwards; + animation-fill-mode: forwards; +} + +.fadeIn2{ + -webkit-animation-delay: 0.8s; + animation-delay: 0.8s; +} + +.fadeIn3{ + -webkit-animation-delay: 1.2s; + animation-delay: 1.2s; +} + +.fadeIn4{ + -webkit-animation-delay: 1.6s; + animation-delay: 1.6s; +} + +.fadeIn5{ + -webkit-animation-delay: 2s; + animation-delay: 2s; +} + +@keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} + +/* Firefox < 16 */ +@-moz-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} + +/* Safari, Chrome and Opera > 12.1 */ +@-webkit-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} + +/* Internet Explorer */ +@-ms-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} + +/* Opera < 12.1 */ +@-o-keyframes fadein { + from { opacity: 0; } + to { opacity: 1; } +} diff --git a/public/assets/styles/icomoon/fonts/icomoon.eot b/public/assets/styles/icomoon/fonts/icomoon.eot new file mode 100644 index 00000000..304f1a88 Binary files /dev/null and b/public/assets/styles/icomoon/fonts/icomoon.eot differ diff --git a/public/assets/styles/icomoon/fonts/icomoon.svg b/public/assets/styles/icomoon/fonts/icomoon.svg new file mode 100644 index 00000000..54a7f4c2 --- /dev/null +++ b/public/assets/styles/icomoon/fonts/icomoon.svg @@ -0,0 +1,41 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/assets/styles/icomoon/fonts/icomoon.ttf b/public/assets/styles/icomoon/fonts/icomoon.ttf new file mode 100644 index 00000000..75232c00 Binary files /dev/null and b/public/assets/styles/icomoon/fonts/icomoon.ttf differ diff --git a/public/assets/styles/icomoon/fonts/icomoon.woff b/public/assets/styles/icomoon/fonts/icomoon.woff new file mode 100644 index 00000000..8bdc996e Binary files /dev/null and b/public/assets/styles/icomoon/fonts/icomoon.woff differ diff --git a/public/assets/styles/icomoon/fonts/style.css b/public/assets/styles/icomoon/fonts/style.css new file mode 100644 index 00000000..a26e23cb --- /dev/null +++ b/public/assets/styles/icomoon/fonts/style.css @@ -0,0 +1,59 @@ +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?sr7bor'); + src: url('fonts/icomoon.eot?sr7bor#iefix') format('embedded-opentype'), + url('fonts/icomoon.ttf?sr7bor') format('truetype'), + url('fonts/icomoon.woff?sr7bor') format('woff'), + url('fonts/icomoon.svg?sr7bor#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="fa-"], [class*=" fa-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fa-wallet2:before { + content: "\e909"; +} +.fa-moneybag:before { + content: "\e905"; +} +.fa-pig:before { + content: "\e906"; +} +.fa-dollar:before { + content: "\e907"; +} +.fa-dollar2:before { + content: "\e908"; +} +.fa-wallet:before { + content: "\e902"; +} +.fa-mail-forward:before { + content: "\e90a"; +} +.fa-bitcoin:before { + content: "\e903"; +} +.fa-credit-card:before { + content: "\e904"; +} +.fa-chevron-down:before { + content: "\e900"; +} +.fa-chevron-up:before { + content: "\e901"; +} diff --git a/public/assets/styles/icomoon/selection.json b/public/assets/styles/icomoon/selection.json new file mode 100644 index 00000000..ece89c11 --- /dev/null +++ b/public/assets/styles/icomoon/selection.json @@ -0,0 +1,932 @@ +{ + "IcoMoonType": "selection", + "icons": [ + { + "icon": { + "paths": [ + "M747.872 944.928c0 0 10.72-64.384-55.392-143.008 64.352-180.512 73.28-344.896 73.28-344.896s132.256 30.4 132.256 160.832c-0.032 223.392-150.144 327.072-150.144 327.072zM383.328 866.496c0 0-88.576-284.256-88.576-402.176 0-53.056 5.984-100.256 15.296-143.104h403.52c9.376 42.88 15.392 90.112 15.392 143.136 0 116.128-88.32 402.144-88.32 402.144h-257.312zM511.68 386.208c-45.376 0-82.176 36.8-82.176 82.208 0 45.376 36.8 82.208 82.176 82.208 45.408 0 82.208-36.8 82.208-82.208 0.032-45.408-36.8-82.208-82.208-82.208zM494.016 19.072v-111.936h32v109.088c36.576 26.624 135.552 111.296 180.32 274.4h-389.12c43.264-158.624 137.472-242.368 176.8-271.552zM276.128 944.928c0 0-150.112-103.68-150.112-327.072 0-130.432 132.256-160.832 132.256-160.832s8.928 164.384 73.248 344.896c-66.144 78.656-55.392 143.008-55.392 143.008zM566.112 961.44l-26.816-26.816-28.576 89.376-33.984-89.376-23.232 46.432-33.984-84h184.064l-37.472 64.384z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "rocket", + "jet", + "spaceship" + ], + "grid": 32 + }, + "attrs": [ + {} + ], + "properties": { + "order": 1, + "id": 0, + "prevSize": 32, + "name": "rocket", + "code": 59649 + }, + "setIdx": 0, + "setId": 3, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M525.143 744.571v-89.714c0-18.857-5.714-28.571-16.571-28.571-6.286 0-12.571 2.857-18.857 9.143v128c6.286 6.286 12.571 9.143 18.857 9.143 10.857 0 16.571-9.143 16.571-28zM630.286 674.857h37.714v-19.429c0-19.429-6.286-29.143-18.857-29.143s-18.857 9.714-18.857 29.143v19.429zM304 522.857v40h-45.714v241.714h-42.286v-241.714h-44.571v-40h132.571zM418.857 594.857v209.714h-38.286v-22.857c-14.857 17.143-29.143 25.714-43.429 25.714-12 0-20.571-5.143-24-16-2.286-6.286-3.429-16-3.429-30.857v-165.714h37.714v154.286c0 8.571 0 13.714 0.571 14.857 0.571 5.714 3.429 8.571 8.571 8.571 8 0 15.429-5.714 24-17.714v-160h38.286zM562.857 658.286v83.429c0 18.857-1.143 33.143-4 41.714-4.571 16-14.857 24-30.286 24-13.143 0-26.286-8-38.857-23.429v20.571h-38.286v-281.714h38.286v92c12-14.857 25.143-22.857 38.857-22.857 15.429 0 25.714 8 30.286 24 2.857 8.571 4 22.286 4 42.286zM706.286 732v5.143c0 12.571-0.571 20.571-1.143 24.571-1.143 8.571-4 16-8.571 22.857-10.286 15.429-26.286 22.857-45.714 22.857-20 0-35.429-7.429-46.286-21.714-8-10.286-12-26.857-12-49.143v-73.714c0-22.286 3.429-38.286 11.429-49.143 10.857-14.286 26.286-21.714 45.714-21.714 18.857 0 34.286 7.429 44.571 21.714 8 10.857 12 26.857 12 49.143v43.429h-76v37.143c0 19.429 6.286 29.143 19.429 29.143 9.143 0 14.857-5.143 17.143-14.857 0-2.286 0.571-10.857 0.571-25.714h38.857zM448.571 261.143v89.143c0 19.429-6.286 29.143-18.286 29.143-12.571 0-18.286-9.714-18.286-29.143v-89.143c0-19.429 5.714-29.714 18.286-29.714 12 0 18.286 10.286 18.286 29.714zM753.143 668.571v0c0-49.143 0-101.143-10.857-148.571-8-33.714-35.429-58.286-68-61.714-77.714-8.571-156.571-8.571-235.429-8.571-78.286 0-157.143 0-234.857 8.571-33.143 3.429-60.571 28-68 61.714-10.857 47.429-11.429 99.429-11.429 148.571v0c0 48.571 0 100.571 11.429 148.571 7.429 33.143 34.857 57.714 67.429 61.714 78.286 8.571 157.143 8.571 235.429 8.571s157.143 0 235.429-8.571c32.571-4 60-28.571 67.429-61.714 11.429-48 11.429-100 11.429-148.571zM321.714 296.571l51.429-169.143h-42.857l-29.143 111.429-30.286-111.429h-44.571c8.571 26.286 18.286 52.571 26.857 78.857 13.714 40 22.286 69.714 26.286 90.286v114.857h42.286v-114.857zM486.857 342.857v-74.286c0-22.286-4-38.857-12-49.714-10.857-14.286-25.714-21.714-44.571-21.714-19.429 0-34.286 7.429-44.571 21.714-8 10.857-12 27.429-12 49.714v74.286c0 22.286 4 38.857 12 49.714 10.286 14.286 25.143 21.714 44.571 21.714 18.857 0 33.714-7.429 44.571-21.714 8-10.286 12-27.429 12-49.714zM590.286 411.429h38.286v-211.429h-38.286v161.714c-8.571 12-16.571 17.714-24 17.714-5.143 0-8.571-2.857-9.143-9.143-0.571-1.143-0.571-5.714-0.571-14.857v-155.429h-38.286v167.429c0 14.857 1.143 24.571 3.429 31.429 4 10.286 12.571 15.429 24.571 15.429 14.286 0 28.571-8.571 44-25.714v22.857zM877.714 237.714v548.571c0 90.857-73.714 164.571-164.571 164.571h-548.571c-90.857 0-164.571-73.714-164.571-164.571v-548.571c0-90.857 73.714-164.571 164.571-164.571h548.571c90.857 0 164.571 73.714 164.571 164.571z" + ], + "attrs": [ + {} + ], + "width": 878, + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "youtube-square" + ], + "grid": 14 + }, + "attrs": [ + {} + ], + "properties": { + "order": 1, + "id": 6, + "prevSize": 28, + "code": 59656, + "name": "youtube-square" + }, + "setIdx": 1, + "setId": 2, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M554.857 710.857v120.571c0 25.714-7.429 38.286-22.286 38.286-8.571 0-17.143-4-25.714-12.571v-172c8.571-8.571 17.143-12.571 25.714-12.571 14.857 0 22.286 13.143 22.286 38.286zM748 711.429v26.286h-51.429v-26.286c0-25.714 8.571-38.857 25.714-38.857s25.714 13.143 25.714 38.857zM196 586.857h61.143v-53.714h-178.286v53.714h60v325.143h57.143v-325.143zM360.571 912h50.857v-282.286h-50.857v216c-11.429 16-22.286 24-32.571 24-6.857 0-10.857-4-12-12-0.571-1.714-0.571-8-0.571-20v-208h-50.857v223.429c0 20 1.714 33.143 4.571 41.714 4.571 14.286 16.571 21.143 33.143 21.143 18.286 0 37.714-11.429 58.286-34.857v30.857zM605.714 827.429v-112.571c0-26.286-1.143-45.143-5.143-56.571-6.286-21.143-20.571-32-40.571-32-18.857 0-36.571 10.286-53.143 30.857v-124h-50.857v378.857h50.857v-27.429c17.143 21.143 34.857 31.429 53.143 31.429 20 0 34.286-10.857 40.571-31.429 4-12 5.143-30.857 5.143-57.143zM798.857 821.714v-7.429h-52c0 20.571-0.571 32-1.143 34.857-2.857 13.714-10.286 20.571-22.857 20.571-17.714 0-26.286-13.143-26.286-39.429v-49.714h102.286v-58.857c0-30.286-5.143-52-15.429-66.286-14.857-19.429-34.857-29.143-60.571-29.143-26.286 0-46.286 9.714-61.143 29.143-10.857 14.286-16 36-16 66.286v98.857c0 30.286 5.714 52.571 16.571 66.286 14.857 19.429 34.857 29.143 61.714 29.143s48-10.286 61.714-30.286c6.286-9.143 10.857-19.429 12-30.857 1.143-5.143 1.143-16.571 1.143-33.143zM451.429 300v-120c0-26.286-7.429-39.429-24.571-39.429-16.571 0-24.571 13.143-24.571 39.429v120c0 26.286 8 40 24.571 40 17.143 0 24.571-13.714 24.571-40zM862.286 729.143c0 65.714-0.571 136-14.857 200-10.857 45.143-47.429 78.286-91.429 82.857-105.143 12-211.429 12-317.143 12s-212 0-317.143-12c-44-4.571-81.143-37.714-91.429-82.857-14.857-64-14.857-134.286-14.857-200v0c0-66.286 0.571-136 14.857-200 10.857-45.143 47.429-78.286 92-83.429 104.571-11.429 210.857-11.429 316.571-11.429s212 0 317.143 11.429c44 5.143 81.143 38.286 91.429 83.429 14.857 64 14.857 133.714 14.857 200zM292 0h58.286l-69.143 228v154.857h-57.143v-154.857c-5.143-28-16.571-68-34.857-121.143-12.571-35.429-25.143-71.429-37.143-106.857h60.571l40.571 150.286zM503.429 190.286v100c0 30.286-5.143 53.143-16 67.429-14.286 19.429-34.286 29.143-60.571 29.143-25.714 0-45.714-9.714-60-29.143-10.857-14.857-16-37.143-16-67.429v-100c0-30.286 5.143-52.571 16-66.857 14.286-19.429 34.286-29.143 60-29.143 26.286 0 46.286 9.714 60.571 29.143 10.857 14.286 16 36.571 16 66.857zM694.857 97.714v285.143h-52v-31.429c-20.571 24-40 35.429-58.857 35.429-16.571 0-28.571-6.857-33.714-21.143-2.857-8.571-4.571-22.286-4.571-42.857v-225.143h52v209.714c0 12 0 18.857 0.571 20 1.143 8 5.143 12.571 12 12.571 10.286 0 21.143-8 32.571-24.571v-217.714h52z" + ], + "attrs": [ + {} + ], + "width": 878, + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "youtube" + ], + "grid": 14 + }, + "attrs": [ + {} + ], + "properties": { + "order": 2, + "id": 5, + "prevSize": 28, + "code": 59657, + "name": "youtube2" + }, + "setIdx": 1, + "setId": 2, + "iconIdx": 1 + }, + { + "icon": { + "paths": [ + "M1024 483.429c0 44.571-25.143 82.857-62.286 101.714 4.571 17.714 6.857 36 6.857 54.857 0 180.571-204 326.857-455.429 326.857-250.857 0-454.857-146.286-454.857-326.857 0-18.286 2.286-36.571 6.286-53.714-38.286-18.857-64.571-57.714-64.571-102.857 0-62.857 50.857-113.714 113.714-113.714 32.571 0 61.714 13.714 82.857 36 77.143-53.714 180-88.571 294.286-92.571l66.286-297.714c2.286-10.286 13.143-17.143 23.429-14.857l210.857 46.286c13.714-27.429 42.857-46.857 76-46.857 47.429 0 85.714 38.286 85.714 85.143 0 47.429-38.286 85.714-85.714 85.714-46.857 0-85.143-38.286-85.143-85.143l-190.857-42.286-59.429 269.714c114.857 3.429 218.857 37.714 296.571 91.429 20.571-21.714 49.714-34.857 81.714-34.857 62.857 0 113.714 50.857 113.714 113.714zM238.857 597.143c0 47.429 38.286 85.714 85.143 85.714 47.429 0 85.714-38.286 85.714-85.714 0-46.857-38.286-85.143-85.714-85.143-46.857 0-85.143 38.286-85.143 85.143zM701.714 800c8.571-8.571 8.571-21.143 0-29.714-8-8-21.143-8-29.143 0-34.286 34.857-108 46.857-160.571 46.857s-126.286-12-160.571-46.857c-8-8-21.143-8-29.143 0-8.571 8-8.571 21.143 0 29.714 54.286 54.286 158.857 58.286 189.714 58.286s135.429-4 189.714-58.286zM700 682.857c46.857 0 85.143-38.286 85.143-85.714 0-46.857-38.286-85.143-85.143-85.143-47.429 0-85.714 38.286-85.714 85.143 0 47.429 38.286 85.714 85.714 85.714z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "reddit-alien" + ], + "grid": 14 + }, + "attrs": [ + {} + ], + "properties": { + "order": 1, + "id": 4, + "name": "reddit-alien", + "prevSize": 28, + "code": 59650 + }, + "setIdx": 1, + "setId": 2, + "iconIdx": 2 + }, + { + "icon": { + "paths": [ + "M872.571 827.429c42.857 68 12.571 123.429-68 123.429h-658.286c-80.571 0-110.857-55.429-68-123.429l287.429-453.143v-228h-36.571c-20 0-36.571-16.571-36.571-36.571s16.571-36.571 36.571-36.571h292.571c20 0 36.571 16.571 36.571 36.571s-16.571 36.571-36.571 36.571h-36.571v228zM427.429 413.143l-155.429 245.143h406.857l-155.429-245.143-11.429-17.714v-249.143h-73.143v249.143z" + ], + "attrs": [ + {} + ], + "width": 951, + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "flask" + ], + "grid": 14 + }, + "attrs": [ + {} + ], + "properties": { + "order": 1, + "id": 3, + "prevSize": 28, + "name": "flask", + "code": 59651 + }, + "setIdx": 1, + "setId": 2, + "iconIdx": 3 + }, + { + "icon": { + "paths": [ + "M961.714 461.714l-424 423.429c-14.286 14.286-37.143 14.286-51.429 0l-424-423.429c-14.286-14.286-14.286-37.714 0-52l94.857-94.286c14.286-14.286 37.143-14.286 51.429 0l303.429 303.429 303.429-303.429c14.286-14.286 37.143-14.286 51.429 0l94.857 94.286c14.286 14.286 14.286 37.714 0 52z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "chevron-down" + ], + "grid": 14 + }, + "attrs": [ + {} + ], + "properties": { + "order": 1, + "id": 2, + "prevSize": 28, + "name": "chevron-down", + "code": 59652 + }, + "setIdx": 1, + "setId": 2, + "iconIdx": 4 + }, + { + "icon": { + "paths": [ + "M961.714 760.571l-94.857 94.286c-14.286 14.286-37.143 14.286-51.429 0l-303.429-303.429-303.429 303.429c-14.286 14.286-37.143 14.286-51.429 0l-94.857-94.286c-14.286-14.286-14.286-37.714 0-52l424-423.429c14.286-14.286 37.143-14.286 51.429 0l424 423.429c14.286 14.286 14.286 37.714 0 52z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "chevron-up" + ], + "grid": 14 + }, + "attrs": [ + {} + ], + "properties": { + "order": 2, + "id": 1, + "prevSize": 28, + "name": "chevron-up", + "code": 59653 + }, + "setIdx": 1, + "setId": 2, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M961.714 461.714l-424 423.429c-14.286 14.286-37.143 14.286-51.429 0l-424-423.429c-14.286-14.286-14.286-37.714 0-52l94.857-94.286c14.286-14.286 37.143-14.286 51.429 0l303.429 303.429 303.429-303.429c14.286-14.286 37.143-14.286 51.429 0l94.857 94.286c14.286 14.286 14.286 37.714 0 52z" + ], + "attrs": [ + {} + ], + "isMulticolor": false, + "isMulticolor2": false, + "tags": [ + "chevron-down" + ], + "grid": 14 + }, + "attrs": [ + {} + ], + "properties": { + "order": 1, + "id": 0, + "prevSize": 28, + "name": "chevron-down2", + "code": 59654 + }, + "setIdx": 1, + "setId": 2, + "iconIdx": 6 + }, + { + "icon": { + "paths": [ + "M1024 590.444l-512-397.426-512 397.428v-162.038l512-397.426 512 397.428zM896 576v384h-256v-256h-256v256h-256v-384l384-288z" + ], + "tags": [ + "home", + "house" + ], + "defaultCode": 59648, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "home, house", + "name": "home", + "order": 3, + "id": 1, + "prevSize": 32, + "code": 59648 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 0 + }, + { + "icon": { + "paths": [ + "M864 0c88.364 0 160 71.634 160 160 0 36.020-11.91 69.258-32 96l-64 64-224-224 64-64c26.742-20.090 59.978-32 96-32zM64 736l-64 288 288-64 592-592-224-224-592 592zM715.578 363.578l-448 448-55.156-55.156 448-448 55.156 55.156z" + ], + "tags": [ + "pencil", + "write", + "edit" + ], + "defaultCode": 59653, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "pencil, write", + "name": "pencil", + "order": 4, + "id": 6, + "prevSize": 32, + "code": 59655 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 5 + }, + { + "icon": { + "paths": [ + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z" + ], + "tags": [ + "file-empty", + "file", + "document", + "paper", + "page", + "new", + "empty", + "blank" + ], + "defaultCode": 59684, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "file-empty, file3", + "name": "file-empty", + "order": 11, + "id": 37, + "prevSize": 32, + "code": 59684 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 36 + }, + { + "icon": { + "paths": [ + "M917.806 229.076c-22.212-30.292-53.174-65.7-87.178-99.704s-69.412-64.964-99.704-87.178c-51.574-37.82-76.592-42.194-90.924-42.194h-496c-44.112 0-80 35.888-80 80v864c0 44.112 35.888 80 80 80h736c44.112 0 80-35.888 80-80v-624c0-14.332-4.372-39.35-42.194-90.924zM785.374 174.626c30.7 30.7 54.8 58.398 72.58 81.374h-153.954v-153.946c22.984 17.78 50.678 41.878 81.374 72.572zM896 944c0 8.672-7.328 16-16 16h-736c-8.672 0-16-7.328-16-16v-864c0-8.672 7.328-16 16-16 0 0 495.956-0.002 496 0v224c0 17.672 14.326 32 32 32h224v624z", + "M736 832h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M736 704h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z", + "M736 576h-448c-17.672 0-32-14.326-32-32s14.328-32 32-32h448c17.674 0 32 14.326 32 32s-14.326 32-32 32z" + ], + "tags": [ + "file-text", + "file", + "document", + "list", + "paper", + "page" + ], + "defaultCode": 59686, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "file-text2, file4", + "name": "file-text2", + "order": 10, + "id": 39, + "prevSize": 32, + "code": 59686 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 38 + }, + { + "icon": { + "paths": [ + "M576 256l-128-128h-448v832h1024v-704h-448zM512 864l-224-224h160v-256h128v256h160l-224 224z" + ], + "tags": [ + "folder-download", + "directory", + "folder-save" + ], + "defaultCode": 59699, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "folder-download, directory5", + "name": "folder-download", + "order": 2, + "id": 52, + "prevSize": 32, + "code": 59699 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 51 + }, + { + "icon": { + "paths": [ + "M1009.996 828.976l-301.544-301.544c-18.668-18.668-49.214-18.668-67.882 0l-22.626 22.626-184-184 302.056-302.058h-320l-142.058 142.058-14.060-14.058h-67.882v67.882l14.058 14.058-206.058 206.060 160 160 206.058-206.058 184 184-22.626 22.626c-18.668 18.668-18.668 49.214 0 67.882l301.544 301.544c18.668 18.668 49.214 18.668 67.882 0l113.136-113.136c18.67-18.666 18.67-49.214 0.002-67.882z" + ], + "tags": [ + "hammer", + "tool", + "fix", + "make", + "generate", + "work", + "build" + ], + "defaultCode": 59798, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "hammer, tool2", + "name": "hammer", + "order": 9, + "id": 151, + "prevSize": 32, + "code": 59798 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 150 + }, + { + "icon": { + "paths": [ + "M832 192v-128h-640v128h-192v128c0 106.038 85.958 192 192 192 20.076 0 39.43-3.086 57.62-8.802 46.174 66.008 116.608 113.796 198.38 130.396v198.406h-64c-70.694 0-128 57.306-128 128h512c0-70.694-57.306-128-128-128h-64v-198.406c81.772-16.6 152.206-64.386 198.38-130.396 18.19 5.716 37.544 8.802 57.62 8.802 106.042 0 192-85.962 192-192v-128h-192zM192 436c-63.962 0-116-52.038-116-116v-64h116v64c0 40.186 7.43 78.632 20.954 114.068-6.802 1.246-13.798 1.932-20.954 1.932zM948 320c0 63.962-52.038 116-116 116-7.156 0-14.152-0.686-20.954-1.932 13.524-35.436 20.954-73.882 20.954-114.068v-64h116v64z" + ], + "tags": [ + "trophy", + "cup", + "prize", + "award", + "winner", + "tournament" + ], + "defaultCode": 59806, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "trophy, cup", + "name": "trophy", + "order": 12, + "id": 159, + "prevSize": 32, + "code": 59806 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 158 + }, + { + "icon": { + "paths": [ + "M771.516 320c18.126-12.88 35.512-27.216 51.444-43.148 33.402-33.402 55.746-74.5 62.912-115.722 7.858-45.186-3.672-87.14-31.63-115.1-22.3-22.298-52.51-34.086-87.364-34.086-49.632 0-101.922 23.824-143.46 65.362-66.476 66.476-105.226 158.238-126.076 223.722-15.44-65.802-46.206-154.644-106.018-214.458-32.094-32.092-73.114-48.57-111.846-48.57-31.654 0-61.78 11.004-84.26 33.486-49.986 49.988-43.232 137.786 15.086 196.104 20.792 20.792 45.098 38.062 70.72 52.412h-217.024v256h64v448h768v-448.002h64v-256h-188.484zM674.326 128.218c27.724-27.724 62.322-44.274 92.55-44.274 10.7 0 25.708 2.254 36.45 12.998 26.030 26.028 11.412 86.308-31.28 128.998-43.946 43.946-103.060 74.168-154.432 94.060h-50.672c18.568-57.548 52.058-136.456 107.384-191.782zM233.934 160.89c-0.702-9.12-0.050-26.248 12.196-38.494 10.244-10.244 23.788-12.396 33.348-12.396v0c21.258 0 43.468 10.016 60.932 27.48 33.872 33.872 61.766 87.772 80.668 155.876 0.51 1.84 1.008 3.67 1.496 5.486-1.816-0.486-3.646-0.984-5.486-1.496-68.104-18.904-122.002-46.798-155.874-80.67-15.828-15.826-25.77-36.16-27.28-55.786zM448 960h-256v-416h256v416zM448 512h-320v-128h320v128zM832 960h-256v-416h256v416zM896 512h-320v-128h320v128z" + ], + "tags": [ + "gift", + "present", + "box" + ], + "defaultCode": 59807, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "gift, present", + "name": "gift", + "order": 16, + "id": 160, + "prevSize": 32, + "code": 59807 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 159 + }, + { + "icon": { + "paths": [ + "M736 448l-256 256-256-256h160v-384h192v384zM480 704h-480v256h960v-256h-480zM896 832h-128v-64h128v64z" + ], + "tags": [ + "download", + "save", + "store" + ], + "defaultCode": 59847, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "download3, save5", + "name": "download3", + "order": 7, + "id": 200, + "prevSize": 32, + "code": 59847 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 199 + }, + { + "icon": { + "paths": [ + "M480 704h-480v256h960v-256h-480zM896 832h-128v-64h128v64zM224 320l256-256 256 256h-160v320h-192v-320z" + ], + "tags": [ + "upload", + "load", + "open" + ], + "defaultCode": 59848, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "upload3, load3", + "name": "upload3", + "order": 8, + "id": 201, + "prevSize": 32, + "code": 59848 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 200 + }, + { + "icon": { + "paths": [ + "M512 0c-282.77 0-512 229.23-512 512s229.23 512 512 512 512-229.23 512-512-229.23-512-512-512zM512 960.002c-62.958 0-122.872-13.012-177.23-36.452l233.148-262.29c5.206-5.858 8.082-13.422 8.082-21.26v-96c0-17.674-14.326-32-32-32-112.99 0-232.204-117.462-233.374-118.626-6-6.002-14.14-9.374-22.626-9.374h-128c-17.672 0-32 14.328-32 32v192c0 12.122 6.848 23.202 17.69 28.622l110.31 55.156v187.886c-116.052-80.956-192-215.432-192-367.664 0-68.714 15.49-133.806 43.138-192h116.862c8.488 0 16.626-3.372 22.628-9.372l128-128c6-6.002 9.372-14.14 9.372-22.628v-77.412c40.562-12.074 83.518-18.588 128-18.588 70.406 0 137.004 16.26 196.282 45.2-4.144 3.502-8.176 7.164-12.046 11.036-36.266 36.264-56.236 84.478-56.236 135.764s19.97 99.5 56.236 135.764c36.434 36.432 85.218 56.264 135.634 56.26 3.166 0 6.342-0.080 9.518-0.236 13.814 51.802 38.752 186.656-8.404 372.334-0.444 1.744-0.696 3.488-0.842 5.224-81.324 83.080-194.7 134.656-320.142 134.656z" + ], + "tags": [ + "earth", + "globe", + "language", + "web", + "internet", + "sphere", + "planet" + ], + "defaultCode": 59850, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "earth, globe2", + "name": "earth", + "order": 14, + "id": 203, + "prevSize": 32, + "code": 59850 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 202 + }, + { + "icon": { + "paths": [ + "M512 32l-480 480h288v512h384v-512h288z" + ], + "tags": [ + "arrow-up", + "up", + "upload", + "top" + ], + "defaultCode": 59954, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "arrow-up, up", + "name": "arrow-up", + "order": 6, + "id": 307, + "prevSize": 32, + "code": 59954 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 306 + }, + { + "icon": { + "paths": [ + "M512 992l480-480h-288v-512h-384v512h-288z" + ], + "tags": [ + "arrow-down", + "down", + "download", + "bottom" + ], + "defaultCode": 59958, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "arrow-down, down", + "name": "arrow-down", + "order": 5, + "id": 311, + "prevSize": 32, + "code": 59958 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 310 + }, + { + "icon": { + "paths": [ + "M608 192h160v-192h-160c-123.514 0-224 100.486-224 224v96h-128v192h128v512h192v-512h160l32-192h-192v-96c0-17.346 14.654-32 32-32z" + ], + "tags": [ + "facebook", + "brand", + "social" + ], + "defaultCode": 60048, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "facebook, brand10", + "name": "facebook", + "order": 32, + "id": 401, + "prevSize": 32, + "code": 60048 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 400 + }, + { + "icon": { + "paths": [ + "M928 0h-832c-52.8 0-96 43.2-96 96v832c0 52.8 43.2 96 96 96h416v-448h-128v-128h128v-64c0-105.8 86.2-192 192-192h128v128h-128c-35.2 0-64 28.8-64 64v64h192l-32 128h-160v448h288c52.8 0 96-43.2 96-96v-832c0-52.8-43.2-96-96-96z" + ], + "tags": [ + "facebook", + "brand", + "social" + ], + "defaultCode": 60049, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "facebook2, brand11", + "name": "facebook2", + "order": 23, + "id": 402, + "prevSize": 32, + "code": 60049 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 401 + }, + { + "icon": { + "paths": [ + "M512 92.2c136.8 0 153 0.6 206.8 3 50 2.2 77 10.6 95 17.6 23.8 9.2 41 20.4 58.8 38.2 18 18 29 35 38.4 58.8 7 18 15.4 45.2 17.6 95 2.4 54 3 70.2 3 206.8s-0.6 153-3 206.8c-2.2 50-10.6 77-17.6 95-9.2 23.8-20.4 41-38.2 58.8-18 18-35 29-58.8 38.4-18 7-45.2 15.4-95 17.6-54 2.4-70.2 3-206.8 3s-153-0.6-206.8-3c-50-2.2-77-10.6-95-17.6-23.8-9.2-41-20.4-58.8-38.2-18-18-29-35-38.4-58.8-7-18-15.4-45.2-17.6-95-2.4-54-3-70.2-3-206.8s0.6-153 3-206.8c2.2-50 10.6-77 17.6-95 9.2-23.8 20.4-41 38.2-58.8 18-18 35-29 58.8-38.4 18-7 45.2-15.4 95-17.6 53.8-2.4 70-3 206.8-3zM512 0c-139 0-156.4 0.6-211 3-54.4 2.4-91.8 11.2-124.2 23.8-33.8 13.2-62.4 30.6-90.8 59.2-28.6 28.4-46 57-59.2 90.6-12.6 32.6-21.4 69.8-23.8 124.2-2.4 54.8-3 72.2-3 211.2s0.6 156.4 3 211c2.4 54.4 11.2 91.8 23.8 124.2 13.2 33.8 30.6 62.4 59.2 90.8 28.4 28.4 57 46 90.6 59 32.6 12.6 69.8 21.4 124.2 23.8 54.6 2.4 72 3 211 3s156.4-0.6 211-3c54.4-2.4 91.8-11.2 124.2-23.8 33.6-13 62.2-30.6 90.6-59s46-57 59-90.6c12.6-32.6 21.4-69.8 23.8-124.2 2.4-54.6 3-72 3-211s-0.6-156.4-3-211c-2.4-54.4-11.2-91.8-23.8-124.2-12.6-34-30-62.6-58.6-91-28.4-28.4-57-46-90.6-59-32.6-12.6-69.8-21.4-124.2-23.8-54.8-2.6-72.2-3.2-211.2-3.2v0z", + "M512 249c-145.2 0-263 117.8-263 263s117.8 263 263 263 263-117.8 263-263c0-145.2-117.8-263-263-263zM512 682.6c-94.2 0-170.6-76.4-170.6-170.6s76.4-170.6 170.6-170.6c94.2 0 170.6 76.4 170.6 170.6s-76.4 170.6-170.6 170.6z", + "M846.8 238.6c0 33.91-27.49 61.4-61.4 61.4s-61.4-27.49-61.4-61.4c0-33.91 27.49-61.4 61.4-61.4s61.4 27.49 61.4 61.4z" + ], + "tags": [ + "instagram", + "brand", + "social" + ], + "defaultCode": 60050, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "instagram, brand12", + "name": "instagram", + "order": 25, + "id": 403, + "prevSize": 32, + "code": 60050 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 402 + }, + { + "icon": { + "paths": [ + "M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM763.6 351l-84 395.8c-5.8 28.2-22.8 34.8-46.4 21.8l-128-94.6-61.4 59.8c-7.2 7-12.8 12.8-25.6 12.8-16.6 0-13.8-6.2-19.4-22l-43.6-143.2-126.6-39.4c-27.4-8.4-27.6-27.2 6.2-40.6l493.2-190.4c22.4-10.2 44.2 5.4 35.6 40z" + ], + "tags": [ + "telegram", + "brand", + "social" + ], + "defaultCode": 60053, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "name": "telegram", + "ligatures": "telegram, brand15", + "order": 26, + "id": 406, + "prevSize": 32, + "code": 60053 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 405 + }, + { + "icon": { + "paths": [ + "M1024 226.4c-37.6 16.8-78.2 28-120.6 33 43.4-26 76.6-67.2 92.4-116.2-40.6 24-85.6 41.6-133.4 51-38.4-40.8-93-66.2-153.4-66.2-116 0-210 94-210 210 0 16.4 1.8 32.4 5.4 47.8-174.6-8.8-329.4-92.4-433-219.6-18 31-28.4 67.2-28.4 105.6 0 72.8 37 137.2 93.4 174.8-34.4-1-66.8-10.6-95.2-26.2 0 0.8 0 1.8 0 2.6 0 101.8 72.4 186.8 168.6 206-17.6 4.8-36.2 7.4-55.4 7.4-13.6 0-26.6-1.4-39.6-3.8 26.8 83.4 104.4 144.2 196.2 146-72 56.4-162.4 90-261 90-17 0-33.6-1-50.2-3 93.2 59.8 203.6 94.4 322.2 94.4 386.4 0 597.8-320.2 597.8-597.8 0-9.2-0.2-18.2-0.6-27.2 41-29.4 76.6-66.4 104.8-108.6z" + ], + "tags": [ + "twitter", + "brand", + "tweet", + "social" + ], + "defaultCode": 60054, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "twitter, brand16", + "name": "twitter", + "order": 24, + "id": 407, + "prevSize": 32, + "code": 60054 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 406 + }, + { + "icon": { + "paths": [ + "M1013.8 307.2c0 0-10-70.6-40.8-101.6-39-40.8-82.6-41-102.6-43.4-143.2-10.4-358.2-10.4-358.2-10.4h-0.4c0 0-215 0-358.2 10.4-20 2.4-63.6 2.6-102.6 43.4-30.8 31-40.6 101.6-40.6 101.6s-10.2 82.8-10.2 165.8v77.6c0 82.8 10.2 165.8 10.2 165.8s10 70.6 40.6 101.6c39 40.8 90.2 39.4 113 43.8 82 7.8 348.2 10.2 348.2 10.2s215.2-0.4 358.4-10.6c20-2.4 63.6-2.6 102.6-43.4 30.8-31 40.8-101.6 40.8-101.6s10.2-82.8 10.2-165.8v-77.6c-0.2-82.8-10.4-165.8-10.4-165.8zM406.2 644.8v-287.8l276.6 144.4-276.6 143.4z" + ], + "tags": [ + "youtube", + "brand", + "social" + ], + "defaultCode": 60061, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "youtube, brand21", + "name": "youtube", + "order": 27, + "id": 414, + "prevSize": 32, + "code": 60061 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 413 + }, + { + "icon": { + "paths": [ + "M512.008 12.642c-282.738 0-512.008 229.218-512.008 511.998 0 226.214 146.704 418.132 350.136 485.836 25.586 4.738 34.992-11.11 34.992-24.632 0-12.204-0.48-52.542-0.696-95.324-142.448 30.976-172.504-60.41-172.504-60.41-23.282-59.176-56.848-74.916-56.848-74.916-46.452-31.778 3.51-31.124 3.51-31.124 51.4 3.61 78.476 52.766 78.476 52.766 45.672 78.27 119.776 55.64 149.004 42.558 4.588-33.086 17.852-55.68 32.506-68.464-113.73-12.942-233.276-56.85-233.276-253.032 0-55.898 20.004-101.574 52.76-137.428-5.316-12.9-22.854-64.972 4.952-135.5 0 0 43.006-13.752 140.84 52.49 40.836-11.348 84.636-17.036 128.154-17.234 43.502 0.198 87.336 5.886 128.256 17.234 97.734-66.244 140.656-52.49 140.656-52.49 27.872 70.528 10.35 122.6 5.036 135.5 32.82 35.856 52.694 81.532 52.694 137.428 0 196.654-119.778 239.95-233.79 252.624 18.364 15.89 34.724 47.046 34.724 94.812 0 68.508-0.596 123.644-0.596 140.508 0 13.628 9.222 29.594 35.172 24.566 203.322-67.776 349.842-259.626 349.842-485.768 0-282.78-229.234-511.998-511.992-511.998z" + ], + "tags": [ + "github", + "brand", + "octacat", + "social" + ], + "defaultCode": 60080, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "github, brand40", + "name": "github", + "order": 31, + "id": 433, + "prevSize": 32, + "code": 60080 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 432 + }, + { + "icon": { + "paths": [ + "M256 640c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM640 640c0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64s-64-28.654-64-64zM643.112 776.778c16.482-12.986 40.376-10.154 53.364 6.332s10.152 40.378-6.334 53.366c-45.896 36.158-115.822 59.524-178.142 59.524-62.322 0-132.248-23.366-178.144-59.522-16.486-12.99-19.32-36.882-6.332-53.368 12.99-16.482 36.882-19.318 53.366-6.332 26.422 20.818 78.722 43.222 131.11 43.222s104.688-22.404 131.112-43.222zM1024 512c0-70.692-57.308-128-128-128-48.116 0-89.992 26.57-111.852 65.82-65.792-35.994-145.952-59.246-233.28-64.608l76.382-171.526 146.194 42.2c13.152 37.342 48.718 64.114 90.556 64.114 53.020 0 96-42.98 96-96s-42.98-96-96-96c-36.56 0-68.342 20.442-84.554 50.514l-162.906-47.024c-18.224-5.258-37.538 3.722-45.252 21.052l-103.77 233.026c-85.138 5.996-163.262 29.022-227.636 64.236-21.864-39.25-63.766-65.804-111.882-65.804-70.692 0-128 57.308-128 128 0 52.312 31.402 97.254 76.372 117.102-8.070 24.028-12.372 49.104-12.372 74.898 0 176.73 200.576 320 448 320 247.422 0 448-143.27 448-320 0-25.792-4.3-50.862-12.368-74.886 44.97-19.85 76.368-64.802 76.368-117.114zM864 188c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zM64 512c0-35.29 28.71-64 64-64 25.508 0 47.572 15.004 57.846 36.646-33.448 25.366-61.166 54.626-81.666 86.738-23.524-9.47-40.18-32.512-40.18-59.384zM512 948c-205.45 0-372-109.242-372-244s166.55-244 372-244c205.45 0 372 109.242 372 244s-166.55 244-372 244zM919.82 571.384c-20.5-32.112-48.218-61.372-81.666-86.738 10.276-21.642 32.338-36.646 57.846-36.646 35.29 0 64 28.71 64 64 0 26.872-16.656 49.914-40.18 59.384z" + ], + "tags": [ + "reddit", + "brand", + "social" + ], + "defaultCode": 60102, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "reddit, brand61", + "name": "reddit", + "order": 18, + "id": 455, + "prevSize": 32, + "code": 60102 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 454 + }, + { + "icon": { + "paths": [ + "M966.8 233.6c0 3.2-1 6.2-3 9-2 2.6-4.2 4-6.8 4-20 2-36.4 8.4-49 19.2-12.8 10.8-25.8 31.8-39.2 62.4l-206.4 465.4c-1.4 4.4-5.2 6.4-11.4 6.4-4.8 0-8.6-2.2-11.4-6.4l-115.8-242-133.2 242c-2.8 4.4-6.4 6.4-11.4 6.4-6 0-9.8-2.2-11.8-6.4l-202.6-465.2c-12.6-28.8-26-49-40-60.4s-33.6-18.6-58.6-21.2c-2.2 0-4.2-1.2-6-3.4-2-2.2-2.8-4.8-2.8-7.8 0-7.6 2.2-11.4 6.4-11.4 18 0 37 0.8 56.8 2.4 18.4 1.6 35.6 2.4 51.8 2.4 16.4 0 36-0.8 58.4-2.4 23.4-1.6 44.2-2.4 62.4-2.4 4.4 0 6.4 3.8 6.4 11.4s-1.4 11.2-4 11.2c-18 1.4-32.4 6-42.8 13.8s-15.6 18-15.6 30.8c0 6.4 2.2 14.6 6.4 24.2l167.4 378.4 95.2-179.6-88.6-185.8c-16-33.2-29-54.6-39.2-64.2s-25.8-15.4-46.6-17.6c-2 0-3.6-1.2-5.4-3.4s-2.6-4.8-2.6-7.8c0-7.6 1.8-11.4 5.6-11.4 18 0 34.6 0.8 49.8 2.4 14.6 1.6 30 2.4 46.6 2.4 16.2 0 33.2-0.8 51.4-2.4 18.6-1.6 37-2.4 55-2.4 4.4 0 6.4 3.8 6.4 11.4s-1.2 11.2-4 11.2c-36.2 2.4-54.2 12.8-54.2 30.8 0 8 4.2 20.6 12.6 37.6l58.6 119 58.4-108.8c8-15.4 12.2-28.4 12.2-38.8 0-24.8-18-38-54.2-39.6-3.2 0-4.8-3.8-4.8-11.2 0-2.8 0.8-5.2 2.4-7.6s3.2-3.6 4.8-3.6c13 0 28.8 0.8 47.8 2.4 18 1.6 33 2.4 44.6 2.4 8.4 0 20.6-0.8 36.8-2 20.4-1.8 37.6-2.8 51.4-2.8 3.2 0 4.8 3.2 4.8 9.6 0 8.6-3 13-8.8 13-21 2.2-38 8-50.8 17.4s-28.8 30.8-48 64.4l-78.2 143.2 105.2 214.4 155.4-361.4c5.4-13.2 8-25.4 8-36.4 0-26.4-18-40.4-54.2-42.2-3.2 0-4.8-3.8-4.8-11.2 0-7.6 2.4-11.4 7.2-11.4 13.2 0 28.8 0.8 47 2.4 16.8 1.6 30.8 2.4 42 2.4 12 0 25.6-0.8 41.2-2.4 16.2-1.6 30.8-2.4 43.8-2.4 4 0 6 3.2 6 9.6z" + ], + "tags": [ + "wikipedia", + "brand" + ], + "defaultCode": 60104, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "name": "wikipedia", + "ligatures": "wikipedia, brand63", + "order": 33, + "id": 457, + "prevSize": 32, + "code": 60104 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 456 + }, + { + "icon": { + "paths": [ + "M384 384h177.106v90.782h2.532c24.64-44.194 84.958-90.782 174.842-90.782 186.946 0 221.52 116.376 221.52 267.734v308.266h-184.61v-273.278c0-65.184-1.334-149.026-96.028-149.026-96.148 0-110.82 70.986-110.82 144.292v278.012h-184.542v-576z", + "M64 384h192v576h-192v-576z", + "M256 224c0 53.019-42.981 96-96 96s-96-42.981-96-96c0-53.019 42.981-96 96-96s96 42.981 96 96z" + ], + "tags": [ + "linkedin", + "brand", + "social" + ], + "defaultCode": 60106, + "grid": 16, + "attrs": [] + }, + "attrs": [], + "properties": { + "ligatures": "linkedin2, brand65", + "name": "linkedin2", + "order": 34, + "id": 459, + "prevSize": 32, + "code": 60106 + }, + "setIdx": 2, + "setId": 1, + "iconIdx": 458 + } + ], + "height": 1024, + "metadata": { + "name": "icomoon" + }, + "preferences": { + "showGlyphs": true, + "showQuickUse": true, + "showQuickUse2": true, + "showSVGs": true, + "fontPref": { + "prefix": "fa-", + "metadata": { + "fontFamily": "icomoon", + "majorVersion": 1, + "minorVersion": 0 + }, + "metrics": { + "emSize": 1024, + "baseline": 6.25, + "whitespace": 50 + }, + "embed": false, + "hideFormats": false, + "showSelector": true + }, + "imagePref": { + "prefix": "icon-", + "png": true, + "useClassSelector": true, + "color": 0, + "bgColor": 16777215, + "classSelector": ".icon", + "height": 24, + "columns": 16, + "margin": 16, + "overrideSize": "" + }, + "historySize": 50, + "showCodes": true, + "gridSize": 16 + } +} \ No newline at end of file diff --git a/public/assets/styles/icomoon/style.css b/public/assets/styles/icomoon/style.css new file mode 100644 index 00000000..04ec206b --- /dev/null +++ b/public/assets/styles/icomoon/style.css @@ -0,0 +1,122 @@ +@font-face { + font-family: 'icomoon'; + src: url('fonts/icomoon.eot?lbcj5w'); + src: url('fonts/icomoon.eot?lbcj5w#iefix') format('embedded-opentype'), + url('fonts/icomoon.ttf?lbcj5w') format('truetype'), + url('fonts/icomoon.woff?lbcj5w') format('woff'), + url('fonts/icomoon.svg?lbcj5w#icomoon') format('svg'); + font-weight: normal; + font-style: normal; +} + +[class^="fa-"], [class*=" fa-"] { + /* use !important to prevent issues with browser extensions that change fonts */ + font-family: 'icomoon' !important; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.fa-rocket:before { + content: "\e901"; +} +.fa-youtube-square:before { + content: "\e908"; +} +.fa-youtube2:before { + content: "\e909"; +} +.fa-reddit-alien:before { + content: "\e902"; +} +.fa-flask:before { + content: "\e903"; +} +.fa-chevron-down:before { + content: "\e904"; +} +.fa-chevron-up:before { + content: "\e905"; +} +.fa-chevron-down2:before { + content: "\e906"; +} +.fa-home:before { + content: "\e900"; +} +.fa-pencil:before { + content: "\e907"; +} +.fa-file-empty:before { + content: "\e924"; +} +.fa-file-text2:before { + content: "\e926"; +} +.fa-folder-download:before { + content: "\e933"; +} +.fa-hammer:before { + content: "\e996"; +} +.fa-trophy:before { + content: "\e99e"; +} +.fa-gift:before { + content: "\e99f"; +} +.fa-download3:before { + content: "\e9c7"; +} +.fa-upload3:before { + content: "\e9c8"; +} +.fa-earth:before { + content: "\e9ca"; +} +.fa-arrow-up:before { + content: "\ea32"; +} +.fa-arrow-down:before { + content: "\ea36"; +} +.fa-facebook:before { +content: "\ea90"; +} +.fa-medium:before { + content: "\e911"; +} +.fa-facebook2:before { + content: "\ea91"; +} +.fa-instagram:before { + content: "\ea92"; +} +.fa-telegram:before { + content: "\ea95"; +} +.fa-twitter:before { + content: "\ea96"; +} +.fa-youtube:before { + content: "\ea9d"; +} +.fa-github:before { + content: "\eab0"; +} +.fa-reddit:before { + content: "\eac6"; +} +.fa-wikipedia:before { + content: "\eac8"; +} +.fa-linkedin2:before { + content: "\eaca"; +} diff --git a/public/assets/styles/mobile.css b/public/assets/styles/mobile.css new file mode 100755 index 00000000..d0669434 --- /dev/null +++ b/public/assets/styles/mobile.css @@ -0,0 +1,849 @@ +/* Medium Devices, Desktops */ + +@media only screen and (max-height: 765px){ + .mainLogo{ + width: 16%; + } +} + +@media only screen and (max-width: 1400px){ + .faqContainer{ + grid-template-columns: 1fr; + } + #mediaContainer{ + grid-template-columns: 1fr 1fr 1fr; + } +} + +@media only screen and (max-width: 1200px){ + + .poolSingleButton{ + margin: 20px 0!important; + } + + #miningPoolController .generalController{ + height: 150px!important; + } + + #miningPoolController .generalController{ + border-right: solid 1px #fff; + } + + .dataStatisticsItem:last-child{ + border-bottom: none!important; + } + + .listType { + margin-top: 40px !important; + } + + .infoSection{ + border: none!important; + } + + #miningPoolController{ + width: 100%; + display: block; + max-width: 100%; + height: auto; + position: relative; + } + + #yourPoolSection{ + width: 100%; + display: inline-block; + max-width: 100%; + height: auto; + margin: 0 auto; + position: relative; + padding-top: 20px; + margin-top: 210px; + padding-bottom: 80px; + } + + #yourPoolSection .poolContainer{ + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; + } + + #miningPoolController{ + display: grid; + grid-template-columns: 1fr 1fr; + } + + .infoSection{ + margin-top: 64px; + overflow-x: scroll; + } + + .infoSection h2{ + display: none!important; + border-color: none; + } + + #miningPoolController{ + max-height: 230px; + border-bottom: solid 1px #fff; + overflow: hidden; + position: fixed; + z-index: 1; + } + + .addressTextBox{ + display: grid; + grid-template-columns: 1fr 1fr; + } + + .addressTextBox span{ + line-height: 50px; + } + + .addressTextBox img{ + width: 30px; + border: none; + margin-top: 10px; + margin-bottom: 10px; + } + +} + +@media only screen and (max-width: 1100px){ + + #yourPoolSection .poolContainer{ + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; + } + #mediaContainer{ + grid-template-columns: 1fr 1fr; + } + .bountySide{ + display: block; + width: 100%; + height: auto; + margin-top: -1px; + z-index: 100; + } + .bountyPage{ + display: block; + } + .bountyCampaigns span{ + display: inline-block; + width: 60px; + border-left: solid 1px#3a3a3a; + transition: none; + } + .bountyCampaigns span:last-child{ + border-right: solid 1px#3a3a3a; + } + .bountyMain{ + /*min-width: 1100px;*/ + padding: 70px 0 100px 0; + } + + .bountySpinner{ + margin-top: 50px; + width: 50px; + height: 50px; + margin-bottom: 70px; + } + +} + +@media only screen and (max-width : 992px) { + + #papers .twoColums { + grid-column-gap: 50px; + } + + .btnPosition{ + margin-top: 60px!important; + } + + .listElement div{ + line-height: normal; + } + + .mobileTableShowTitle { + display: block; + } + + .poolSectionContainer .mobileTableShowTitle { + display: none; + } + + .infoBounty{ + display: block; + } + + .countDown{ + height: 140px; + } + + .transactionInfo{ + font-size: 12px; + } + + #yourPoolSection .poolContainer{ + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr; + } + + #mediaContainer{ + grid-template-columns: 1fr 1fr; + } + .teamWrapper{ + grid-template-columns: 1fr 1fr 1fr; + } + #whatContainer{ + grid-template-columns: 1fr 1fr 1fr; + } + .main-timeline .timeline{ width: 100%; margin-left: 10px!important; } + .main-timeline .timeline:nth-child(even), + .main-timeline .timeline:nth-child(odd){ + margin: 0; + } + .main-timeline .timeline:before, + .main-timeline .timeline:nth-child(2n):before{ + width: 30px; + height: 100%; + left: 25px; + } + .main-timeline .timeline-icon, + .main-timeline .timeline:nth-child(2n) .timeline-icon{ + left: 0; + } + .main-timeline .year, + .main-timeline .timeline:nth-child(2n) .year{ + text-align: left; + padding: 0 30px 0 100px; + } + .main-timeline .year:before, + .main-timeline .timeline:nth-child(2n) .year:before{ + left: auto; + right: 4px; + } + .main-timeline .year:after{ + left: auto; + right: 50px; + border-right: 10px solid #303a3b; + border-left: none; + } + .main-timeline .timeline-content, + .main-timeline .timeline:nth-child(2n) .timeline-content{ + text-align: left; + padding: 18px 40px 18px 100px; + } + .main-timeline .timeline-content:before, + .main-timeline .timeline-content:after{ + width: 0; + height: 0; + } + .main-timeline .timeline:first-child, .main-timeline .timeline:last-child:nth-child(even){ + margin-left: 10px!important; + } + #whatContainer div{ + padding-bottom: 50px; + } + .main-timeline .year:before, .main-timeline .timeline .year:before{ + display: none; + } + + .verticalAlignMiddleMobileFix{ + top: 40%; + } + #timeline{ + padding: 70px 0 60px 30px; + } + + .listType{ + display: none; + } + + .list{ + text-align: left; + } + + .mobileTableShow .title{ + line-height: normal; + height: 28px; + overflow: hidden; + } + + .mobileTableShow{ + white-space: nowrap; + } + + .listElement{ + display: block; + text-align: left; + } + + .listHead{ + display: none; + } + + .bountyMain .mobileTableShow{ + grid-template-columns: 160px 1fr; + padding: 6px 0 2px 0; + display: grid; + } + + .bountyMain .mobileTableShow:nth-child(2n+0){ + background-color: #2b2b2b; + } + + .bountyMain .mobileTableShowTitle, .bountyMain .mobileTableShowTitle div{ + font-size: 12px; + padding: 0!important; + line-height: 20px; + margin: 0 0 0 5px; + } + + .bountyMain .listElement{ + margin-bottom: 20px; + border-color: #131313; + } + + .bountyMain .list{ + margin-top: 20px; + } + + .bountyMain .list .title{ + height: auto; + padding-left: 0; + } + + .bountyMain .listElement:nth-child(2n+0){ + background-color: #464646 + } + + .listElement{ + color: #a9a9a9; + } + + .mobileTableShowTitle{ + color: #fff; + text-transform: uppercase; + } + +} + +@media only screen and (max-width : 831px) { + + .backgroundVideoWrap{ + display: none; + } + + .bountyProgramPage #footer{ + display: none; + } + + #footer{ + padding-bottom: 125px; + } + + .our-team:hover{ + transform: none; + } + + #papers .twoColums{ + display: block; + } + + #papers .paperItem{ + height: auto; + padding: 20px 0 30px 0; + } + + #papers .blackPaper .paperItem2{ + padding-bottom: 0; + } + + #papers .whitePaper .paperItem2{ + padding-top: 0; + } + + .blackPaper{ + border-bottom-right-radius: 0!important; + border-top-right-radius: 0!important; + } + + .whitePaper{ + border-bottom-left-radius: 0!important; + border-top-left-radius: 0!important; + } + + #papers .specialMarginTop{ + margin-top: 0!important; + padding: 0; + } + + .paperItemColor1{ + background-color: transparent!important; + } + + .paperItemColor2{ + background-color: transparent!important; + } + + .paperItemColor3{ + background-color: transparent!important; + } + + .paperImg:hover{ + width: 160px!important; + margin: 40px 0 10px 0!important; + transition: all 0.3s ease; + } + + #paper{ + padding-top: 100px; + } + +} + +/* Small Devices, Tablets */ +@media only screen and (max-width : 768px) { + + .listType{ + margin-top: 10px!important; + } + + .mottoWebSite{ + margin-top: 30px; + line-height: 30px; + } + + .statusMining { + margin-top: 30px!important; + } + + .threeTeamColums, .twoTeamColums{ + grid-template-columns: 1fr!important; + } + + .specialRaw{ + grid-template-columns: 1fr!important; + } + + .specialTitle{ + text-align: left!important; + } + + .transactionInfo span{ + width: 100%; + } + + .transactionInfo{ + grid-template-columns: 80px 100px 1fr 80px; + } + + #yourPoolSection .poolContainer{ + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; + } + + #miningPoolController .generalController{ + border-right: none; + height: auto!important; + padding-bottom: 10px; + } + + #miningPoolController{ + max-height: none; + } + + #mediaContainer{ + grid-template-columns: 1fr; + } + + #yourPoolSection{ + margin-top: 0; + padding-top: 0; + } + + .fullSection .verticalAlignMiddle{ + top:auto; + transform: none; + } + + .infoSection{ + margin-top: 0px; + } + + #menu .openedMenuLink{ + width: 100%; + display: block; + padding: 15px 0; + border-top: solid 1px #3c3c3c; + } + + #menu .openedMenuLink:first-child{ + border-top: none; + } + + #faqSection h1{ + margin-top: 40px!important; + } + + #miningPoolController{ + width: 100%; + display: block; + height: auto; + max-width: 100%; + position: relative; + } + + #yourPoolSection{ + padding-top: 0; + margin-left: 0 + } + + #team .bigMarginTop{ + padding: 0!important; + } + + #faqSection .bigMarginTop{ + margin-bottom: 0; + } + + .distributionContainer .distributionGrid:last-child{ + width: 90%; + } + + #coinDistributionSection .bigMarginBottom{ + margin-bottom: 0; + margin-top: 50px; + } + + .bigMarginTop{ + padding-top: 40px!important; + padding-bottom: 40px!important; + } + + #timelineSection{ + padding-top: 50px; + } + + #timelineSection h3 { + margin-bottom: 0px; + width: 90%; + margin: 0 auto; + text-align: center; + } + + #newCryptoSection{ + padding: 1px 0 10px 0; + } + + #aboutSection{ + padding: 60px 0!important; + } + + #createPoolSection .bigMarginBottom{ + margin-bottom: 0; + } + + #createPoolSection .poolDescription{ + width: 80%!important; + margin: 0 auto; + } + + #mainSection h3{ + margin-top: 0; + } + + #logoMenu{ + padding: 0px 20px!important; + } + + .showMenu{ + padding: 20px 26px!important; + } + + #mainSection h5{ + margin-bottom: 30px; + } + + .statusMining{ + margin-bottom: 0; + } + + #createPoolSection .distributionContainer { + grid-template-columns: 1fr; + grid-row-gap: 50px; + padding-top: 0; + } + + #createPoolSection{ + margin-bottom: 0; + } + + .distributionContainer{ + grid-template-columns: 1fr; + padding-bottom: 0px; + } + + #newCryptoSection .featuresContainer{ + grid-template-columns: 1fr; + } + + #socialLinks{ + float: right; + } + + #mediaContainer{ + margin-left: 10px; + margin-right: 10px; + } + + #whatContainer h4{ + margin-bottom: 0; + font-size: 18px; + line-height: 22px; + } + #networkSection h1{ + margin-top: 90px; + } + #p2p-network{ + padding-top: 20px; + } + + h1{ + line-height: 42px; + font-size: 26px; + } + h3{ + letter-spacing: 2px; + font-size: 14px; + } + p{ + font-size: 16px; + } + .mainLogo { + width: 40%; + /*margin-bottom: 0;*/ + } + .teamWrapper{ + grid-template-columns: 1fr 1fr; + } + #whatContainer{ + grid-template-columns: 1fr; + } + #aboutSection{ + padding: 1px 0 60px 0; + } + #aboutSection{ + padding: 100px 0; + } + #copyright{ + line-height: 5px; + margin-top: 15px; + margin-left: 10px; + } + .secondCopyRight{ + font-size: 12px; + line-height: 5px; + margin-top: 10px; + margin-left: 0; + color: #e2e2e2; + width: auto; + display: block; + } + + .topnav a:not(:first-child) {display: none;} + .topnav a.icon { + float: right; + display: block; + } + + .topnav.responsive {position: relative;} + .topnav.responsive .icon { + position: absolute; + right: 0; + top: 0; + } + .topnav.responsive a { + float: none; + display: block; + text-align: left; + } + + .distributionContainer .distributionGrid:last-child{ + margin-bottom: 50px; + } + + #team .bigMarginTop, #newCryptoSection .bigMarginTop{ + padding: 0!important; + margin: 0!important; + margin-top: 40px!important; + padding-top: 0px!important; + margin-bottom: 40px!important; + } + + .backgroundVideoWrap{ + top:40px; + } + + .distributionContainer .stats{ + padding-bottom: 20px; + } + + .bountyCampaigns span { + width: 12%; + } + +} + +@media only screen and (max-width: 610px) { + + .listType{ + margin-bottom: 10px; + } + + .addressOnMobile{ + font-size: 10px; + } + + .addressOnMobile .mobileTableShowTitle{ + display: none!important; + } + + .showOnlyOnMobile{ + display: block; + } + + .showOnlyOnMobile .walletListImage{ + display: block; + } + + .walletListImage{ + display: none; + } + + .smallFontAddress{ + display: block; + } + + .selectedMinerInfo{ + display: none; + } + + .infoSection{ + display: none; + margin-left: 8px; + } + + .poolSectionContainer .mobileTableShowTitle{ + display: block; + } + + .transactionInfo{ + display: block; + text-align: left; + padding-left: 10px; + } + + .mobileTableShowTitle{ + display: block; + text-transform: uppercase; + color: #fff; + } + + .mobileTableShow{ + display: grid; + grid-template-columns: 120px 1fr; + } + + .tableHeader{ + display: none; + } + + .transactionInfo:nth-child(2n+0){ + background-color: #333; + } + +} + +@media only screen and (max-width: 550px){ + + .distributionContainer .stats{ + grid-template-columns: 1fr; + } + #mediaContainer{ + grid-template-columns: 1fr; + padding: 0 10px; + } + + #miningPoolController .generalController{ + padding-bottom: 0px; + margin-top: 5px; + } + + #yourPoolSection .poolContainer{ + grid-template-columns: 1fr 1fr 1fr 1fr 1fr ; + } + +} + +/* Extra Small Devices, Phones */ +@media only screen and (max-width : 480px) { + + .show-balance-span{ + font-size: 18px; + margin-right: 0; + } + + #yourPoolSection .poolContainer{ + grid-template-columns: 1fr 1fr 1fr 1fr; + } + + .textContainer{ + width: 100%; + padding: 0 20px; + } + + .checkItem{ + margin-left: 0; + } + .socialImage{ + padding: 13px 0px 14px 10px; + } + .main-timeline .timeline-content, .main-timeline .timeline:nth-child(2n) .timeline-content { + padding: 30px 20px 18px 80px; + } + .main-timeline .year, .main-timeline .timeline:nth-child(2n) .year { + padding: 10px 0 0 90px; + } + #timeline { + padding: 70px 0 60px 0; + } + .mainLogo { + width: 50%; + } + .teamWrapper{ + grid-template-columns: 1fr; + } + .main-timeline .timeline:before{ + top:10%!important; + } + #copyright{ + font-size: 10px; + } + .secondCopyRight{ + font-size: 7px; + } + +} + +@media only screen and (max-width : 370px) { + + .linkIconSocial img{ + width: 30px!important; + } + + .minedBy{ + font-size: 10px; + } + + .btnPosition{ + margin-top: 30px!important; + } + +} \ No newline at end of file diff --git a/public/assets/styles/stylesheet.css b/public/assets/styles/stylesheet.css new file mode 100755 index 00000000..be59ed5a --- /dev/null +++ b/public/assets/styles/stylesheet.css @@ -0,0 +1,2222 @@ +@font-face { + font-family: avenir; + src: url(https://cdn.rawgit.com/lokesh/instapicker/bd9a933e/fonts/avenir-light.woff); +} + +* { + margin: 0; + padding: 0; +} + +*, *:before, *:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body{ + background: #000; + color: #D5D5D5; + font-family: avenir; +} + +input:focus, textarea:focus{ + outline: none; +} + +h1{ + letter-spacing: 2px; + margin: 0; + padding: 0; + border: 0; + outline: 0; + vertical-align: baseline; + background: #9a9a9a24; + color: #ffc12c; + line-height: 2.2em; + font-size: 36px; + font-weight: 100!important; + word-wrap: break-word; + transition: all .5s linear; +} + +h2{ + color: #8e8e8e; + letter-spacing: 5px; + font-size: 20px; + font-weight: 100!important; + line-height: 60px; + transition: all .5s linear; +} + +h3{ + color: #8e8e8e; + letter-spacing: 4px; + font-size: 18px; + margin-top: 30px; + font-weight: 100!important; + line-height: 50px; + color: #fff; + transition: all .5s linear; +} + +h4{ + margin-bottom: 20px; + font-size: 18px; + font-weight: 100!important; + color: #fff; +} + +h5{ + display: block; + font-weight: 100!important; + padding: 10px 0; + font-size: 16px; +} + +span{ + width: 80%; + display: block; + margin: 0 auto; + width: 80%; + display: block; + font-weight: 100!important; + margin: 0 auto; + line-height: 30px; + letter-spacing: 1px; + color: #989898; +} + +a{ + cursor: pointer; + color:#f6cd69; + transition: all .5s linear; + text-decoration: none; +} + +a:hover{ + color: #fff; + transition: all .5s linear; +} + +#whatContainer{ + display: grid; + margin-left: 40px; + margin-right: 40px; + grid-template-columns: 1fr 1fr 1fr; + grid-column-gap: 40px; + text-align: center; +} + +#mainSection h1{ + background: transparent; +} + +#mediaContainer{ + display: grid; + margin-left: 40px; + margin-right: 40px; + grid-template-columns: 1fr 1fr 1fr 1fr; + grid-column-gap: 40px; + grid-row-gap: 40px; + text-align: center; + margin-top: 100px; +} + +#mediaContainer img{ + /*height: 50px;*/ + width: 290px; + height:190px; + border-radius: 10px; + /*-webkit-filter: grayscale(100%); !* Safari 6.0 - 9.0 *!*/ + /*filter: grayscale(100%);*/ +} + +.twoColums{ + display: grid; + grid-template-columns: 1fr 1fr; +} + +.twoTeamColums{ + grid-template-columns: 1fr 1fr!important; +} + +.threeTeamColums{ + grid-template-columns: 1fr 1fr 1fr!important; +} + +#whatContainer img{ + width: 170px; + height: 170px; + margin-bottom: 20px; + border-radius: 100%; +} + +.titleMarginBottom{ + margin-bottom: 30px!important; +} + +.hide{ + display: none!important; +} + +.fullHeight{ + height: 100%; + width: 100%; + top: 0!important; + transform: none!important; + +} + +.backgroundVideoWrap{ + position:fixed; + height: 100%; + height: -webkit-calc(100% - 60px); + height: -moz-calc(100% - 60px); + height: calc(100% - 60px);; + width:100%; + top:60px; + left:0; + z-index: -10; +} + +#websiteBody{ + transition: all .5s linear; +} + +.verticalAlignMiddle{ + width: 100%; + position: relative; + top: 50%; + transform: translateY(-50%); +} + +.verticalAlignMiddleMap{ + transform: translateY(-10%); +} + +.alignCenter{ + margin: 0 auto; + text-align: center; +} + +.backgroundVideo{ + height: 100%; + width: 100%; + object-fit: cover; + position:fixed; +} + +#header{ + position: fixed; + display: block; + width: 100%; + max-height: 100%; + top:0; + background-color: #1f1f1f; + z-index: 10; + border-bottom: solid 1px; +} + +#menu{ + /*float: right;*/ + /*padding: 28px 32px 21px 0;*/ +} + +#menu ul li{ + cursor: pointer; + display: inline-block; + margin-left: 30px; + font-family: avenir; + color: #D5D5D5; + transition: all 0.6s ease; +} + +#menu ul li:hover{ + color: #fcd26c; + transition: all 0.6s ease; +} + +#logo{ + width: 30px; + transition: all .5s linear; +} + +#logoBox{ + float: left; + padding: 14px 20px; + transform: translateY(5%); +} + +.backgroundSection{ + background-color: #1b1b1b; +} + +#newCryptoSection{ + padding: 1px 0 80px 0; +} + +#knowUsSection{ + background-color: #1b1b1b; + padding: 70px 0; +} + +#timelineSection{ + padding: 1px 0 0 0; +} + +.fullSection{ + overflow: auto; + height: 100%; + width: 100%; + overflow: hidden; +} + +.teamRole{ + color: #fcd26c; + font-size: 12px; + margin-top: 8px; + letter-spacing: 2px; + line-height: 18px; + text-transform: uppercase; +} + +.teamWrapper p{ + font-size: 14px; + background-color: #020102ad; + border-radius: 5px; + padding: 20px 20px; +} + +.teamWrapper{ + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + text-align: center; + margin-top: 70px; + grid-gap: 30px; + margin-left: 30px; + margin-right: 30px; + +} + +.threeMembersTeam{ + grid-template-columns: 1fr 1fr 1fr +} + +.teamWrapper h4{ + line-height: 25px; +} + +.marginTop{ + margin-top: 20px; +} + +.bigMarginBottom{ + margin-bottom: 100px; +} + +.teamWrapper .our-team .team-pic{ + position: relative; + overflow: hidden; + width: 150px; + height: 150px; + border-radius: 50%; + margin: 0 auto 25px; +} + +#mediaContainer:hover h1{ +display:none; +background-color:#ff2200} + +.teamWrapper .our-team .team-pic img{ + width: 150px; + height: 150px; +} + +/*.teamWrapper .our-team .team-pic img:hover{*/ + /*!*background: linear-gradient(rgba(32,32,32,1),rgba(32,32,32,1));*!*/ +/*}*/ + +.teamWrapper .our-team .team-pic .over-layer{ + position: absolute; + top:0; + left:0; + width:100%; + height:100%; + background: rgba(35, 35, 35, 0.88); + opacity:0; + transition: all 0.30s ease 0s; +} + +.teamWrapper .our-team .over-layer:hover{ + opacity:1; +} + +.teamWrapper .our-team .social-link{ + margin:0; + padding:0; + position:relative; + top:65%; + left:0; + list-style:none; + transition:all 0.50s ease 0s; +} +.teamWrapper .our-team .over-layer:hover .social-link{ + top:45%; +} +.teamWrapper .our-team .social-link li{ + display: inline-block; + margin-right:5px; + transition: all 0.40s linear 0s; + transform: translateY(0px); +} +.teamWrapper .our-team .social-link li a{ + + color:#fcd26c; + background: #1b1b1b; + font-size:22px; + border-radius:50%; + text-align: center; + padding:7px; + text-decoration: none; +} +.teamWrapper .our-team .social-link-4 li a { + font-size: 18px; +} + +.teamWrapper .our-team .social-link li a:hover{ + background: #4f4f4f; + color: #fcd26c; +} + +.teamWrapper .our-team .social-link li:hover{ + transform: translateY(-13px); +} + +.countDownComponent{ + margin-top: -50px; +} + +/* + +.teamWrapper .our-team .social-link li a.fa-facebook:hover{ + color:#5d82d1; +} +.teamWrapper .our-team .social-link li a.fa-google:hover{ + color:#eb5e4c; +} +.teamWrapper .our-team .social-link li a.fa-twitter:hover{ + color:#40bff5; +} +*/ + +#mainSection h1{ + letter-spacing: 4px; +} + +.mainLogo{ + width: 20%; + max-width: 300px; + height: auto; + opacity: 0.8; + margin-bottom: 30px; + padding: 5px; + -webkit-filter: drop-shadow(0px 2px 6px rgba(255, 255, 255, 0.84)); + filter: drop-shadow(0px 2px 6px rgba(255, 255, 255, 0.84)); +} + +#footer{ + background-color: #1f1f1f; + width: 100%; + height: 52px; + display: block; + padding-bottom:35px; + border-top: solid 1px #444444; +} + +.bountyProgramPage #footer{ + display: none; +} + +.bountySideScroll .info{ + padding-bottom: 0; +} + + +#copyright{ + display: inline-block; + font-size: 12px; + line-height: 48px; + margin-left: 20px; + color: #e2e2e2; + width: auto; +} + +.secondCopyRight{ + font-size: 12px; + line-height: 5px; + margin-top: 10px; + margin-left: 0; + color: #e2e2e2; + width: auto; + display: inline-block; +} + +#copyright a{ + color: #ffffff; + text-decoration: none; +} + +#socialLinks{ + display: inline-block; + right: 0; + position: relative; + float: left; + margin-right: 20px; +} + +#socialLinks *{ + -webkit-box-sizing:initial; +} + +.socialImage{ + width: 22px; + padding: 13px 0px 14px 20px; + cursor: pointer; +} + +#teamSection{ + display: inline-block; + overflow-x: hidden; +} + +.yellowColor{ + color: #fcd26c; +} + +.main-timeline{ + overflow: hidden; + position: relative; +} +.main-timeline .timeline{ + width: 50%; + float: left; + z-index: 1; + position: relative; +} +.main-timeline .timeline:before, +.main-timeline .timeline:after{ + content: ""; + display: block; + clear: both; +} +.main-timeline .timeline:before{ + content: ""; + width: 20px; + height: 105%; + background: #fec02c; + position: absolute; + top: 10%; + right: -10px; +} +.main-timeline .timeline:last-child:before{ height: 0; } +.main-timeline .timeline-icon{ + width: 80px; + height: 80px; + border-radius: 50%; + background: #fec02c; + overflow: hidden; + text-align: center; + position: absolute; + top: 0; + right: -40px; + z-index: 3; +} +.main-timeline .timeline-icon:before{ + content: ""; + width: 70px; + height: 60px; + border-radius: 50%; + background: #262626; + margin: auto; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} +.main-timeline .timeline-icon i{ + font-size: 35px; + color: #fff; + line-height: 80px; + z-index: 1; + position: relative; +} +.main-timeline .year{ + display: block; + padding: 0 60px 0 -20px; + color: #ffc12c; + text-align: right; + border-bottom: 2px solid #545454; + z-index: 2; + position: relative; + font-size: 20px; +} +.main-timeline .year:before{ + content: ""; + display: none; + width: 20px; + height: 20px; + border-radius: 50%; + background: #fec02c; + margin: auto; + position: absolute; + bottom: -10px; + left: -4px; +} +.main-timeline .year:after{ + content: ""; + border-left: 10px solid #fec02c; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + position: absolute; + bottom: -11px; + left: 50px; + display: none; +} +.main-timeline .timeline-content{ + padding: 18px 60px 18px 40px; + text-align: right; + position: relative; + z-index: 1; +} +.main-timeline .timeline-content .title{ + text-transform: uppercase; +} +.main-timeline .timeline-content:before, +.main-timeline .timeline-content:after{ + content: ""; + width: 80px; + height: 150px; + border-radius: 50%; + background: rgba(0,0,0,0); + + position: absolute; + top: 0; + right: 15px; + z-index: -1; +} +.main-timeline .timeline-content:after{ + left: auto; + right: -95px; +} +.main-timeline .timeline:last-child .timeline-content:before, +.main-timeline .timeline:last-child .timeline-content:after{ + width: 0; + height: 0; +} +.main-timeline .title{ + font-size: 22px; + font-weight: bold; + color: #ccc; + margin-top: 0; +} +.main-timeline .description{ + font-size: 15px; + color: #b3b3b3; + line-height: 25px; +} +.main-timeline .timeline:nth-child(2){ margin-top: 140px; } +.main-timeline .timeline:nth-child(even){ margin-bottom: 80px; } +.main-timeline .timeline:nth-child(odd){ margin: -110px 0 0 0; } +.main-timeline .timeline:first-child, +.main-timeline .timeline:last-child:nth-child(even){ + margin: 0 !important; +} +.main-timeline .timeline:nth-child(2n):before, +.main-timeline .timeline:nth-child(2n) .timeline-icon{ + right: auto; + left: -10px; +} +.main-timeline .timeline:nth-child(2n) .timeline-icon{ left: -40px } +.main-timeline .timeline:nth-child(2n) .year{ + padding: 0 30px 0 0; + text-align: left; +} +.main-timeline .timeline:nth-child(2n) .year:before{ + left: auto; + right: -3px; +} +.main-timeline .timeline:nth-child(2n) .year:after{ + border-left: none; + border-right: 10px solid #303a3b; + right: 50px; +} +.main-timeline .timeline:nth-child(2n) .timeline-content{ + padding: 18px 40px 18px 60px; + text-align: left; +} +.main-timeline .timeline:nth-child(2n) .timeline-content:before{ left: -95px; } +.main-timeline .timeline:nth-child(2n) .timeline-content:after{ left: 15px; } +.main-timeline .timeline:nth-child(2n):before, +.main-timeline .timeline:nth-child(2n) .timeline-icon{ background: #fec02c; } +.main-timeline .timeline:nth-child(2n) .timeline-icon:before{ + border-color: #fec02c; +} +.main-timeline .timeline:nth-child(2n) .year:before{ + background: #fec02c; +} +.main-timeline .timeline:nth-child(2n) .title{ color: #ccc; } +.main-timeline .timeline:nth-child(3n):before, +.main-timeline .timeline:nth-child(3n) .timeline-icon{ background: #fec02c; } +.main-timeline .timeline:nth-child(3n) .timeline-icon:before{ + border-color: #fec02c; +} +.main-timeline .timeline:nth-child(3n) .year:before{ + background: #fec02c; +} +.main-timeline .timeline:nth-child(3n) .title{ color: #ccc; } +.main-timeline .timeline:nth-child(4n):before, +.main-timeline .timeline:nth-child(4n) .timeline-icon{ + background: #fec02c; +} +.main-timeline .timeline:nth-child(4n) .timeline-icon:before{ + border-color: #fec02c; +} +.main-timeline .timeline:nth-child(4n) .year:before{ + background: #fec02c; +} +.main-timeline .timeline:nth-child(4n) .title{ color: #ccc; } + +#whatContainer h4{ + color: #fff; + font-size: 24px; + margin-bottom: 30px; + height: 55px; +} + +#team h4{ + text-transform: uppercase; + height: 30px; +} + +#whatContainer p{ + color: #8e8e8e; +} + +.topnav { + overflow: hidden; + background-color: #1b1b1b; + border-bottom: solid 1px #212121; +} + +.topnav a { + float: right; + display: block; + color: #f2f2f2; + text-align: center; + padding: 23px 16px; + text-decoration: none; + font-size: 14px; + transition: all .3s linear; +} + +.topnav a:hover { + background-color: #232323; + color: #ffc12c; + transition: all .3s linear; +} + +.active { + background-color: #1b1b1b; + color: white; +} + +.topnav .icon { + display: none; +} + +#logoMenu{ + padding: 10px 20px!important; + float:left!important; +} + +#logoMenu img{ + margin-top: 5px; +} + +.showMenu{ + padding: 21px 26px!important; +} + +#networkSection h1{ + margin-top: 20px; +} + +.btnPosition{ + margin-top: 100px!important; +} + +.btn-cont { + text-align: center; + margin-top: 10px; +} +.btn-cont .btn { + position: relative; + padding: 10px 30px; + border: 3px solid white; + color: white; + text-decoration: none; + font-size: 1.125em; + font-family: 'lato', sans-serif; + letter-spacing: 2px; + -webkit-font-smoothing: antialiased; + -webkit-transition-property: none; + -moz-transition-property: none; + -o-transition-property: none; + transition-property: none; +} +.btn-cont .btn:hover { + border: none; +} +.btn-cont .btn:hover .line-1 { + -webkit-animation: move1 1500ms infinite ease; + animation: move1 1500ms infinite ease; +} +.btn-cont .btn:hover .line-2 { + -webkit-animation: move2 1500ms infinite ease; + animation: move2 1500ms infinite ease; +} +.btn-cont .btn:hover .line-3 { + -webkit-animation: move3 1500ms infinite ease; + animation: move3 1500ms infinite ease; +} +.btn-cont .btn:hover .line-4 { + -webkit-animation: move4 1500ms infinite ease; + animation: move4 1500ms infinite ease; +} +.btn-cont .line-1 { + content: ""; + display: block; + position: absolute; + width: 2px; + background-color: white; + left: 0; + bottom: 0; +} +.btn-cont .line-2 { + content: ""; + display: block; + position: absolute; + height: 2px; + background-color: white; + left: 0; + top: -2px; +} +.btn-cont .line-3 { + content: ""; + display: block; + position: absolute; + width: 2px; + background-color: white; + right: 0; + top: 0; +} +.btn-cont .line-4 { + content: ""; + display: block; + position: absolute; + height: 3px; + background-color: white; + right: 0; + bottom: -3px; +} + +@-webkit-keyframes move1 { + 0% { + height: 100%; + bottom: 0; + } + 54% { + height: 0; + bottom: 100%; + } + 55% { + height: 0; + bottom: 0; + } + 100% { + height: 100%; + bottom: 0; + } +} + +@keyframes move1 { + 0% { + height: 100%; + bottom: 0; + } + 54% { + height: 0; + bottom: 100%; + } + 55% { + height: 0; + bottom: 0; + } + 100% { + height: 100%; + bottom: 0; + } +} +@-webkit-keyframes move2 { + 0% { + width: 0; + left: 0; + } + 50% { + width: 100%; + left: 0; + } + 100% { + width: 0; + left: 100%; + } +} +@keyframes move2 { + 0% { + width: 0; + left: 0; + } + 50% { + width: 100%; + left: 0; + } + 100% { + width: 0; + left: 100%; + } +} +@-webkit-keyframes move3 { + 0% { + height: 100%; + top: 0; + } + 54% { + height: 0; + top: 100%; + } + 55% { + height: 0; + top: 0; + } + 100% { + height: 100%; + top: 0; + } +} +@keyframes move3 { + 0% { + height: 100%; + top: 0; + } + 54% { + height: 0; + top: 100%; + } + 55% { + height: 0; + top: 0; + } + 100% { + height: 100%; + top: 0; + } +} +@-webkit-keyframes move4 { + 0% { + width: 0; + right: 0; + } + 55% { + width: 100%; + right: 0; + } + 100% { + width: 0; + right: 100%; + } +} +@keyframes move4 { + 0% { + width: 0; + right: 0; + } + 55% { + width: 100%; + right: 0; + } + 100% { + width: 0; + right: 100%; + } +} + +#p2p-network,#what-is-WebDollar,#timelineSection{ + padding-top: 60px; +} + +#timelineSection{ + padding-top: 90px; +} + +#mainSection{ + margin-top: 60px; +} + +#p2p-network h3,#timelineSection h3, #knowUsSection h3{ + font-weight: 100; + color: #efe0be; + text-align: center; + letter-spacing: 3px; + margin-bottom: 40px; + margin-top: 10px; + line-height: 24px; +} + +#timelineSection h3{ + margin-bottom: 20px; +} + +#timeline{ + margin-top: 70px; + background-color: #1f1f1f; + padding: 70px 0 60px 0; +} + +.networkDifficulty{ + display: inline; + font-size: 14px; + color: #fec02c; +} + +#mainSection h5{ + padding: 10px 0; + font-size: 12px; + margin-bottom: 0px; + padding-bottom: 60px; + margin-top: 0; + padding-top: 0; + display: block; +} + +#transactionContainer{ + width: 80%; + margin: 0 auto; + display: block; + position: relative; +} + + +#WebDollarMap { + padding: 30px 0; +} + +.collapse .collapse-header{ + background: #ffffff00!important; + display: inline-block; + font-weight: bolder; + font-size: 18px; + color: #9d9d9d; + cursor: pointer; + width: 100%; +} + +#faqSection .bigMarginTop{ + margin-bottom: 70px; +} + +.collapse .collapse-content-box{ + border: none!important; + text-align: center; + padding: 60px 40px!important; + line-height: 30px; + color: #e8e8e8; +} + +#faqSection h1{ + margin-top: 130px!important; +} + +.backgroundSection h1{ + background: transparent; +} + +#what-is-WebDollar .backgroundSection h1{ + width: 90%; +} + +#faqSection{ + width: 100%; + margin: 0 auto; + margin-bottom: 100px; +} + +.collapse .collapse-content-box{ + background-color: #292929e0!important +} + +.testnet{ + color: #0f0; +} + +.newCryptoText{ + display: inline-block; + margin-top: 2px; + vertical-align: top; + margin-left: 5px; +} + +.textContainer{ + width: 90%; + display: block; + margin: 0 auto; +} + +.checkItem{ + margin-left: 30px; +} + +.textContainer h2{ + color: #bfbfbf; + letter-spacing: 1px; + border-bottom: solid 1px #444; + line-height: 45px; + margin-bottom: 20px; +} + +#walletButtonText svg path, #walletButtonText svg rect{ + fill: #1f1f1f; +} + +.alreadyMining{ + display: none; +} + +.inlineBlock{ + display: inline-block; +} + +#myProgress { + width: 100%; + background-color: #292929; + border-radius: 30px; +} +#myBar { + width: 70%; + height: 25px; + background-color: #fec249; + border-radius: 30px; +} + +.webdCoin{ + border-radius: 50%; + width: 220px; + height: 220px; + margin: 0 auto; + margin-top: 40px; +} + +.coinLogo{ + width: 220px; +} + +.maxWidthSection{ + max-width: 1000px; + margin: 0 auto; +} + +.distributionContainer{ + padding: 50px 0; + background-color: none; + display: grid; + grid-template-columns: 1fr 2fr; + grid-column-gap: 40px; +} + +.spinCoin { + cursor: pointer; + transform-style: preserve-3d; +} +.spinCoin { + animation: spinCoin 5s linear infinite; +} +@keyframes spinCoin { + 0% { + transform: rotateY(0deg); + } + 100% { + transform: rotateY(360deg); + } +} +.box-1 { + transform: scaleX(.5); +} +.box-2 { + transform: scaleY(1.15); +} +.box-3 { + transform: scale(.5, 1.15); +} + +.distributionContainer .minValue{ + display: inline-block; + float: left; + position: relative; + width: auto; + font-size: 12px; + margin-top: 15px; + color: #ccc; +} + +.distributionContainer .maxValue{ + display: inline-block; + float: right; + position: relative; + width: auto; + font-size: 12px; + margin-top: 15px; + color: #ccc; +} + +.distributionContainer .stats{ + display: grid; + grid-template-columns: 1fr 1fr 1fr; + padding-bottom: 50px; + padding-top: 20px; +} + +.distributionContainer .stats .value{ + color: #fff; + text-align: center; + font-size: 20px; + font-weight: bolder; + padding-bottom: 10px; +} + +.distributionContainer .stats .description{ + color: #ccc; + text-align: center; + font-size: 12px; + width: 100%; +} + +#newCryptoSection .featuresContainer{ + display: grid; + grid-template-columns: 1fr 1fr; + grid-column-gap: 40px; + margin-bottom: 40px; +} + +#newCryptoSection .bigMarginTop{ + margin-bottom: 100px; +} + +.unfinishedMilestones{ + background: #545454!important; +} + +.main-timeline .timelineUnfinishedMilestones:before{ + background: #545454!important; +} + +.distributionContainer .distributionGrid:last-child{ + max-width: 500px; + margin: 0 auto; + width: 100%; +} + +#createPoolSection .distributionContainer{ + grid-template-columns: 1fr 1fr; +} + +.collapse{ + text-align: center; + background-color: #1b1b1b; +} + +.collapse .collapse-header > div{ + display: block!important; + text-align: center; +} + +.poolDescription{ + line-height: 20px; + font-size: 16px; + letter-spacing: 1px; + text-align: center; +} + +.createPoolLink{ + color: #D5D5D5; + text-align: center; + text-size:14px; +} + +.copyPoolLink{ + color: #262626; + text-align: center; + font-size: 14px; + cursor:pointer; + background-color: #fec02c; + width: 200px; + font-weight: bolder; + line-height: 34px; + margin: 0 auto; + border-radius: 5px; + display: block; + transition: all 0.5s ease +} + +.copyPoolLink:hover{ + background-color: #ffdc87; + color: #383838; + transition: all 0.5s ease +} + +.map-dialog{ + z-index: 1600!important; +} + +#yourPoolSection .poolContainer{ + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr; + grid-row-gap: 30px; +} + +#yourPoolSection .poolContainer .miner{ + background-image: url('./../images/browserMining.png'); + width: 58px; + height: 60px; + background-size: cover; + margin: 0 auto; + background-color: #101010; +} + +#yourPoolSection .poolContainer .miner img{ + display: none; +} + +#yourPoolSection .poolContainer .activeMiner{ + background-image: url('./../images/activeBrowserMining.png')!important; + width: 58px!important; + height: 60px!important; + background-size: cover!important; + margin: 0 auto!important; + background-color: #101010!important; +} + +.distributionContainer .stats .value{ + font-size: 30px; + margin-top: 40px; + width: 100%; +} + +#yourPoolSection .poolContainer .miner .status{ + bottom: 0; + text-align: center; + font-size: 10px; + margin-top: 16px; +} +#yourPoolSection .poolContainer .activeMiner .status{ + color: #fff +} + +@keyframes spinMining { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +#yourPoolSection{ + padding-top: 90px; + padding-bottom: 80px; +} + +#createPoolSection{ + margin-bottom: 100px; +} + +#createPoolSection .subtitle{ + text-align: center; + letter-spacing: 2px; + text-transform: uppercase; + font-size: 20px; + color: #fec02c; +} + +#createPoolSection .createPoolLink{ + width: 80%!important; + margin: 0 auto; + border-top: solid 1px #444; + padding-top: 30px; +} + +#createPoolSection .bigMarginBottom{ + margin-bottom: 60px; + margin-top: 60px; +} + +#createPoolSection .poolSlider .miningSlider{ + width: 80%!important; + margin: 0 auto; + margin-top: 50px; + margin-bottom: 40px; +} + +.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip::before{ + bottom: -8px; +} + +#miningPoolController{ + width: 30%; + background-color: #262626; + border-right: solid 1px #444; + display: block; + position: absolute; + /* min-width: 30%; */ + max-width: 350px; + width: 350px; + height: 100%; + position: fixed; + overflow-y: scroll!important; +} + +.tableHeader{ + background-color: #2d2d2d!important; +} + +.tableHeader span{ + color: #d4d4d4; +} + +.mobileTableShowTitle{ + display: none; +} + +#yourPoolSection{ + margin-left: 350px; +} + +#yourPoolSection .poolSectionContainer{ + margin: 0 auto; + padding: 0 10px; +} + +#newsLetter{ + padding: 20px 0; +} + +#miningPoolController h2{ + text-align: center; + font-size: 16px; + color: #fec02c; +} + +#miningPoolController .generalController { + padding-top: 65px; + background-color: #2d2d2d; + border-bottom: solid 1px #444; + padding-bottom: 0px; + height: 150px; + margin-top: 15px; +} + +#miningPoolController .poolSlider .miningSlider { + width: 85%!important; + margin: 0 auto; + margin-top: 30px; +} + +.vue-slider-component .vue-slider-tooltip-wrap.vue-slider-tooltip-top .vue-slider-tooltip::before{ + bottom: -9px!important; +} + +.selectedMinerInfo{ + padding: 0; + font-size: 12px; + color: #adadad; +} + +.selectedMinerInfo p{ + padding: 5px 0; + display: block; +} + +.minerData{ + display: inline-block; + color: #fec02c; + width: auto; +} + +.faqContainer{ + display: grid; + grid-template-columns: 1fr 1fr; + grid-column-gap: 30px; +} + +.textAlignCenter{ + text-align: center; + letter-spacing: 1px; + color: #d0cfcf; + background-color: #e6e6e647; + margin-bottom: 30px; + font-weight: 900; + line-height: 22px; + padding: 15px 0; + cursor: pointer; + transition:all 0.50s ease 0s; +} + +.textAlignCenter:hover{ + background-color: rgba(255, 255, 255, 0.83); + color: rgba(35, 35, 35, 1); + transition:all 0.50s ease 0s; +} + +#menu .spanCorrect{ + width: auto!important; + display: inline!important; + margin: auto!important; + line-height: normal!important; + letter-spacing: normal!important; +} + +.vuejs-countdown{ + color: #fdfdfd; +} + +#mediaContainer{ + display: grid; + grid-template-columns: 1fr 1fr 1fr 1fr; + margin: 0 auto; + padding: 0 30px; +} + +#knowUsSection h1{ + margin-bottom: 70px; +} + +#knowUsSection h3{ + color: #ffdd8d; + letter-spacing: 1px; + margin-bottom: 10px; +} + +.mediaContentBox{ + max-width: 350px; + margin: 0 auto; +} + +.mediaContentBox span{ + line-height: 18px; +} + +.pageTitle{ + letter-spacing: 2px; + margin: 0; + padding: 0; + border: 0; + outline: 0; + vertical-align: baseline; + background: #9a9a9a24; + color: #ffc12c; + text-transform: none; + line-height: 2.2em; + font-size: 36px; + width: 100%; + word-wrap: break-word; + transition: all .5s linear; +} + +.removeBackground{ + background: rgba(255, 34, 0, 0); +} + +.teamName{ + margin-bottom: 20px; + font-size: 18px; + line-height: 22px; + font-weight: 100!important; + color: #fff; +} + +.bigMarginTop{ + margin-top: 100px; + margin-bottom: 100px; +} + +.bountyPage{ + /*display: grid;*/ + /*grid-template-columns: 300px 1fr;*/ + margin-top: 65px; + width: 100%; + box-sizing: border-box; +} + + +.bountyCampaigns{ + display: block; + text-align: center; +} + +.bountyCampaigns span{ + padding: 10px 0; + width: 100%; + background-color: #484848; + margin: 1px 0; + cursor: pointer; + transition: all .5s linear; +} + +.bountyCampaigns span:hover{ + background-color: #313131; + color: #d5d5d5; + transition: all .5s linear; +} + +.selectedCampaign{ + background-color: #fec02c!important; + color: #232323!important; + transition: all .5s linear; +} + +.bountySide{ + width:70px; + display: inline-block; + vertical-align: top; + position: fixed; + background-color: #484848; + height: 100%; + z-index: 50; +} + +.bountyMain{ + padding: 10px 10px 100px 80px; + width: 100%; + /*min-width: 1200px;*/ + display: inline-block; + vertical-align: top; + box-sizing: border-box!important; +} + +.bountyCampaigns span{ + color:#f9f9f9; + font-size:20px; + border-bottom: solid 1px#3a3a3a; +} + +.bountyPage .register{ + display: block; + padding: 5px; +} + +.bountyPage .register .inputs{ + display: block; + margin-bottom: 10px; +} + +.bountyPage .register input{ + width: 100%; + background-color: #313131; + border: none; + border-radius: 5px; + margin: 5px 0; + color: #fff; + padding: 7px; +} + +.bountyPage .register button{ + background-color: #fec02c; + border: none; + margin: 0 auto; + border-radius: 5px; + padding: 10px; + font-size: 12px; + width: 80%; + display: block; + transition: all .5s linear; +} + +.bountyPage .register button:hover{ + background-color: #d1bd36; + transition: all .5s linear; +} + +.register h2{ + text-align: center; + letter-spacing: 0; + font-size: 16px; + text-transform: uppercase; +} + +.listElement{ + display: grid; + border:solid 1px #313131; + text-align: center; + padding: 0 5px; + box-sizing: border-box; + color: #777; + background-color: #171717d9; + transition: all .5s linear; +} + +.listElement:hover{ + background-color: #090909; + transition: all .5s linear; +} + +/*.listElement div{*/ + /*padding: 5px 0;*/ + /*border-right: solid 1px #313131;*/ +/*}*/ + +.listElement div:last-child{ + border:none +} + +.list .listElement:first-child{ + border-top:solid 1px #313131; +} + +.youtubeElement{ + grid-template-columns: 50px 1fr 120px 120px 80px 80px 100px 130px; +} + +.facebookElement{ + grid-template-columns: 50px 1fr 80px 80px 90px 120px 130px; +} + +.twitterElement{ + grid-template-columns: 50px 1fr 180px 80px 80px 90px 120px 130px; +} + +.telegramElement{ + grid-template-columns: 50px 1fr 150px 100px 100px 130px; +} + +.redditElement{ + grid-template-columns: 50px 1fr 200px 120px 90px 120px 130px; +} + +.webSiteElement{ + grid-template-columns: 50px 1fr 120px 120px 130px; +} + +.instagramElement{ + grid-template-columns: 50px 1fr 80px 90px 100px 130px; +} + +.listElement .title{ + text-align: left; + padding-left: 5px; +} + +.listHead{ + background-color: #1b1b1b; +} + +.score{ + color: #fec02c!important; +} + +.countDown{ + text-align: center; + background-color: #1b1b1b; + padding: 10px; +} + +.countDown span{ + width: 100%; + margin-top: -15px; +} + +.countDownTitle{ + text-align: center; + text-transform: capitalize; + color: #fff; + font-size: 18px; + line-height: 50px; +} + +.bountySideScroll{ + display: block; + background-color: #121012b3; +} + +.button{ + background-color: #fec02c; + border: none; + margin: 0 auto; + border-radius: 5px; + padding: 10px; + cursor:pointer; + font-size: 12px; + width: 80%; + display: block; + transition: all .5s linear; +} + +.button:hover{ + background-color: #d1bd36; + transition: all .5s linear; +} + +.buttonMargin{ + margin: 15px 0 10px 0; +} + +.infoBounty{ + display: grid; + grid-template-columns: 300px 1fr; +} + +.infoBountyPlus{ + grid-template-columns: 300px 1fr 300px; +} + +.campaignInfo{ + padding: 5px 10px; +} + +.infoLine{ + width: 100%; +} + +.infoLine b{ + color:#e2c98e!important +} + +#newsletterSection{ + display: block; + padding: 40px 0; +} + +.websiteButton{ + color: #262626; + text-align: center; + font-size: 14px; + background-color: #fff; + width: 200px; + margin: 0 auto; + font-weight: bolder; + line-height: 40px; + cursor:pointer; + border-radius: 25px; + margin-top: 40px; + transition: all 0.30s ease 0s; +} + +.websiteButton:hover{ + background-color: #fec02c; + transition: all 0.30s ease 0s; +} + +#newsletterContainer input{ + width: 100%; + max-width: 300px; + margin: 0 auto; + display: block; + border: solid 1px #464646; + border-radius: 5px; + background-color: #262626; + padding: 10px; + color: #fff; +} + +.newsletterText{ + text-align: center; + margin-bottom: 20px; +} + +.capitalize{ + text-transform: capitalize; +} + +#newsletterContainer .error{ + text-align: center; + color: #c7503e; + display: block; + margin-top: 8px; +} + +#newsletterContainer .success{ + text-align: center; + color: #57af51; +} + +.vuejs-countdown { + padding: 0; + margin: 0; +} + +.vuejs-countdown li p { + margin: 0; +} + +.vuejs-countdown li { + display: inline-block; + margin: 0 8px; + text-align: center; + position: relative; +} + +.vuejs-countdown .digit { + font-size: 32px; + font-weight: 600; + line-height: 1.4; + margin-bottom: 0; + color: #fec02c; +} + +.vuejs-countdown .text { + text-transform: uppercase; + margin-bottom: 0; + font-size: 10px; +} + +.finishedCount{ + color: #fec02c; + display: block; + margin-top: 0px; +} + +.bountySpinner svg{ + margin: 0 auto; + display: block; + width: 100px; + height: 100px; + margin-top: 120px; +} + +.bountySpinner{ + margin: 0 auto; + display: block; + width: 80px; + height: 80px; + fill: #fec02c; + margin-top: 120px; +} + +.submitLink{ + background-color: #1c1c1c; + padding: 10px 20px!important; +} + +.socialLinksNewsletter{ + display: block; + text-align: center; +} + +.socialLinksNewsletter .socialLinkWEBD{ + font-size: 26px; + padding: 10px; + cursor: pointer; + color: #fff; + margin-bottom: 10px; + display: inline-block; + transition: all 0.30s ease 0s; +} +.socialLinksNewsletter .socialLinkWEBD:hover{ + color: #fec02c; + transition: all 0.30s ease 0s; +} + +.disclaimer{ + text-align: center; + color: #fec02c; + font-size: 30px; + margin-bottom: 80px; +} + +.attention{ + color: #f20; +} + +.balanceExp .address{ + text-align: left; + padding-left: 10px; +} + +.disabledColors{ + background-color: #bdbdbd2e!important; + color: #585858!important; + cursor: auto!important; +} + +.disabledSlider { + /*background: #fec02c !important;*/ + background: linear-gradient(to right, #3e3623 29%, #422d2d 100%) !important; +} + +.countDownDesc{ + margin-top: 0px; + font-size: 12px; + text-transform: uppercase; + color: #fff; + letter-spacing: 3px; +} + +.balancesExplorer{ + width: 690px; + margin: 0 auto; + margin-bottom: 100px; +} + +.balancesExplorer .list{ + display:grid; + grid-template-columns: 50px 30px 450px 150px; + cursor: pointer; +} + +.balancesExplorer .listHead{ + display:grid; + grid-template-columns: 50px 30px 450px 150px; + margin-top: 30px; +} + +.blocksExplorer{ + width: 810px; +} + +.blocksExplorer .list, .blocksExplorer .listHead{ + grid-template-columns: 70px 30px 120px 450px 150px; +} + +.balancesExplorer .title{ + text-align: center; +} + +.balanceExp h1{ + margin-top: 100px; + text-align: center; +} + +.balanceExp path{ + fill: rgb(254, 192, 44)!important; +} + +.miner{ + cursor: pointer; + transition: all .5s linear; +} + +.miner:hover{ + -webkit-box-shadow: 0px 0px 48px -2px rgba(255,255,255,1); + -moz-box-shadow: 0px 0px 48px -2px rgba(255,255,255,1); + box-shadow: 0px 0px 48px -2px rgba(255,255,255,1); + transition: all .3s linear; +} + +.transactionInfo{ + width: 100%; + display: grid; + grid-template-columns: 100px 180px 1fr 100px; + margin: 10px 0; + background-color: #ffffff21; + text-align: center; + transition: all .5s linear; +} + +.transactionInfo:hover{ + background-color: #ffffff21; + transition: all .5s linear; +} + +.poolSectionContainer .transactionInfo{ + cursor: pointer; +} + +.poolSectionContainer .tableHeader{ + cursor: auto; +} + +.buttonSmall{ + cursor: pointer; + background-color: #6f6e6f; + color: #ffffff; + margin-right: 10px; + padding: 0 10px; + border-radius: 5px; +} + +.selected{ + background-color: #fec02c; + color: #000; +} + +.yellowText{ + color:#fec02c; +} + +.generalController{ + padding-top: 65px; + background-color: #2d2d2d; + border-bottom: solid 1px #444; + height: 250px; +} + +.selectedMinerInfo .address{ + font-size: 10px; + border-radius: 5px; + overflow: hidden; +} + +.titlePool{ + margin: 0; + padding: 0; + font-size: 12px; +} + +#footer{ + display: none; +} + +#yourPoolSection{ + padding-top: 63px; +} + +.poolContainer{ + padding-top: 25px; +} + +.mobileTableShow .title{ + line-height: 28px; + height: 28px; + overflow: hidden; +} + +.listElement div{ + line-height: 28px; +} + +.greenColor{ + color:#76d631; +} + +.oneLineText{ + display: block; +} + +.normalSpan{ + width: auto; + display: inline-block; +} + +.redColor{ + color:#ec7360; +} + +.marginSubtitle{ + margin-bottom: 20px; + text-transform: uppercase; + font-size: 22px; + letter-spacing: 1px; +} + +.poolSelect{ + background: transparent; + color: #fff; + font-size: 14px; + letter-spacing: 1px; + border: none; +} + +.poolSelect:focus{ + outline:none +} + +.noTransform{ + text-transform: none; +} + +.titleWebSite{ + font-size:40px; +} + +.mottoWebSite { + font-size: 20px; + margin-top: 0; + line-height: 0px; +} + +.Uppercase{ + text-transform: capitalize; +} + +.aboutTitle{ + margin-bottom: 90px!important; +} + +.statusMining{ + margin-top: 80px!important; + font-size: 16px!important; + letter-spacing: 1px; + color: #f3daa0; + margin-bottom: 0; +} + +.webSiteVerticalMiddle{ + margin: 0; + position: absolute; + top: 50%!important; + left: 50%!important; + transform: translate(-50%, -50%)!important; +} + +.noOverflow{ + overflow: hidden; +} + +.notificationsBox{ + cursor: pointer; +} + +.notificationsBox span{ + width: 100%!important; + line-height: 14px!important; + letter-spacing: 0!important; + font-family: sans-serif; +} + +.notificationsBox .notification-content{ + font-size: 14px; +} + +.notificationsBox .notification-title{ + font-size: 16px; + font-weight: bold; +} + +.walletListImage{ + width: 25px; + border-radius: 50%; +} + +.walletDescriptionImage{ + border-radius: 50%; + width: 60px; + margin: 0 auto; + margin-top: 10px; +} + +.showOnlyOnMobile{ + display: none; +} + +.smallFontAddress{ + display: none; +} + +#miningPoolController{ + border-bottom: solid 1px#ffffff; +} \ No newline at end of file diff --git a/public/assets/video/file.mp4 b/public/assets/video/file.mp4 new file mode 100755 index 00000000..77a9c0e9 Binary files /dev/null and b/public/assets/video/file.mp4 differ diff --git a/public/doc/WebDollar-White-Paper.pdf b/public/doc/WebDollar-White-Paper.pdf new file mode 100644 index 00000000..487f8051 Binary files /dev/null and b/public/doc/WebDollar-White-Paper.pdf differ diff --git a/public/logo-120.png b/public/logo-120.png deleted file mode 100644 index f5a580ff..00000000 Binary files a/public/logo-120.png and /dev/null differ diff --git a/public/logo-144.png b/public/logo-144.png deleted file mode 100644 index 622ee81c..00000000 Binary files a/public/logo-144.png and /dev/null differ diff --git a/public/logo-152.png b/public/logo-152.png deleted file mode 100644 index 197ed282..00000000 Binary files a/public/logo-152.png and /dev/null differ diff --git a/public/logo-192.png b/public/logo-192.png deleted file mode 100644 index 11fc8822..00000000 Binary files a/public/logo-192.png and /dev/null differ diff --git a/public/logo-256.png b/public/logo-256.png deleted file mode 100644 index 10e8600f..00000000 Binary files a/public/logo-256.png and /dev/null differ diff --git a/public/logo-384.png b/public/logo-384.png deleted file mode 100644 index 91619266..00000000 Binary files a/public/logo-384.png and /dev/null differ diff --git a/public/logo-48.png b/public/logo-48.png deleted file mode 100644 index a6c29b4a..00000000 Binary files a/public/logo-48.png and /dev/null differ diff --git a/public/logo-512.png b/public/logo-512.png deleted file mode 100644 index ac8f6862..00000000 Binary files a/public/logo-512.png and /dev/null differ diff --git a/public/res/404_files/404.png b/public/res/404_files/404.png deleted file mode 100644 index 621b3a8b..00000000 Binary files a/public/res/404_files/404.png and /dev/null differ diff --git a/public/res/404_files/cat.png b/public/res/404_files/cat.png deleted file mode 100644 index c8d129d7..00000000 Binary files a/public/res/404_files/cat.png and /dev/null differ diff --git a/public/res/404_files/cookie.png b/public/res/404_files/cookie.png deleted file mode 100644 index 0488384d..00000000 Binary files a/public/res/404_files/cookie.png and /dev/null differ diff --git a/public/res/404_files/custom-scripts.js b/public/res/404_files/custom-scripts.js deleted file mode 100644 index bb6ab856..00000000 --- a/public/res/404_files/custom-scripts.js +++ /dev/null @@ -1,177 +0,0 @@ -// JavaScript Document - -//prepare variables -var degree = 0; - -var maxtalk = 0; -var talkbubble = 1; - - -$(document).ready(function(){ - - //clear input text when clicked - inputTextFix(); - - - //count talk bubbles - $("div.bubble-options p.dog-bubble").each(function(){ - - maxtalk++; - - }); - -}); - -//function that implements a input text hotfix; remove if you don't like it -function inputTextFix(){ - - $("input[type='text'], input[type='password']").each(function(){ - - //each time a user clicks on a input field - $(this).click(function(){ - - //save the current value, if any - if($(this).attr("value")!=""){ - - $(this).attr("previous_value", $(this).attr("value")); - $(this).attr("value",""); - - } - - }); - - //on blur, if left empty, restore the saved value, if any - $(this).blur(function(){ - - if($(this).attr("value") == "") - $(this).attr("value",$(this).attr("previous_value")); - - }); - - }); - -} - -//function that handles the universal preloader positioning and alignment -function universalPreloader(){ - - var pre = $("#universal-preloader>div"); - - //centering function - jQuery.fn.center = function () { - this.css("position","absolute"); - this.css("top", (($(window).height() - this.outerHeight()) / 2) + "px"); - this.css("left", (($(window).width() - this.outerWidth()) / 2) + "px"); - return this; - } - - //center to the screen - pre.center(); - - //run each time user resizes window - $(window).resize(function() { - - pre.center(); - - }); - -} - -//function that disposes the universal preloader when everything is loaded; called on window.load event -function universalPreloaderRemove(){ - - var parentD = $("#universal-preloader"); - var pre = $("#universal-preloader>div"); - - var logo = $("#universal-preloader .universal-preloader-logo"); - var loader = $("#universal-preloader .universal-preloader-preloader"); - - //when the logo and ajax-loader fades out, fade out the curtain; when that completes, remove the universal preloader from the DOM - pre.delay(1000).animate({opacity:'0'},{duration:400, complete:function(){ - - parentD.animate({opacity:'0'},{duration:400, complete:function(){ - - parentD.remove(); - - }}); - - }}); - - -} - - -//function that handles the talking dog bubble animations -function dogTalk(){ - - var timer = setTimeout(function() { - - //change the bubble html code - $temp = "

"+$("div.bubble-options p.dog-bubble:nth-child("+talkbubble+")").html()+"

"; - $("div.dog-bubble").html($temp); - - //randomize bubble-option - //talkbubble = Math.floor((Math.random()*maxtalk)+1); - - //browse through bubble-options - if(talkbubbleimg"); - - //CSS3 - $planet.css({ 'transform' : 'rotate(' + degree + 'deg)'}); - // For webkit browsers: e.g. Chrome - $planet.css({ WebkitTransform : 'rotate(' + degree*2 + 'deg)'}); - // For Mozilla browser: e.g. Firefox - $planet.css({ '-moz-transform' : 'rotate(' + degree + 'deg)'}); - //IE9 - $planet.css({ '-ms-transform' : 'rotate(' + degree + 'deg)'}); - //Opera - $planet.css({ '-o-transform' : 'rotate(' + degree + 'deg)'}); - - // Animate rotation with a recursive call - var timer = setTimeout(function() { - degree-=0.1; - rotate(); - },10); - -} - -//function that handles dog movement animation -function dogRun(){ - - var dog = $("div.dog"); - - var timer2 = setTimeout(function() { - - if(dog.css("background-position") == "0px 0px") - dog.css({"background-position":"-80px -2px"}); - else - dog.css({"background-position":"0px 0px"}); - - dogRun(); - - }, 130); - -} diff --git a/public/res/404_files/images/bubble.png b/public/res/404_files/images/bubble.png deleted file mode 100644 index 9faa0336..00000000 Binary files a/public/res/404_files/images/bubble.png and /dev/null differ diff --git a/public/res/404_files/images/dog1.png b/public/res/404_files/images/dog1.png deleted file mode 100644 index 2e8da0bc..00000000 Binary files a/public/res/404_files/images/dog1.png and /dev/null differ diff --git a/public/res/404_files/images/search.png b/public/res/404_files/images/search.png deleted file mode 100644 index db2fd304..00000000 Binary files a/public/res/404_files/images/search.png and /dev/null differ diff --git a/public/res/404_files/images/sing-webfont.woff b/public/res/404_files/images/sing-webfont.woff deleted file mode 100644 index d7eebfcf..00000000 Binary files a/public/res/404_files/images/sing-webfont.woff and /dev/null differ diff --git a/public/res/404_files/images/sky-background.png b/public/res/404_files/images/sky-background.png deleted file mode 100644 index 9b381985..00000000 Binary files a/public/res/404_files/images/sky-background.png and /dev/null differ diff --git a/public/res/404_files/images/sky-shine.jpg b/public/res/404_files/images/sky-shine.jpg deleted file mode 100644 index 0e8ac1fd..00000000 Binary files a/public/res/404_files/images/sky-shine.jpg and /dev/null differ diff --git a/public/res/404_files/main.css b/public/res/404_files/main.css deleted file mode 100644 index bb922376..00000000 --- a/public/res/404_files/main.css +++ /dev/null @@ -1,652 +0,0 @@ -@charset "utf-8"; -/* CSS Document */ - -/* === Custom font === */ - -@font-face { - font-family: 'SingleSleeveRegular'; - src: url('images/sing-webfont.eot'); - src: url('images/sing-webfont.eot?#iefix') format('embedded-opentype'), - url('images/sing-webfont.woff') format('woff'), - url('images/sing-webfont.ttf') format('truetype'), - url('images/sing-webfont.svg#SingleSleeveRegular') format('svg'); - font-weight: normal; - font-style: normal; - -} - -/* === General stuff === */ - -html, body{ - - height:100%; - background:#186aa9 url(images/sky-background.png) top repeat-x; - overflow:hidden; - padding:0; - margin:0; - font-family:Arial, Helvetica, sans-serif; - -} - -a{ - - color:#3680b1; - -} - -img, a img{ - - border:0px none; - outline:none; - -} - -/* === Preloader === */ - -#universal-preloader{ - - position:fixed; - top:0px; - left:0px; - width:100%; - height:100%; - opacity:0.96; - background:#000 url(images/background.png) repeat; - z-index:999999999; - -} - -#universal-preloader>.preloader{ - - width:24px; - height:24px; - position:absolute; - top:50%; - left:50%; - text-align:center; - -} - -.universal-preloader-preloader{ - - position:absolute; - top:0px; - left:0px; - -} - -/* === Dog Changer === */ - -#dog-changer{ - - position:fixed; - top:20px; - left:-122px; - background:#fefefe; - border-radius:0px 5px 5px 0px; - box-shadow:0px 0px 0px 5px rgba(0,0,0,0.2); - -} - -#dog-changer .toggle{ - - height: 50px; - position: absolute; - right: -50px; - top: -3px; - width: 50px; - -} - -#dog-changer .toggle:hover{ - - cursor:pointer; - -} - -#dog-changer ul{ - - margin:0px; - padding:20px; - list-style: none; - -} - -.SkyHubLogo{ - padding-left:50px; - padding-top:270px; -} - -#dog-changer ul li{ - - width:80px; - overflow:hidden; - -} - -#dog-changer ul li a{ - - opacity:0.3; - -} - -/* === Main Section === */ - -#wrapper{ - - width:980px; - margin:0px auto; - position:relative; - height:100%; - background:url(images/sky-shine.jpg) top left no-repeat; - -} - -div.top-left{ - - position:absolute; - right:0px; - -} - -h1.not-found-text{ - - font-size:50px; - color:#fff; - font-family:"SingleSleeveRegular", cursive; - letter-spacing:2px; - margin-bottom:20px; - -} - -div.not-found-text{ - - position:absolute; - top:35px; - right:0px; - width:430px; - -} - -div.graphic{ - - position:absolute; - top:80px; - left:0px; - -} - -div.planet{ - - position:absolute; - bottom:-700px; - margin:0px auto; - z-index:0; - -} - -div.planet>img{ - - width:960px; - -} - -div.dog-wrapper{ - - position:absolute; - top:45px; - left:440px; - -} - -div.dog{ - - position:absolute; - bottom:0px; - left:0px; - width:80px; - height:80px; - z-index:999; - background:url(images/dog1.png) 0px 0px no-repeat; - -} - -div.search{ - - position:absolute; - top:145px; - right:0px; - width:340px; - background:#eeeeee; - box-shadow:1px 1px 0 #ffffff inset, 5px 5px 0px #3680b1; - color:#555555; - font-size:14px; - text-shadow:1px 1px 0 #ffffff; - border-radius:30px; - padding:10px; - z-index:999; - -} - -div.search input[type=submit]:hover{ - - background:#ffffff url(images/search.png) center center no-repeat; - cursor:pointer; - -} - -div.search input[type=submit]{ - - box-shadow:1px 1px 0 #ffffff inset, 5px 5px 0px #3680b1; - background:#eeeeee url(images/search.png) center center no-repeat; - border-radius:50px; - position:absolute; - top:0px; - right:380px; - width:50px; - height:40px; - border:none; - - -} - -div.search input[type=text]{ - - padding:0px 10px; - border:0px none; - background:none; - color:#999999; - width:300px; - height:20px; - -} - -div.top-menu{ - - position:relative; - top:200px; - right:0px; - color:#ffffff; - z-index:998; - -} - -div.top-menu a{ - - text-decoration:none; - color:#eeeeee; - margin:0px 5px; - font-size:12px; - -} - -div.top-menu a:hover{ - - color:#abd7fa; - -} - -div.dog-bubble{ - - font-size:14px; - line-height:1.5; - font-style:italic; - height:179px; - width:246px; - background:url(images/bubble.png) top center no-repeat; - padding:20px 0px; - position:absolute; - bottom:0px; - left:30px; - z-index:999; - opacity:0; - color:#555555; - font-size:14px; - text-shadow:1px 1px 0 #ffffff; - -} - -div.dog-bubble>p{ - - text-align:center; - padding:0px 35px; - -} - -div.bubble-options{ - - opacity:0; - visibility:hidden; - display:none; - -} - -/* === Responsive === */ - -/* #Small laptop screens -================================================== */ - - /* Note: Design for a width of 960px */ - - @media only screen and (max-width: 960px) { - - #wrapper{ - - width:600px; - background-image:none; - - } - - div.planet{ - - position:absolute; - bottom:-360px; - margin:0 auto 0 -280px; - z-index:0; - left:50%; - - } - - .SkyHubLogo{ - padding-left:00px; - padding-top:130px; - } - - div.planet>img{ - - width:560px; - - } - - div.dog-wrapper{ - - position:absolute; - top:45px; - left:250px; - - } - - div.graphic{ - - position:absolute; - top:50px; - left:40px; - - } - - div.top-left { - - position: absolute; - right: 0px; - top: -40px; - - } - - div.graphic>img{ - - width:60%; - - } - - div.graphic{ - - left: 0px; - position: absolute; - top: 20px; - - } - - div.not-found-text{ - - right:0px; - top:22px; - width:320px; - - } - - h1.not-found-text{ - - font-size:40px; - - } - - div.search{ - - right: 10px; - top: 105px; - width: 230px; - - } - - div.search input[type="text"]{ - - width:200px; - - } - - div.search input[type="submit"]{ - - right: 260px; - - } - - div.top-menu{ - - right: 5px; - top: 160px; - - } - - } - - -/* #Tablets and small screens -================================================== */ - - /* Note: Design for a width of 768px */ - - @media only screen and (max-width: 767px) { - - #wrapper{ - - width:400px; - background-image:none; - - } - - div.graphic>img{ - - width:40%; - - } - - .SkyHubLogo{ - padding-left:0px; - padding-top:90px; - } - .SkyHubLogo>img{ - width:160px; - } - - div.planet{ - - position:absolute; - bottom:-240px; - margin:0 auto 0 -180px; - z-index:0; - left:50%; - - } - - div.planet>img{ - - width:360px; - - } - - div.dog-wrapper{ - - position:absolute; - top:35px; - left:150px; - - } - - div.graphic{ - - position:absolute; - top:20px; - left:0px; - - } - - div.top-left { - - position: absolute; - right: 390px; - top: 170px; - - } - - div.search input[type="submit"] { - - right: 163px; - - } - - div.search { - - right: 10px; - top: 85px; - width: 130px; - - } - - h1.not-found-text { - - font-size: 26px; - - } - - div.not-found-text { - - right: -100px; - top: 33px; - width: 320px; - - } - - div.top-left { - - position: absolute; - right: 0; - top: -38px; - - } - - div.top-menu { - - font-size: 9px; - right: 5px; - top: 137px; - - } - - div.top-menu a{ - - font-size: 9px; - - } - - } - - -/* #Mobile phones -================================================== */ - - /* Note: Design for a width of 480px */ - - @media only screen and (max-width: 479px){ - - #wrapper{ - - width:320px; - background-image:none; - - } - - div.graphic>img{ - - width:25%; - - } - - .SkyHubLogo{ - padding-left:0px; - padding-top:30px; - } - - div.planet{ - - position:absolute; - bottom:-130px; - margin:0 auto 0 -100px; - z-index:0; - left:50%; - - } - - div.planet>img{ - - width:200px; - - } - - div.dog-wrapper { - - left: 70px; - position: absolute; - top: 35px; - - } - - div.search input[type="text"] { - - height: 10px; - padding: 0 10px; - - } - - div.search input[type="submit"] { - - height: 30px; - width: 40px; - - } - - div.search input[type="submit"] { - - right: 170px; - - } - - div.search { - - width: 140px; - - } - - div.top-menu { - - font-size: 7px; - top: 123px; - - } - - div.top-menu a{ - - font-size: 7px; - - } - - } \ No newline at end of file diff --git a/public/res/404_files/planet.png b/public/res/404_files/planet.png deleted file mode 100644 index 234da2ac..00000000 Binary files a/public/res/404_files/planet.png and /dev/null differ diff --git a/public/res/components/flags.css b/public/res/components/flags.css deleted file mode 100644 index aead6b70..00000000 --- a/public/res/components/flags.css +++ /dev/null @@ -1,996 +0,0 @@ -.flag { - float: left; - padding: 0 !important; - margin: 0 5px 0 0; - width: 16px; - height: 11px; - background: url(https://raw.githubusercontent.com/marghoobsuleman/ms-Dropdown/master/images/msdropdown/icons/flagssprite_small.png) no-repeat; -} - -.flag.ad { - background-position: 0 0 -} - -.flag.ae { - background-position: 0 -11px -} - -.flag.af { - background-position: 0 -22px -} - -.flag.ag { - background-position: 0 -33px -} - -.flag.ai { - background-position: 0 -44px -} - -.flag.al { - background-position: 0 -55px -} - -.flag.am { - background-position: 0 -66px -} - -.flag.an { - background-position: 0 -77px -} - -.flag.ao { - background-position: 0 -88px -} - -.flag.ar { - background-position: 0 -99px -} - -.flag.as { - background-position: 0 -110px -} - -.flag.at { - background-position: 0 -121px -} - -.flag.au { - background-position: 0 -132px -} - -.flag.aw { - background-position: 0 -143px -} - -.flag.ax { - background-position: 0 -154px -} - -.flag.az { - background-position: 0 -165px -} - -.flag.ba { - background-position: 0 -176px -} - -.flag.bb { - background-position: 0 -187px -} - -.flag.bd { - background-position: 0 -198px -} - -.flag.be { - background-position: 0 -209px -} - -.flag.bf { - background-position: 0 -220px -} - -.flag.bg { - background-position: 0 -231px -} - -.flag.bh { - background-position: 0 -242px -} - -.flag.bi { - background-position: 0 -253px -} - -.flag.bj { - background-position: 0 -264px -} - -.flag.bm { - background-position: 0 -275px -} - -.flag.bn { - background-position: 0 -286px -} - -.flag.bo { - background-position: 0 -297px -} - -.flag.br { - background-position: 0 -308px -} - -.flag.bs { - background-position: 0 -319px -} - -.flag.bt { - background-position: 0 -330px -} - -.flag.bv { - background-position: 0 -341px -} - -.flag.bw { - background-position: 0 -352px -} - -.flag.by { - background-position: 0 -363px -} - -.flag.bz { - background-position: 0 -374px -} - -.flag.ca { - background-position: 0 -385px -} - -.flag.catalonia { - background-position: 0 -396px -} - -.flag.cc { - background-position: 0 -407px -} - -.flag.cd { - background-position: 0 -418px -} - -.flag.cf { - background-position: 0 -429px -} - -.flag.cg { - background-position: 0 -440px -} - -.flag.ch { - background-position: 0 -451px -} - -.flag.ci { - background-position: 0 -462px -} - -.flag.ck { - background-position: 0 -473px -} - -.flag.cl { - background-position: 0 -484px -} - -.flag.cm { - background-position: 0 -495px -} - -.flag.cn { - background-position: 0 -506px -} - -.flag.co { - background-position: 0 -517px -} - -.flag.cu { - background-position: 0 -528px -} - -.flag.cr { - background-position: 0 -539px -} - -.flag.cs { - background-position: 0 -550px -} - -.flag.cv { - background-position: 0 -561px -} - -.flag.cx { - background-position: 0 -572px -} - -.flag.cy { - background-position: -16px 0 -} - -.flag.cz { - background-position: -16px -11px -} - -.flag.de { - background-position: -16px -22px -} - -.flag.dj { - background-position: -16px -33px -} - -.flag.dk { - background-position: -16px -44px -} - -.flag.dm { - background-position: -16px -55px -} - -.flag.do { - background-position: -16px -66px -} - -.flag.dz { - background-position: -16px -77px -} - -.flag.ec { - background-position: -16px -88px -} - -.flag.ee { - background-position: -16px -99px -} - -.flag.eg { - background-position: -16px -110px -} - -.flag.eh { - background-position: -16px -121px -} - -.flag.england { - background-position: -16px -132px -} - -.flag.er { - background-position: -16px -143px -} - -.flag.es { - background-position: -16px -154px -} - -.flag.et { - background-position: -16px -165px -} - -.flag.eu { - background-position: -16px -176px -} - -.flag.fam { - background-position: -16px -187px -} - -.flag.fi { - background-position: -16px -198px -} - -.flag.fj { - background-position: -16px -209px -} - -.flag.fk { - background-position: -16px -220px -} - -.flag.fm { - background-position: -16px -231px -} - -.flag.fo { - background-position: -16px -242px -} - -.flag.fr { - background-position: -16px -253px -} - -.flag.ga { - background-position: -16px -264px -} - -.flag.gb { - background-position: -16px -275px -} - -.flag.gd { - background-position: -16px -286px -} - -.flag.ge { - background-position: -16px -297px -} - -.flag.gf { - background-position: -16px -308px -} - -.flag.gh { - background-position: -16px -319px -} - -.flag.gi { - background-position: -16px -330px -} - -.flag.gl { - background-position: -16px -341px -} - -.flag.gm { - background-position: -16px -352px -} - -.flag.gn { - background-position: -16px -363px -} - -.flag.gp { - background-position: -16px -374px -} - -.flag.gq { - background-position: -16px -385px -} - -.flag.gr { - background-position: -16px -396px -} - -.flag.gs { - background-position: -16px -407px -} - -.flag.gt { - background-position: -16px -418px -} - -.flag.gu { - background-position: -16px -429px -} - -.flag.gw { - background-position: -16px -440px -} - -.flag.gy { - background-position: -16px -451px -} - -.flag.hk { - background-position: -16px -462px -} - -.flag.hm { - background-position: -16px -473px -} - -.flag.hn { - background-position: -16px -484px -} - -.flag.hr { - background-position: -16px -495px -} - -.flag.ht { - background-position: -16px -506px -} - -.flag.hu { - background-position: -16px -517px -} - -.flag.id { - background-position: -16px -528px -} - -.flag.ie { - background-position: -16px -539px -} - -.flag.il { - background-position: -16px -550px -} - -.flag.in { - background-position: -16px -561px -} - -.flag.io { - background-position: -16px -572px -} - -.flag.iq { - background-position: -32px 0 -} - -.flag.ir { - background-position: -32px -11px -} - -.flag.is { - background-position: -32px -22px -} - -.flag.it { - background-position: -32px -33px -} - -.flag.jm { - background-position: -32px -44px -} - -.flag.jo { - background-position: -32px -55px -} - -.flag.jp { - background-position: -32px -66px -} - -.flag.ke { - background-position: -32px -77px -} - -.flag.kg { - background-position: -32px -88px -} - -.flag.kh { - background-position: -32px -99px -} - -.flag.ki { - background-position: -32px -110px -} - -.flag.km { - background-position: -32px -121px -} - -.flag.kn { - background-position: -32px -132px -} - -.flag.kp { - background-position: -32px -143px -} - -.flag.kr { - background-position: -32px -154px -} - -.flag.kw { - background-position: -32px -165px -} - -.flag.ky { - background-position: -32px -176px -} - -.flag.kz { - background-position: -32px -187px -} - -.flag.la { - background-position: -32px -198px -} - -.flag.lb { - background-position: -32px -209px -} - -.flag.lc { - background-position: -32px -220px -} - -.flag.li { - background-position: -32px -231px -} - -.flag.lr { - background-position: -32px -242px -} - -.flag.lk { - background-position: -32px -253px -} - -.flag.ls { - background-position: -32px -264px -} - -.flag.lt { - background-position: -32px -275px -} - -.flag.lu { - background-position: -32px -286px -} - -.flag.lv { - background-position: -32px -297px -} - -.flag.ly { - background-position: -32px -308px -} - -.flag.ma { - background-position: -32px -319px -} - -.flag.mc { - background-position: -32px -330px -} - -.flag.md { - background-position: -32px -341px -} - -.flag.me { - background-position: -32px -352px -} - -.flag.mg { - background-position: -32px -363px -} - -.flag.mh { - background-position: -32px -374px -} - -.flag.mk { - background-position: -32px -385px -} - -.flag.ml { - background-position: -32px -396px -} - -.flag.mm { - background-position: -32px -407px -} - -.flag.mn { - background-position: -32px -418px -} - -.flag.mo { - background-position: -32px -429px -} - -.flag.mp { - background-position: -32px -440px -} - -.flag.mq { - background-position: -32px -451px -} - -.flag.mr { - background-position: -32px -462px -} - -.flag.ms { - background-position: -32px -473px -} - -.flag.mt { - background-position: -32px -484px -} - -.flag.mu { - background-position: -32px -495px -} - -.flag.mv { - background-position: -32px -506px -} - -.flag.mw { - background-position: -32px -517px -} - -.flag.mx { - background-position: -32px -528px -} - -.flag.my { - background-position: -32px -539px -} - -.flag.mz { - background-position: -32px -550px -} - -.flag.na { - background-position: -32px -561px -} - -.flag.nc { - background-position: -32px -572px -} - -.flag.ne { - background-position: -48px 0 -} - -.flag.nf { - background-position: -48px -11px -} - -.flag.ng { - background-position: -48px -22px -} - -.flag.ni { - background-position: -48px -33px -} - -.flag.nl { - background-position: -48px -44px -} - -.flag.no { - background-position: -48px -55px -} - -.flag.np { - background-position: -48px -66px -} - -.flag.nr { - background-position: -48px -77px -} - -.flag.nu { - background-position: -48px -88px -} - -.flag.nz { - background-position: -48px -99px -} - -.flag.om { - background-position: -48px -110px -} - -.flag.pa { - background-position: -48px -121px -} - -.flag.pe { - background-position: -48px -132px -} - -.flag.pf { - background-position: -48px -143px -} - -.flag.pg { - background-position: -48px -154px -} - -.flag.ph { - background-position: -48px -165px -} - -.flag.pk { - background-position: -48px -176px -} - -.flag.pl { - background-position: -48px -187px -} - -.flag.pm { - background-position: -48px -198px -} - -.flag.pn { - background-position: -48px -209px -} - -.flag.pr { - background-position: -48px -220px -} - -.flag.ps { - background-position: -48px -231px -} - -.flag.pt { - background-position: -48px -242px -} - -.flag.pw { - background-position: -48px -253px -} - -.flag.py { - background-position: -48px -264px -} - -.flag.qa { - background-position: -48px -275px -} - -.flag.re { - background-position: -48px -286px -} - -.flag.ro { - background-position: -48px -297px -} - -.flag.rs { - background-position: -48px -308px -} - -.flag.ru { - background-position: -48px -319px -} - -.flag.rw { - background-position: -48px -330px -} - -.flag.sa { - background-position: -48px -341px -} - -.flag.sb { - background-position: -48px -352px -} - -.flag.sc { - background-position: -48px -363px -} - -.flag.scotland { - background-position: -48px -374px -} - -.flag.sd { - background-position: -48px -385px -} - -.flag.se { - background-position: -48px -396px -} - -.flag.sg { - background-position: -48px -407px -} - -.flag.sh { - background-position: -48px -418px -} - -.flag.si { - background-position: -48px -429px -} - -.flag.sj { - background-position: -48px -440px -} - -.flag.sk { - background-position: -48px -451px -} - -.flag.sl { - background-position: -48px -462px -} - -.flag.sm { - background-position: -48px -473px -} - -.flag.sn { - background-position: -48px -484px -} - -.flag.so { - background-position: -48px -495px -} - -.flag.sr { - background-position: -48px -506px -} - -.flag.st { - background-position: -48px -517px -} - -.flag.sv { - background-position: -48px -528px -} - -.flag.sy { - background-position: -48px -539px -} - -.flag.sz { - background-position: -48px -550px -} - -.flag.tc { - background-position: -48px -561px -} - -.flag.td { - background-position: -48px -572px -} - -.flag.tf { - background-position: -64px 0 -} - -.flag.tg { - background-position: -64px -11px -} - -.flag.th { - background-position: -64px -22px -} - -.flag.tj { - background-position: -64px -33px -} - -.flag.tk { - background-position: -64px -44px -} - -.flag.tl { - background-position: -64px -55px -} - -.flag.tm { - background-position: -64px -66px -} - -.flag.tn { - background-position: -64px -77px -} - -.flag.to { - background-position: -64px -88px -} - -.flag.tr { - background-position: -64px -99px -} - -.flag.tt { - background-position: -64px -110px -} - -.flag.tv { - background-position: -64px -121px -} - -.flag.tw { - background-position: -64px -132px -} - -.flag.tz { - background-position: -64px -143px -} - -.flag.ua { - background-position: -64px -154px -} - -.flag.ug { - background-position: -64px -165px -} - -.flag.um { - background-position: -64px -176px -} - -.flag.us { - background-position: -64px -187px -} - -.flag.uy { - background-position: -64px -198px -} - -.flag.uz { - background-position: -64px -209px -} - -.flag.va { - background-position: -64px -220px -} - -.flag.vc { - background-position: -64px -231px -} - -.flag.ve { - background-position: -64px -242px -} - -.flag.vg { - background-position: -64px -253px -} - -.flag.vi { - background-position: -64px -264px -} - -.flag.vn { - background-position: -64px -275px -} - -.flag.vu { - background-position: -64px -286px -} - -.flag.wales { - background-position: -64px -297px -} - -.flag.wf { - background-position: -64px -308px -} - -.flag.ws { - background-position: -64px -319px -} - -.flag.ye { - background-position: -64px -330px -} - -.flag.yt { - background-position: -64px -341px -} - -.flag.za { - background-position: -64px -352px -} - -.flag.zm { - background-position: -64px -363px -} - -.flag.zw { - background-position: -64px -374px -} diff --git a/public/res/components/react-draft-wysiwyg.css b/public/res/components/react-draft-wysiwyg.css deleted file mode 100644 index 0dcafa45..00000000 --- a/public/res/components/react-draft-wysiwyg.css +++ /dev/null @@ -1,1200 +0,0 @@ -.rdw-option-wrapper { - border: 1px solid #e5e6e7; - padding: 5px; - min-width: 25px; - height: 20px; - border-radius: 2px; - margin: 0 4px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - cursor: pointer; - background: white; - text-transform: capitalize; -} -.rdw-option-wrapper:hover { - box-shadow: 1px 1px 0px #BFBDBD; -} -.rdw-option-wrapper:active { - box-shadow: 1px 1px 0px #BFBDBD inset; -} -.rdw-option-active { - box-shadow: 1px 1px 0px #BFBDBD inset; -} -.rdw-option-disabled { - opacity: 0.3; - cursor: default; -} -.rdw-dropdown-wrapper { - height: 30px; - background: white; - cursor: pointer; - border: 1px solid #cac9ce; - border-radius: 2px; - margin: 0 3px; - text-transform: capitalize; - background: white; -} -.rdw-dropdown-wrapper:focus { - outline: none; -} -.rdw-dropdown-wrapper:hover { - box-shadow: 1px 1px 0px #BFBDBD; - background-color: #FFFFFF; -} -.rdw-dropdown-wrapper:active { - box-shadow: 1px 1px 0px #BFBDBD inset; -} -.rdw-dropdown-carettoopen { - height: 0px; - width: 0px; - position: absolute; - top: 35%; - right: 10%; - border-top: 6px solid black; - border-left: 5px solid transparent; - border-right: 5px solid transparent; -} -.rdw-dropdown-carettoclose { - height: 0px; - width: 0px; - position: absolute; - top: 35%; - right: 10%; - border-bottom: 6px solid black; - border-left: 5px solid transparent; - border-right: 5px solid transparent; -} -.rdw-dropdown-selectedtext { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - position: relative; - height: 100%; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 0 5px; -} -.rdw-dropdown-optionwrapper { - z-index: 100; - position: relative; - border: 1px solid #cac9ce; - width: 98%; - background: white; - border-radius: 2px; - margin: 0; - padding: 0; - max-height: 250px; - overflow-y: scroll; -} -.rdw-dropdown-optionwrapper:hover { - box-shadow: 1px 1px 0px #BFBDBD; - background-color: #FFFFFF; -} -.rdw-dropdownoption-default { - min-height: 25px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 0 5px; -} -.rdw-dropdownoption-highlighted { - background: #cac9ce; -} -.rdw-dropdownoption-active { - background: #f5f5f5; -} -.rdw-dropdownoption-disabled { - opacity: 0.3; - cursor: default; -} -.rdw-inline-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin-bottom: 6px; -} -.rdw-inline-dropdown { - width: 50px; -} -.rdw-inline-dropdownoption { - height: 40px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-block-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; -} -.rdw-block-dropdown { - width: 110px; -} -.rdw-fontsize-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; -} -.rdw-fontsize-dropdown { - min-width: 40px; -} -.rdw-fontsize-option { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-fontfamily-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; -} -.rdw-fontfamily-dropdown { - width: 115px; -} -.rdw-fontfamily-placeholder { - white-space: nowrap; - max-width: 90px; - overflow: hidden; - text-overflow: ellipsis; -} -.rdw-fontfamily-optionwrapper { - width: 140px; -} -.rdw-list-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; -} -.rdw-list-dropdown { - width: 50px; - z-index: 90; -} -.rdw-list-dropdownOption { - height: 40px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-text-align-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; -} -.rdw-text-align-dropdown { - width: 50px; - z-index: 90; -} -.rdw-text-align-dropdownOption { - height: 40px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-right-aligned-block { - text-align: right; -} -.rdw-left-aligned-block { - text-align: left; -} -.rdw-center-aligned-block { - text-align: center; -} -.rdw-justify-aligned-block { - text-align: justify; -} -.rdw-right-aligned-block > div { - display: inline; -} -.rdw-left-aligned-block > div { - display: inline; -} -.rdw-center-aligned-block > div { - display: inline; -} -.rdw-justify-aligned-block > div { - display: inline; -} -.rdw-colorpicker-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; - position: relative; -} -.rdw-colorpicker-modal { - position: absolute; - top: 35px; - left: 5px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 175px; - height: 175px; - border: 1px solid #cac9ce; - padding: 15px; - border-radius: 2px; - z-index: 100; - background: white; - box-shadow: 3px 3px 5px #BFBDBD; -} -.rdw-colorpicker-modal-header { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding-bottom: 5px; -} -.rdw-colorpicker-modal-style-label { - font-size: 15px; - width: 50%; - text-align: center; - cursor: pointer; - padding: 0 10px 5px; -} -.rdw-colorpicker-modal-style-label-active { - border-bottom: 2px solid #0a66b7; -} -.rdw-colorpicker-modal-options { - margin: 5px auto; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - width: 100%; - height: 100%; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - overflow: scroll; -} -.rdw-colorpicker-cube { - width: 22px; - height: 22px; - border: 1px solid #cac9ce; -} -.rdw-colorpicker-option { - margin: 3px; - padding: 0; - min-height: 20px; - border: none; - width: 22px; - height: 22px; - min-width: 22px; - box-shadow: 1px 2px 1px #BFBDBD inset; -} -.rdw-colorpicker-option:hover { - box-shadow: 1px 2px 1px #BFBDBD; -} -.rdw-colorpicker-option:active { - box-shadow: -1px -2px 1px #BFBDBD; -} -.rdw-colorpicker-option-active { - box-shadow: 0px 0px 2px 2px #BFBDBD; -} -.rdw-link-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; - position: relative; -} -.rdw-link-dropdown { - width: 50px; -} -.rdw-link-dropdownOption { - height: 40px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-link-dropdownPlaceholder { - margin-left: 8px; -} -.rdw-link-modal { - position: absolute; - top: 35px; - left: 5px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 235px; - height: 205px; - border: 1px solid #cac9ce; - padding: 15px; - border-radius: 2px; - z-index: 100; - background: white; - box-shadow: 3px 3px 5px #BFBDBD; -} -.rdw-link-modal-label { - font-size: 15px; -} -.rdw-link-modal-input { - margin-top: 5px; - border-radius: 2px; - border: 1px solid #cac9ce; - height: 25px; - margin-bottom: 15px; - padding: 0 5px; -} -.rdw-link-modal-input:focus { - outline: none; -} -.rdw-link-modal-buttonsection { - margin: 0 auto; -} -.rdw-link-modal-target-option { - margin-bottom: 20px; -} -.rdw-link-modal-target-option > span { - margin-left: 5px; -} -.rdw-link-modal-btn { - margin-left: 10px; - width: 75px; - height: 30px; - border: 1px solid #cac9ce; - border-radius: 2px; - cursor: pointer; - background: white; - text-transform: capitalize; -} -.rdw-link-modal-btn:hover { - box-shadow: 1px 1px 0px #BFBDBD; -} -.rdw-link-modal-btn:active { - box-shadow: 1px 1px 0px #BFBDBD inset; -} -.rdw-link-modal-btn:focus { - outline: none !important; -} -.rdw-link-modal-btn:disabled { - background: #ece9e9; -} -.rdw-link-dropdownoption { - height: 40px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-history-dropdown { - width: 50px; -} -.rdw-embedded-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; - position: relative; -} -.rdw-embedded-modal { - position: absolute; - top: 35px; - left: 5px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 235px; - height: 180px; - border: 1px solid #cac9ce; - padding: 15px; - border-radius: 2px; - z-index: 100; - background: white; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - box-shadow: 3px 3px 5px #BFBDBD; -} -.rdw-embedded-modal-header { - font-size: 15px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.rdw-embedded-modal-header-option { - width: 50%; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.rdw-embedded-modal-header-label { - width: 95px; - border: 1px solid #cac9ce; - margin-top: 5px; - background: #6EB8D4; - border-bottom: 2px solid #0a66b7; -} -.rdw-embedded-modal-link-section { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.rdw-embedded-modal-link-input { - width: 95%; - height: 35px; - margin: 10px 0; - border: 1px solid #cac9ce; - border-radius: 2px; - font-size: 15px; - padding: 0 5px; -} -.rdw-embedded-modal-link-input:focus { - outline: none; -} -.rdw-embedded-modal-btn-section { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-embedded-modal-btn { - margin: 0 3px; - width: 75px; - height: 30px; - border: 1px solid #cac9ce; - border-radius: 2px; - cursor: pointer; - background: white; - text-transform: capitalize; -} -.rdw-embedded-modal-btn:hover { - box-shadow: 1px 1px 0px #BFBDBD; -} -.rdw-embedded-modal-btn:active { - box-shadow: 1px 1px 0px #BFBDBD inset; -} -.rdw-embedded-modal-btn:focus { - outline: none !important; -} -.rdw-embedded-modal-btn:disabled { - background: #ece9e9; -} -.rdw-embedded-modal-size { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - margin: 8px 0; - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; -} -.rdw-embedded-modal-size-input { - width: 45%; - height: 20px; - border: 1px solid #cac9ce; - border-radius: 2px; - font-size: 12px; -} -.rdw-embedded-modal-size-input:focus { - outline: none; -} -.rdw-emoji-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; - position: relative; -} -.rdw-emoji-modal { - overflow: auto; - position: absolute; - top: 35px; - left: 5px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - width: 235px; - height: 180px; - border: 1px solid #cac9ce; - padding: 15px; - border-radius: 2px; - z-index: 100; - background: white; - box-shadow: 3px 3px 5px #BFBDBD; -} -.rdw-emoji-icon { - margin: 2.5px; - height: 24px; - width: 24px; - cursor: pointer; - font-size: 22px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; -} -.rdw-spinner { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - height: 100%; - width: 100%; -} -.rdw-spinner > div { - width: 12px; - height: 12px; - background-color: #333; - - border-radius: 100%; - display: inline-block; - -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both; - animation: sk-bouncedelay 1.4s infinite ease-in-out both; -} -.rdw-spinner .rdw-bounce1 { - -webkit-animation-delay: -0.32s; - animation-delay: -0.32s; -} -.rdw-spinner .rdw-bounce2 { - -webkit-animation-delay: -0.16s; - animation-delay: -0.16s; -} -@-webkit-keyframes sk-bouncedelay { - 0%, 80%, 100% { -webkit-transform: scale(0) } - 40% { -webkit-transform: scale(1.0) } -} -@keyframes sk-bouncedelay { - 0%, 80%, 100% { - -webkit-transform: scale(0); - transform: scale(0); - } 40% { - -webkit-transform: scale(1.0); - transform: scale(1.0); - } -} -.rdw-image-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; - position: relative; -} -.rdw-image-modal { - position: absolute; - top: 35px; - left: 5px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - width: 235px; - height: 200px; - border: 1px solid #cac9ce; - padding: 15px; - border-radius: 2px; - z-index: 100; - background: white; - box-shadow: 3px 3px 5px #BFBDBD; -} -.rdw-image-modal-header { - font-size: 15px; - margin: 10px 0; - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.rdw-image-modal-header-option { - width: 50%; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; -} -.rdw-image-modal-header-label { - width: 80px; - background: #cac9ce; - border: 1px solid #cac9ce; - margin-top: 5px; -} -.rdw-image-modal-header-label-highlighted { - background: #6EB8D4; - border-bottom: 2px solid #0a66b7; -} -.rdw-image-modal-upload-option { - height: 65px; - width: 100%; - color: gray; - cursor: pointer; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - border: none; - font-size: 15px; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - background-color: #cac9ce; - outline: 2px dashed gray; - outline-offset: -10px; - margin: 10px 0; -} -.rdw-image-modal-upload-option-highlighted { - outline: 2px dashed #0a66b7; -} -.rdw-image-modal-upload-option-label { - cursor: pointer; - height: 100%; - width: 100%; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - padding: 15px; -} -.rdw-image-modal-upload-option-label span{ - padding: 0 20px; -} -.rdw-image-modal-upload-option-input { - width: 0.1px; - height: 0.1px; - opacity: 0; - overflow: hidden; - position: absolute; - z-index: -1; -} -.rdw-image-modal-url-section { - display: block; -} -.rdw-image-modal-url-input { - width: 95%; - height: 35px; - margin: 30px 0 20px; - border: 1px solid #cac9ce; - border-radius: 2px; - font-size: 15px; - padding: 0 5px; -} -.rdw-image-modal-btn-section { - margin: 10px auto 0; -} -.rdw-image-modal-url-input:focus { - outline: none; -} -.rdw-image-modal-btn { - margin: 0 5px; - width: 75px; - height: 30px; - border: 1px solid #cac9ce; - border-radius: 2px; - cursor: pointer; - background: white; - text-transform: capitalize; -} -.rdw-image-modal-btn:hover { - box-shadow: 1px 1px 0px #BFBDBD; -} -.rdw-image-modal-btn:active { - box-shadow: 1px 1px 0px #BFBDBD inset; -} -.rdw-image-modal-btn:focus { - outline: none !important; -} -.rdw-image-modal-btn:disabled { - background: #ece9e9; -} -.rdw-image-modal-spinner { - position: absolute; - top: -3px; - left: 0; - width: 100%; - height: 100%; - opacity: 0.5; -} -.rdw-remove-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; - position: relative; -} -.rdw-history-wrapper { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - margin-bottom: 6px; -} -.rdw-history-dropdownoption { - height: 40px; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-history-dropdown { - width: 50px; -} -.rdw-link-decorator-wrapper { - position: relative; -} -.rdw-link-decorator-icon { - position: absolute; - left: 40%; - top: 0; - cursor: pointer; - background-color: white; -} -.rdw-mention-link { - text-decoration: none; - color: #1236ff; - background-color: #f0fbff; - padding: 1px 2px; - border-radius: 2px; -} -.rdw-suggestion-wrapper { - position: relative; -} -.rdw-suggestion-dropdown { - position: absolute; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -ms-flex-direction: column; - flex-direction: column; - border: 1px solid #cac9ce; - min-width: 100px; - max-height: 150px; - overflow: auto; - background: white; - z-index: 100; -} -.rdw-suggestion-option { - padding: 7px 5px; - border-bottom: 1px solid #cac9ce; - -webkit-touch-callout: none; /* iOS Safari */ - -webkit-user-select: none; /* Safari */ - -khtml-user-select: none; /* Konqueror HTML */ - -moz-user-select: none; /* Firefox */ - -ms-user-select: none; /* Internet Explorer/Edge */ - user-select: none; /* Non-prefixed version, currently */ -} -.rdw-suggestion-option-active { - background-color: #cac9ce; -} -.rdw-hashtag-link { - text-decoration: none; - color: #1236ff; - background-color: #f0fbff; - padding: 1px 2px; - border-radius: 2px; -} -.rdw-image-alignment-options-popup { - position: absolute;; - background: white; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - padding: 5px 2px; - border-radius: 2px; - border: 1px solid #cac9ce; - width: 105px; - cursor: pointer; - z-index: 100; -} -.rdw-alignment-option-left { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; -} -.rdw-image-alignment-option { - height: 15px; - width: 15px; - min-width: 15px; -} -.rdw-image-alignment { - position: relative; -} -.rdw-image-imagewrapper { - position: relative; -} -.rdw-image-center { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; -} -.rdw-image-left { - display: -webkit-box; - display: -ms-flexbox; - display: flex; -} -.rdw-image-right { - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; -} -.rdw-image-alignment-options-popup-right { - right: 0; -} -.rdw-editor-main { - height: 100%; - width: 100%; - overflow: auto; - box-sizing: border-box; -} -.rdw-editor-toolbar { - padding: 6px 5px 0; - border-radius: 2px; - border: 1px solid #cac9ce; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - width: 100%; - background: white; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - font-size: 15px; - margin-bottom: 5px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.public-DraftStyleDefault-block { - margin: 1em 0; -} -.rdw-editor-wrapper:focus { - outline: none; -} - - -/* - -https://cdn.rawgit.com/jpuri/react-draft-wysiwyg/master/docs/src/components/Demo/styles.css - - */ - -.demo-root { - width: 100%; - display: flex; - font-family: Roboto; - align-items: center; - flex-direction: column; - justify-content: center; -} -.demo-label { - display: block; - font-size: 20px; - font-weight: 500; - margin: 50px 0 25px; -} -.demo-label-high { - display: block; - font-size: 20px; - font-weight: 500; - margin: 50px 0 90px; -} -.demo-subLabel { - margin-bottom: 20px; -} -.demo-editorSection { - display: flex; - justify-content: space-between; -} -.demo-wrapper { - display: block; - margin: 15px; - margin-bottom: 25px; -} -.demo-wrapper-wide { - width: 810px; - display: block; - margin-bottom: 50px; - height: 355px; -} -.demo-wrapper-medium { - width: 650px; - display: block; - margin-bottom: 50px; - height: 300px; -} -.demo-editor { - height: 200px; - border: 1px solid #cac9ce; - padding: 5px; - border-radius: 2px; - resize: vertical; - overflow:auto; - - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - - -webkit-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; -} -.demo-editorWrapper { -} -.demo-toolbar { - width: 100%; -} -.demo-content { - border: 1px solid #cac9ce; - padding: 5px; - border-radius: 5px; - width: 400px; - border-radius: 2px; - height: 425px; - margin-left: 30px; - resize: none; - margin-top: 127px; - height: 355px; -} -.demo-toolbar-absolute { - position: absolute; - top: -40px; - width: 550px; - border-radius: 3px; - background: #f3f3f3; - border: 1px solid #e3e3e3; -} -.demo-toolbar-absolute-high { - position: absolute; - top: -80px; - width: 550px; - border-radius: 3px; - background: #f3f3f3; - border: 1px solid #e3e3e3; -} -.demo-editor-plain { - height: 80%; - border-width: 0px; -} -.demo-editor-embedded { - height: 90%; - border-width: 0px; -} -.demo-wrapper-relative { - width: 715px; - display: block; - position: relative; - margin-bottom: 50px; - height: 200px; -} -.demo-wrapper-relative-long { - width: 715px; - display: block; - position: relative; - margin-bottom: 50px; - height: 450px; -} -.bordered-option-classname { - border: 1px solid #e3e3e3; -} -.demo-toolbar-absolute > div:not(:last-of-type) { - border-right: 2px solid #e3e3e3; - padding-right: 5px; -} -.demo-toolbar-absolute > div:not(:first-of-type) { - padding-left: 5px; -} -.demo-toolbar-custom { - width: 100%; - border-color: rgb(0,47,126); - background-color: #9EBEF5; -} -.demo-editor-custom { - height: 200px; - border: 1px solid #cac9ce; - padding: 5px; - height: 75%; - border-radius: 2px; - border-color: rgb(0,47,126); -} -.demo-option-custom { - width: 15px; - height: 15px; - border-color: rgb(0,47,126); - color: rgb(0,47,126); -} -.demo-option-custom-wide { - width: 125px; - height: 25px; - border-color: rgb(0,47,126); - color: rgb(0,47,126); -} -.demo-option-custom-medium { - height: 25px; - border-color: rgb(0,47,126); - color: rgb(0,47,126); -} -.demo-dropdown-custom { - border-color: rgb(0,47,126); -} -.demo-popup-custom { - border-color: rgb(0,47,126); - padding: 5px; -} -.demo-popup-custom input { - border-color: rgb(0,47,126); -} -.demo-popup-custom button { - border-color: rgb(0,47,126); -} - - -.demo-color-wrapper { - display: flex; - align-items: center; - margin-bottom: 6px; - position: relative; -} -.demo-icon-wrapper { - border: 1px solid #cac9ce; - padding: 3px 5px; -} -.demo-icon { - width: 20px; -} -.demo-color-modal { - position: absolute; - right: -70px; - top: 135%; - z-index: 10; -} - diff --git a/public/res/components/react-select.css b/public/res/components/react-select.css deleted file mode 100644 index 9467cb79..00000000 --- a/public/res/components/react-select.css +++ /dev/null @@ -1,375 +0,0 @@ -/** - * React Select - * ============ - * Created by Jed Watson and Joss Mackison for KeystoneJS, http://www.keystonejs.com/ - * https://twitter.com/jedwatson https://twitter.com/jossmackison https://twitter.com/keystonejs - * MIT License: https://github.com/JedWatson/react-select -*/ -.Select { - position: relative; -} -.Select, -.Select div, -.Select input, -.Select span { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.Select.is-disabled > .Select-control { - background-color: #f9f9f9; -} -.Select.is-disabled > .Select-control:hover { - box-shadow: none; -} -.Select.is-disabled .Select-arrow-zone { - cursor: default; - pointer-events: none; - opacity: 0.35; -} -.Select-control { - background-color: #fff; - border-color: #d9d9d9 #ccc #b3b3b3; - border-radius: 4px; - border: 1px solid #ccc; - color: #333; - cursor: default; - display: table; - border-spacing: 0; - border-collapse: separate; - height: 36px; - outline: none; - overflow: hidden; - position: relative; - width: 100%; -} -.Select-control:hover { - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); -} -.Select-control .Select-input:focus { - outline: none; -} -.is-searchable.is-open > .Select-control { - cursor: text; -} -.is-open > .Select-control { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - background: #fff; - border-color: #b3b3b3 #ccc #d9d9d9; -} -.is-open > .Select-control .Select-arrow { - top: -2px; - border-color: transparent transparent #999; - border-width: 0 5px 5px; -} -.is-searchable.is-focused:not(.is-open) > .Select-control { - cursor: text; -} -.is-focused:not(.is-open) > .Select-control { - border-color: #007eff; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 3px rgba(0, 126, 255, 0.1); -} -.Select-placeholder, -.Select--single > .Select-control .Select-value { - bottom: 0; - color: #aaa; - left: 0; - line-height: 34px; - padding-left: 10px; - padding-right: 10px; - position: absolute; - right: 0; - top: 0; - max-width: 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.has-value.Select--single > .Select-control .Select-value .Select-value-label, -.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value .Select-value-label { - color: #333; -} -.has-value.Select--single > .Select-control .Select-value a.Select-value-label, -.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value a.Select-value-label { - cursor: pointer; - text-decoration: none; -} -.has-value.Select--single > .Select-control .Select-value a.Select-value-label:hover, -.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value a.Select-value-label:hover, -.has-value.Select--single > .Select-control .Select-value a.Select-value-label:focus, -.has-value.is-pseudo-focused.Select--single > .Select-control .Select-value a.Select-value-label:focus { - color: #007eff; - outline: none; - text-decoration: underline; -} -.Select-input { - height: 34px; - padding-left: 10px; - padding-right: 10px; - vertical-align: middle; -} -.Select-input > input { - width: 100%; - background: none transparent; - border: 0 none; - box-shadow: none; - cursor: default; - display: inline-block; - font-family: inherit; - font-size: inherit; - margin: 0; - outline: none; - line-height: 14px; - /* For IE 8 compatibility */ - padding: 8px 0 12px; - /* For IE 8 compatibility */ - -webkit-appearance: none; -} -.is-focused .Select-input > input { - cursor: text; -} -.has-value.is-pseudo-focused .Select-input { - opacity: 0; -} -.Select-control:not(.is-searchable) > .Select-input { - outline: none; -} -.Select-loading-zone { - cursor: pointer; - display: table-cell; - position: relative; - text-align: center; - vertical-align: middle; - width: 16px; -} -.Select-loading { - -webkit-animation: Select-animation-spin 400ms infinite linear; - -o-animation: Select-animation-spin 400ms infinite linear; - animation: Select-animation-spin 400ms infinite linear; - width: 16px; - height: 16px; - box-sizing: border-box; - border-radius: 50%; - border: 2px solid #ccc; - border-right-color: #333; - display: inline-block; - position: relative; - vertical-align: middle; -} -.Select-clear-zone { - -webkit-animation: Select-animation-fadeIn 200ms; - -o-animation: Select-animation-fadeIn 200ms; - animation: Select-animation-fadeIn 200ms; - color: #999; - cursor: pointer; - display: table-cell; - position: relative; - text-align: center; - vertical-align: middle; - width: 17px; -} -.Select-clear-zone:hover { - color: #D0021B; -} -.Select-clear { - display: inline-block; - font-size: 18px; - line-height: 1; -} -.Select--multi .Select-clear-zone { - width: 17px; -} -.Select-arrow-zone { - cursor: pointer; - display: table-cell; - position: relative; - text-align: center; - vertical-align: middle; - width: 25px; - padding-right: 5px; -} -.Select-arrow { - border-color: #999 transparent transparent; - border-style: solid; - border-width: 5px 5px 2.5px; - display: inline-block; - height: 0; - width: 0; - position: relative; -} -.is-open .Select-arrow, -.Select-arrow-zone:hover > .Select-arrow { - border-top-color: #666; -} -.Select--multi .Select-multi-value-wrapper { - display: inline-block; -} -.Select .Select-aria-only { - display: inline-block; - height: 1px; - width: 1px; - margin: -1px; - clip: rect(0, 0, 0, 0); - overflow: hidden; - float: left; -} -@-webkit-keyframes Select-animation-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes Select-animation-fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.Select-menu-outer { - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - background-color: #fff; - border: 1px solid #ccc; - border-top-color: #e6e6e6; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.06); - box-sizing: border-box; - margin-top: -1px; - max-height: 200px; - position: absolute; - top: 100%; - width: 100%; - z-index: 5; - -webkit-overflow-scrolling: touch; -} -.Select-menu { - max-height: 198px; - overflow-y: auto; -} -.Select-option { - box-sizing: border-box; - background-color: #fff; - color: #666666; - cursor: pointer; - display: block; - padding: 8px 10px; -} -.Select-option:last-child { - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; -} -.Select-option.is-selected { - background-color: #f5faff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.04); - color: #333; -} -.Select-option.is-focused { - background-color: #ebf5ff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.08); - color: #333; -} -.Select-option.is-disabled { - color: #cccccc; - cursor: default; -} -.Select-noresults { - box-sizing: border-box; - color: #999999; - cursor: default; - display: block; - padding: 8px 10px; -} -.Select--multi .Select-input { - vertical-align: middle; - margin-left: 10px; - padding: 0; -} -.Select--multi.has-value .Select-input { - margin-left: 5px; -} -.Select--multi .Select-value { - background-color: #ebf5ff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.08); - border-radius: 2px; - border: 1px solid #c2e0ff; - /* Fallback color for IE 8 */ - border: 1px solid rgba(0, 126, 255, 0.24); - color: #007eff; - display: inline-block; - font-size: 0.9em; - line-height: 1.4; - margin-left: 5px; - margin-top: 5px; - vertical-align: top; -} -.Select--multi .Select-value-icon, -.Select--multi .Select-value-label { - display: inline-block; - vertical-align: middle; -} -.Select--multi .Select-value-label { - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; - cursor: default; - padding: 2px 5px; -} -.Select--multi a.Select-value-label { - color: #007eff; - cursor: pointer; - text-decoration: none; -} -.Select--multi a.Select-value-label:hover { - text-decoration: underline; -} -.Select--multi .Select-value-icon { - cursor: pointer; - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; - border-right: 1px solid #c2e0ff; - /* Fallback color for IE 8 */ - border-right: 1px solid rgba(0, 126, 255, 0.24); - padding: 1px 5px 3px; -} -.Select--multi .Select-value-icon:hover, -.Select--multi .Select-value-icon:focus { - background-color: #d8eafd; - /* Fallback color for IE 8 */ - background-color: rgba(0, 113, 230, 0.08); - color: #0071e6; -} -.Select--multi .Select-value-icon:active { - background-color: #c2e0ff; - /* Fallback color for IE 8 */ - background-color: rgba(0, 126, 255, 0.24); -} -.Select--multi.is-disabled .Select-value { - background-color: #fcfcfc; - border: 1px solid #e3e3e3; - color: #333; -} -.Select--multi.is-disabled .Select-value-icon { - cursor: not-allowed; - border-right: 1px solid #e3e3e3; -} -.Select--multi.is-disabled .Select-value-icon:hover, -.Select--multi.is-disabled .Select-value-icon:focus, -.Select--multi.is-disabled .Select-value-icon:active { - background-color: #fcfcfc; -} -@keyframes Select-animation-spin { - to { - transform: rotate(1turn); - } -} -@-webkit-keyframes Select-animation-spin { - to { - -webkit-transform: rotate(1turn); - } -} diff --git a/public/res/customSkyHubStyle.css b/public/res/customSkyHubStyle.css deleted file mode 100644 index c5d0cc47..00000000 --- a/public/res/customSkyHubStyle.css +++ /dev/null @@ -1,791 +0,0 @@ -.link-not-active { - pointer-events: none; - cursor: default; -} - -.invizibil-element{ - display: none; -} - -.word-wrap{ - -ms-word-break: break-all; - word-break: break-all; - word-break: break-word; - - -webkit-hyphens: auto; - -moz-hyphens: auto; - hyphens: auto; -} - -.col-centered{ - width: 100%; - text-align: center; -} - -.cursor{ - cursor: pointer; - cursor: hand; -} - -.breadcrumb{ - padding-top: 10px; -} - -.breadcrumb > .active > a { - font-weight: 700; -} - -/* - ENABLE FULL WIDTH ROWS - */ -#page-wrapper{ - padding: 0; -} - -.row { - margin-left: 0; - margin-right: 0; -} - - -/* - FIX LEFT SIDE BAR (it was too big) - */ - -@media (min-width: 768px) { - .navbar-static-side { - width: 180px; - } -} - -@media (min-width: 768px) { - #page-wrapper { - margin-left: 180px; - } -} - -.navbar-static-side -{ - width: 180px !important; -} - -/* - STICKY BUTTONS - */ - -.sticky-button-position{ - position: fixed; - bottom: 20px; - right: 20px; - z-index: 100; -} - -.sticky-button { - width: 42px; - height: 42px; - display: block; - background: #1ab394; - padding: 9px 8px; - text-align: center; - color: #fff; - border-radius: 50%; -} - -.sticky-button-notification{ - background: #f8ac59; -} - -.sticky-button-chat{ - background: #1ab394; -} - -.sticky-button-icon{ - font-size: 22px !important; - margin-top: -20px; -} - -/* Small Devices, Tablets */ -@media (max-width: 991px) { - .container{ - width: initial; - } -} - -/* - Gallery used for Forums - */ -.image-with-caption-link{ - -} - -.image-with-caption, -.image-with-caption-link > a{ - position:relative; - margin-bottom:20px; - margin-right:10px; - display: inline-block; -} - -.image-with-caption > img, -.image-with-caption-link > a > img{ - margin: 0; -} - -.image-with-caption > span, -.image-with-caption-link > a > span{ - position:absolute; - bottom:0; - left:0; - background:#000; - color:#fff; - width:100%; - margin:0; - opacity: 0.7; - text-align: center; -} - -.profile-pic-white-border{ - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; - padding: 4px; -} - -.profile-pic-white-border-circle{ - background-color: #fff; - border: 1px solid #ddd; - -webkit-transition: border .2s ease-in-out; - -o-transition: border .2s ease-in-out; - transition: border .2s ease-in-out; - padding: 4px; -} - -/* - PREVIEW PAGES - */ - -.header-cover{ - min-height: 320px; - - background-position: center; - background-size: cover; -} - -.header-cover-layover{ - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - height:320px; - background-color: rgba(0, 0, 0, 0.3); -} - -.header-cover-description { - margin-top: 80px; -} - -.header-cover-description > div > img, -.header-cover-description > div > div > a > img { - /*max-width: 128px;*/ - /*max-height: 128px;*/ - width: 128px; - height: 128px; - - float: left; -} - -.header-cover-description > div > .row { - display: inline-block; -} - -.header-cover-description > div > .row > h1{ - background-color: rgba(0, 0, 0, 0.6); - display: inherit; - color: white; -} - -.header-cover-description > div > .row > h2{ - display: inherit; - background-color: rgba(0, 0, 0, 0.6); - color:white; -} - -@media (max-width: 768px) { - .header-cover-description { - margin-top: 80px; - } -} - -.header-cover-toolbar{ - -} - -.header-cover-toolbar-label { - cursor: pointer; - display: inline-block; -} -.header-cover-toolbar-label >span { - margin-left: $line-height-computed; -} - - -/* - BOOTSTRAP MODAL BUG FIX https://github.com/twbs/bootstrap/issues/14040 - */ - -.modal-open .navbar-fixed-top, -.modal-open .navbar-fixed-bottom { - padding-right: 17px; -} - -/* - TO SUPPORT FULL WIDTH DIVS - */ - - -.top-navigation .wrapper.wrapper-content { - padding: 0; -} - - - -/* - FILE UPLOAD DROP ZONE - */ - - -div.filepicker { - text-align: center; - padding: 5px; - border-radius: 5px; - min-height: 60px; - - background-color: #f9f9f9; - border: 2px dashed #aca9f7; -} - -/* Icon */ -.filepicker-file-icon -{ - position: relative; - - display: inline-block; - - margin: 1.5em 0 2.5em 0; - padding-left: 45px; - - color: black; -} -.filepicker-file-icon::before -{ - position: absolute; - top: -7px; - left: 0; - - width: 29px; - height: 34px; - - content: ''; - - border: solid 2px #7F7F7F; - border-radius: 2px; -} -.filepicker-file-icon::after -{ - font-size: 11px; - line-height: 1.3; - - position: absolute; - top: 9px; - left: -4px; - - padding: 0 2px; - - content: 'file'; - content: attr(data-filetype); - text-align: right; - letter-spacing: 1px; - text-transform: uppercase; - - color: #fff; - background-color: #000; -} -.filepicker-file-icon .fileCorner -{ - position: absolute; - top: -7px; - left: 22px; - - width: 0; - height: 0; - - border-width: 11px 0 0 11px; - border-style: solid; - border-color: white transparent transparent #920035; -} -.dz-default.dz-message{ - margin: 1em 0 !important; -} - -.dz-success-mark{ - width: 50%; - height: 0px; - padding-bottom: 50%; - border-radius: 50%; - -webkit-border-radius: 50%; - background-color: goldenrod; - margin-left: -24px !important; - margin-top: -24px !important; -} -.dz-success-mark > i{ - font-size: 30px -} - -.dz-error-mark{ - width: 50%; - height: 0px; - padding-bottom: 50%; - border-radius: 50%; - -webkit-border-radius: 50%; - background-color: darkred; - margin-left: -24px !important; - margin-top: -24px !important; -} - -.dz-error-mark > i{ - font-size: 30px -} - -.dz-error-message{ - margin-top:10px; -} - -.dz-remove{ - background-color: red !important; - padding: 2px !important; - border: 0 solid aqua !important; - bottom: 3px !important; - left: 12px !important; - -} - -.dz-preview{ - z-index: 10 !important; -} - -/* - VUE EDITOR - */ - -.ve-toolbar > div > a { - padding: 4px !important; - color: #e2d7d7 !important; - font-size: 15px !important; -} - -.ve-toolbar > div > a > i { - color: #e2d7d7 !important; - font-size: 12px !important; -} - -.emoji{ - width: 18px !important; - height: 18px !important; -} - -/* - REACT MULTI SELECT z-index... - */ - -.multiselect__element{ - z-index: 100 !important; - position: relative; -} -.multiselect__option{ - z-index: 100 !important; - position: relative; -} -.multiselect__option > span{ - z-index: 100 !important; - position: relative; -} -.multiselect__content{ - z-index: 100 !important; - position: relative; -} - -/* - AVATARS - */ - -.avatar-reply-image { - max-width: 45px; - max-height: 45px; - font-size: 25px; - border-radius: 50%; - /*position: absolute; - left: 0; - top: 0;*/ -} -.avatar-reply-circle { - max-width: 14px; - max-height: 14px; - text-align: center; - - position: absolute; - left: 5px; - top: 40px; -} - -/* TOPIC -/* - * Component: Topic question - * ------------------- - */ - -.topic-question { - /*-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); - border-radius: 3px; - */ - border-radius: 10px; - border: 1px solid #b7b5b5; - margin-top: 0; - background: #fff; - color: #444; - margin-left: 0; - margin-right: 0; - padding: 0; - position: relative; -} -.topic-question > h1{ - font-size: 20px; - margin: 15px 15px 0; -} -.topic-question > .information { - color: #999; - float: right; - padding: 10px; - font-size: 12px; -} -.topic-question-image{ - background-color: white; - padding: 0 10px 10px 0; - float: left; - width: 40%; - max-width: 300px; -} - -.topic-question > .topic-question-body{ - padding: 10px 10px 0; - color: black; -} -.topic-question-footer{ - - padding-bottom: 7px; - padding-top: 10px; - margin-right:0; - color:black; -} -.topic-question > .topic-question-footer > .topic-question-SubReplies{ - - padding-top: 10px; - padding-left: 0px; - margin-left: -9px; -} -.topic-question-footer-buttons{ - - padding-left: 10px; - padding-top: 10px; -} - -.avatar-topic-question-image { - max-width: 45px; - max-height: 45px; - position: absolute; - background: #d2d6de; - border-radius: 50%; - left: -6px; - top: -5px; -} - -.form-head-line{ - border-bottom: 1px solid #f4f4f4; - margin: 5px 0 5px 0; -} - -/* - REPLIES - */ - -.reply-form{ - - overflow: visible !important; - - border-radius: 20px; - /*box-shadow: 0px 0px 0px 1px rgba(0,0,0,0.04);*/ - - margin-right: 10px; - padding-top: 2px; - - border-left: #c4c1ea; - border-left-style: dotted; - border-left-width: 1px; -} - -.reply-form-first-child{ - -} -.reply-form{ - background: white; - /*background-color: rgba(26, 144, 68, 0.13);*/ -} - -.reply-form-content{ - padding-left: 10px; -} - -.reply-header-title{ - font-size: 1em; - margin-top: 0; - font-weight: 800; - margin-left: 20px; -} -.reply-header-authorName{ - font-size: 0.8em; - margin-top: 0; - color: navy; - display: inline; -} -.reply-header-bio{ - font-size: 0.7em; - margin-top: 0; - margin-left: 10px; - color: grey; - display: inline; -} - -.reply-form-footer{ - padding-left: 10px; -} - -.reply-form-footer-subReplies{ - padding-left: 10px; - padding-bottom: 10px; -} - -.reply-form-footer-buttons{ - -} - -/* - FORMS - */ - -.view-more, -.view-less { - color : grey; - background-color: #fff6f6; - border-color: #e2d5d5;; -} - -/* - VOTING - */ - -.vote-actions { - margin-right: 0; -} - -.vote-font-icon{ - color: #676a6c; - font-size: 17px; -} - - -/* FORUM TABLE -============================================================*/ - -.table-forums > tbody > tr:hover { - background-color: honeydew; -} - -.table-forums{ - width:100%; - margin-bottom:15px; - background-color: white; -} - -.table-forums > tbody > tr > th, -.table-forums > tbody > tr > td{ - padding-left: 0; - padding-right: 0; - text-align: center; -} - -.table-forums > tbody > tr > th:nth-child(1) -{ - text-align: left; - padding-left: 5px -} - -.table-forums > tbody > tr > th:nth-child(2), -.table-forums > tbody > tr > th:nth-child(3) -{ - width: 25px -} - -.table-forums > tbody > tr > th > h3 > img{ - max-height:80px; - padding-right:10px -} - -.table-forums > tbody > tr > td{ - text-align: left; - padding-left: 5px; - padding-bottom: 0; -} - -.table-forums > tbody > tr > th > h3, -.table-forums > tbody > tr > td > h3 -{ - margin:0; - font-weight: bold; -} - -@media (min-width: 1199px) { - .table-forums > tbody > tr > th > h3, - .table-forums > tbody > tr > td > h3{ - font-size: 24px; - } -} - -@media (max-width: 1199px) { - .table-forums >tbody > tr > th > h3, - .table-forums >tbody > tr > td > h3{ - font-size: 21px; - } -} -@media (max-width: 991px) { - .table-forums >tbody > tr > th > h3, - .table-forums >tbody > tr > td > h3{ - font-size: 17px; - } -} - -.table-forums-topic-image{ - float: left; - margin: 0 2% 2% 0; - width: 25%; - max-width: 200px; - max-height: 200px; -} -.table-forums-topic-title{ - font-weight: 700; - font-size: 18px; - word-wrap: break-word; -} -.table-forums-topic-body{ - white-space: pre-wrap; -} - -.table-forums-icon { - font-size:24px !important; -} - -@media (max-width: 991px) { - .table-forums-icon { - font-size:18px !important; - } -} - - -/* - ATTACHMENTS - */ - -.attachment{ - text-align:center; - position: relative; - display: inline-block; - margin-right: 20px; - width: 80px; -} -.attachment-img{ - background-color: white; - max-width: 72px; - max-height: 72px; - height: auto; - width:auto; -} - -.attachment-img-text{ -} - -.attachment-img-caption{ - position: absolute; - width: 100%; - text-align: center; - bottom: 0; - left: 0; -} - -/* - TOOL TIPS - */ - -.tooltip{ - overflow:visible !important; - z-index: 100; -} - -.ql-tooltip{ - overflow:visible !important; - z-index: 100; -} - - -/* - NOTIFICATIONS - */ - - -.dropdown-menu > .divider { - margin: 2px; -} - -.navbar-top-links .dropdown-messages-box:hover{ - background: #c8daf7; -} - -/* - HOVER EFECTS documentation: based on https://codepen.io/nxworld/pen/ZYNOBZ - */ - -.opacity-effect:hover{ - opacity: 1; - -webkit-animation: flash 1.5s; - animation: flash 1.5s; -} - -/* Flashing */ -@-webkit-keyframes flash { - 0% { - opacity: .4; - } - 100% { - opacity: 1; - } -} -@keyframes flash { - 0% { - opacity: .4; - } - 100% { - opacity: 1; - } -} diff --git a/public/res/logo/SkyHub-logo-square.png b/public/res/logo/SkyHub-logo-square.png deleted file mode 100644 index dc63c0af..00000000 Binary files a/public/res/logo/SkyHub-logo-square.png and /dev/null differ diff --git a/public/res/logo/SkyHub-logo.png b/public/res/logo/SkyHub-logo.png deleted file mode 100644 index d9c376c0..00000000 Binary files a/public/res/logo/SkyHub-logo.png and /dev/null differ diff --git a/public/res/template/css/animate.css b/public/res/template/css/animate.css deleted file mode 100644 index 2cb0cb6f..00000000 --- a/public/res/template/css/animate.css +++ /dev/null @@ -1,2880 +0,0 @@ -@charset "UTF-8"; - -/*! -Animate.css - http://daneden.me/animate -Licensed under the MIT license - -Copyright (c) 2013 Daniel Eden - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ - -.animated { - -webkit-animation-duration: 1s; - animation-duration: 1s; - -webkit-animation-fill-mode: both; - animation-fill-mode: both; -} - -.animated.infinite { - -webkit-animation-iteration-count: infinite; - animation-iteration-count: infinite; -} - -.animated.hinge { - -webkit-animation-duration: 2s; - animation-duration: 2s; -} - -@-webkit-keyframes bounce { - 0%, 20%, 50%, 80%, 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 40% { - -webkit-transform: translateY(-30px); - transform: translateY(-30px); - } - - 60% { - -webkit-transform: translateY(-15px); - transform: translateY(-15px); - } -} - -@keyframes bounce { - 0%, 20%, 50%, 80%, 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 40% { - -webkit-transform: translateY(-30px); - -ms-transform: translateY(-30px); - transform: translateY(-30px); - } - - 60% { - -webkit-transform: translateY(-15px); - -ms-transform: translateY(-15px); - transform: translateY(-15px); - } -} - -.bounce { - -webkit-animation-name: bounce; - animation-name: bounce; -} - -@-webkit-keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -@keyframes flash { - 0%, 50%, 100% { - opacity: 1; - } - - 25%, 75% { - opacity: 0; - } -} - -.flash { - -webkit-animation-name: flash; - animation-name: flash; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes pulse { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 50% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes pulse { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 50% { - -webkit-transform: scale(1.1); - -ms-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} - -.pulse { - -webkit-animation-name: pulse; - animation-name: pulse; -} - -@-webkit-keyframes rubberBand { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 30% { - -webkit-transform: scaleX(1.25) scaleY(0.75); - transform: scaleX(1.25) scaleY(0.75); - } - - 40% { - -webkit-transform: scaleX(0.75) scaleY(1.25); - transform: scaleX(0.75) scaleY(1.25); - } - - 60% { - -webkit-transform: scaleX(1.15) scaleY(0.85); - transform: scaleX(1.15) scaleY(0.85); - } - - 100% { - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes rubberBand { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 30% { - -webkit-transform: scaleX(1.25) scaleY(0.75); - -ms-transform: scaleX(1.25) scaleY(0.75); - transform: scaleX(1.25) scaleY(0.75); - } - - 40% { - -webkit-transform: scaleX(0.75) scaleY(1.25); - -ms-transform: scaleX(0.75) scaleY(1.25); - transform: scaleX(0.75) scaleY(1.25); - } - - 60% { - -webkit-transform: scaleX(1.15) scaleY(0.85); - -ms-transform: scaleX(1.15) scaleY(0.85); - transform: scaleX(1.15) scaleY(0.85); - } - - 100% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} - -.rubberBand { - -webkit-animation-name: rubberBand; - animation-name: rubberBand; -} - -@-webkit-keyframes shake { - 0%, 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translateX(10px); - transform: translateX(10px); - } -} - -@keyframes shake { - 0%, 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 10%, 30%, 50%, 70%, 90% { - -webkit-transform: translateX(-10px); - -ms-transform: translateX(-10px); - transform: translateX(-10px); - } - - 20%, 40%, 60%, 80% { - -webkit-transform: translateX(10px); - -ms-transform: translateX(10px); - transform: translateX(10px); - } -} - -.shake { - -webkit-animation-name: shake; - animation-name: shake; -} - -@-webkit-keyframes swing { - 20% { - -webkit-transform: rotate(15deg); - transform: rotate(15deg); - } - - 40% { - -webkit-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 60% { - -webkit-transform: rotate(5deg); - transform: rotate(5deg); - } - - 80% { - -webkit-transform: rotate(-5deg); - transform: rotate(-5deg); - } - - 100% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } -} - -@keyframes swing { - 20% { - -webkit-transform: rotate(15deg); - -ms-transform: rotate(15deg); - transform: rotate(15deg); - } - - 40% { - -webkit-transform: rotate(-10deg); - -ms-transform: rotate(-10deg); - transform: rotate(-10deg); - } - - 60% { - -webkit-transform: rotate(5deg); - -ms-transform: rotate(5deg); - transform: rotate(5deg); - } - - 80% { - -webkit-transform: rotate(-5deg); - -ms-transform: rotate(-5deg); - transform: rotate(-5deg); - } - - 100% { - -webkit-transform: rotate(0deg); - -ms-transform: rotate(0deg); - transform: rotate(0deg); - } -} - -.swing { - -webkit-transform-origin: top center; - -ms-transform-origin: top center; - transform-origin: top center; - -webkit-animation-name: swing; - animation-name: swing; -} - -@-webkit-keyframes tada { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 10%, 20% { - -webkit-transform: scale(0.9) rotate(-3deg); - transform: scale(0.9) rotate(-3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale(1.1) rotate(3deg); - transform: scale(1.1) rotate(3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale(1.1) rotate(-3deg); - transform: scale(1.1) rotate(-3deg); - } - - 100% { - -webkit-transform: scale(1) rotate(0); - transform: scale(1) rotate(0); - } -} - -@keyframes tada { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 10%, 20% { - -webkit-transform: scale(0.9) rotate(-3deg); - -ms-transform: scale(0.9) rotate(-3deg); - transform: scale(0.9) rotate(-3deg); - } - - 30%, 50%, 70%, 90% { - -webkit-transform: scale(1.1) rotate(3deg); - -ms-transform: scale(1.1) rotate(3deg); - transform: scale(1.1) rotate(3deg); - } - - 40%, 60%, 80% { - -webkit-transform: scale(1.1) rotate(-3deg); - -ms-transform: scale(1.1) rotate(-3deg); - transform: scale(1.1) rotate(-3deg); - } - - 100% { - -webkit-transform: scale(1) rotate(0); - -ms-transform: scale(1) rotate(0); - transform: scale(1) rotate(0); - } -} - -.tada { - -webkit-animation-name: tada; - animation-name: tada; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes wobble { - 0% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - } - - 15% { - -webkit-transform: translateX(-25%) rotate(-5deg); - transform: translateX(-25%) rotate(-5deg); - } - - 30% { - -webkit-transform: translateX(20%) rotate(3deg); - transform: translateX(20%) rotate(3deg); - } - - 45% { - -webkit-transform: translateX(-15%) rotate(-3deg); - transform: translateX(-15%) rotate(-3deg); - } - - 60% { - -webkit-transform: translateX(10%) rotate(2deg); - transform: translateX(10%) rotate(2deg); - } - - 75% { - -webkit-transform: translateX(-5%) rotate(-1deg); - transform: translateX(-5%) rotate(-1deg); - } - - 100% { - -webkit-transform: translateX(0%); - transform: translateX(0%); - } -} - -@keyframes wobble { - 0% { - -webkit-transform: translateX(0%); - -ms-transform: translateX(0%); - transform: translateX(0%); - } - - 15% { - -webkit-transform: translateX(-25%) rotate(-5deg); - -ms-transform: translateX(-25%) rotate(-5deg); - transform: translateX(-25%) rotate(-5deg); - } - - 30% { - -webkit-transform: translateX(20%) rotate(3deg); - -ms-transform: translateX(20%) rotate(3deg); - transform: translateX(20%) rotate(3deg); - } - - 45% { - -webkit-transform: translateX(-15%) rotate(-3deg); - -ms-transform: translateX(-15%) rotate(-3deg); - transform: translateX(-15%) rotate(-3deg); - } - - 60% { - -webkit-transform: translateX(10%) rotate(2deg); - -ms-transform: translateX(10%) rotate(2deg); - transform: translateX(10%) rotate(2deg); - } - - 75% { - -webkit-transform: translateX(-5%) rotate(-1deg); - -ms-transform: translateX(-5%) rotate(-1deg); - transform: translateX(-5%) rotate(-1deg); - } - - 100% { - -webkit-transform: translateX(0%); - -ms-transform: translateX(0%); - transform: translateX(0%); - } -} - -.wobble { - -webkit-animation-name: wobble; - animation-name: wobble; -} - -@-webkit-keyframes bounceIn { - 0% { - opacity: 0; - -webkit-transform: scale(.3); - transform: scale(.3); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.05); - transform: scale(1.05); - } - - 70% { - -webkit-transform: scale(.9); - transform: scale(.9); - } - - 100% { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); - } -} - -@keyframes bounceIn { - 0% { - opacity: 0; - -webkit-transform: scale(.3); - -ms-transform: scale(.3); - transform: scale(.3); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.05); - -ms-transform: scale(1.05); - transform: scale(1.05); - } - - 70% { - -webkit-transform: scale(.9); - -ms-transform: scale(.9); - transform: scale(.9); - } - - 100% { - opacity: 1; - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } -} - -.bounceIn { - -webkit-animation-name: bounceIn; - animation-name: bounceIn; -} - -@-webkit-keyframes bounceInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(30px); - transform: translateY(30px); - } - - 80% { - -webkit-transform: translateY(-10px); - transform: translateY(-10px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes bounceInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(30px); - -ms-transform: translateY(30px); - transform: translateY(30px); - } - - 80% { - -webkit-transform: translateY(-10px); - -ms-transform: translateY(-10px); - transform: translateY(-10px); - } - - 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.bounceInDown { - -webkit-animation-name: bounceInDown; - animation-name: bounceInDown; -} - -@-webkit-keyframes bounceInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(30px); - transform: translateX(30px); - } - - 80% { - -webkit-transform: translateX(-10px); - transform: translateX(-10px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes bounceInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(30px); - -ms-transform: translateX(30px); - transform: translateX(30px); - } - - 80% { - -webkit-transform: translateX(-10px); - -ms-transform: translateX(-10px); - transform: translateX(-10px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.bounceInLeft { - -webkit-animation-name: bounceInLeft; - animation-name: bounceInLeft; -} - -@-webkit-keyframes bounceInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(-30px); - transform: translateX(-30px); - } - - 80% { - -webkit-transform: translateX(10px); - transform: translateX(10px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes bounceInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateX(-30px); - -ms-transform: translateX(-30px); - transform: translateX(-30px); - } - - 80% { - -webkit-transform: translateX(10px); - -ms-transform: translateX(10px); - transform: translateX(10px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.bounceInRight { - -webkit-animation-name: bounceInRight; - animation-name: bounceInRight; -} - -@-webkit-keyframes bounceInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(-30px); - transform: translateY(-30px); - } - - 80% { - -webkit-transform: translateY(10px); - transform: translateY(10px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes bounceInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } - - 60% { - opacity: 1; - -webkit-transform: translateY(-30px); - -ms-transform: translateY(-30px); - transform: translateY(-30px); - } - - 80% { - -webkit-transform: translateY(10px); - -ms-transform: translateY(10px); - transform: translateY(10px); - } - - 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.bounceInUp { - -webkit-animation-name: bounceInUp; - animation-name: bounceInUp; -} - -@-webkit-keyframes bounceOut { - 0% { - -webkit-transform: scale(1); - transform: scale(1); - } - - 25% { - -webkit-transform: scale(.95); - transform: scale(.95); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.3); - transform: scale(.3); - } -} - -@keyframes bounceOut { - 0% { - -webkit-transform: scale(1); - -ms-transform: scale(1); - transform: scale(1); - } - - 25% { - -webkit-transform: scale(.95); - -ms-transform: scale(.95); - transform: scale(.95); - } - - 50% { - opacity: 1; - -webkit-transform: scale(1.1); - -ms-transform: scale(1.1); - transform: scale(1.1); - } - - 100% { - opacity: 0; - -webkit-transform: scale(.3); - -ms-transform: scale(.3); - transform: scale(.3); - } -} - -.bounceOut { - -webkit-animation-name: bounceOut; - animation-name: bounceOut; -} - -@-webkit-keyframes bounceOutDown { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -@keyframes bounceOutDown { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -.bounceOutDown { - -webkit-animation-name: bounceOutDown; - animation-name: bounceOutDown; -} - -@-webkit-keyframes bounceOutLeft { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(20px); - transform: translateX(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -@keyframes bounceOutLeft { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(20px); - -ms-transform: translateX(20px); - transform: translateX(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -.bounceOutLeft { - -webkit-animation-name: bounceOutLeft; - animation-name: bounceOutLeft; -} - -@-webkit-keyframes bounceOutRight { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -@keyframes bounceOutRight { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateX(-20px); - -ms-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -.bounceOutRight { - -webkit-animation-name: bounceOutRight; - animation-name: bounceOutRight; -} - -@-webkit-keyframes bounceOutUp { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -@keyframes bounceOutUp { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 20% { - opacity: 1; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -.bounceOutUp { - -webkit-animation-name: bounceOutUp; - animation-name: bounceOutUp; -} - -@-webkit-keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -@keyframes fadeIn { - 0% { - opacity: 0; - } - - 100% { - opacity: 1; - } -} - -.fadeIn { - -webkit-animation-name: fadeIn; - animation-name: fadeIn; -} - -@-webkit-keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInDown { - -webkit-animation-name: fadeInDown; - animation-name: fadeInDown; -} - -@-webkit-keyframes fadeInDownBig { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInDownBig { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInDownBig { - -webkit-animation-name: fadeInDownBig; - animation-name: fadeInDownBig; -} - -@-webkit-keyframes fadeInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-20px); - -ms-transform: translateX(-20px); - transform: translateX(-20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInLeft { - -webkit-animation-name: fadeInLeft; - animation-name: fadeInLeft; -} - -@-webkit-keyframes fadeInLeftBig { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInLeftBig { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInLeftBig { - -webkit-animation-name: fadeInLeftBig; - animation-name: fadeInLeftBig; -} - -@-webkit-keyframes fadeInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(20px); - transform: translateX(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(20px); - -ms-transform: translateX(20px); - transform: translateX(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInRight { - -webkit-animation-name: fadeInRight; - animation-name: fadeInRight; -} - -@-webkit-keyframes fadeInRightBig { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes fadeInRightBig { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.fadeInRightBig { - -webkit-animation-name: fadeInRightBig; - animation-name: fadeInRightBig; -} - -@-webkit-keyframes fadeInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInUp { - 0% { - opacity: 0; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInUp { - -webkit-animation-name: fadeInUp; - animation-name: fadeInUp; -} - -@-webkit-keyframes fadeInUpBig { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes fadeInUpBig { - 0% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } - - 100% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.fadeInUpBig { - -webkit-animation-name: fadeInUpBig; - animation-name: fadeInUpBig; -} - -@-webkit-keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -@keyframes fadeOut { - 0% { - opacity: 1; - } - - 100% { - opacity: 0; - } -} - -.fadeOut { - -webkit-animation-name: fadeOut; - animation-name: fadeOut; -} - -@-webkit-keyframes fadeOutDown { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(20px); - transform: translateY(20px); - } -} - -@keyframes fadeOutDown { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(20px); - -ms-transform: translateY(20px); - transform: translateY(20px); - } -} - -.fadeOutDown { - -webkit-animation-name: fadeOutDown; - animation-name: fadeOutDown; -} - -@-webkit-keyframes fadeOutDownBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -@keyframes fadeOutDownBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -.fadeOutDownBig { - -webkit-animation-name: fadeOutDownBig; - animation-name: fadeOutDownBig; -} - -@-webkit-keyframes fadeOutLeft { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-20px); - transform: translateX(-20px); - } -} - -@keyframes fadeOutLeft { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-20px); - -ms-transform: translateX(-20px); - transform: translateX(-20px); - } -} - -.fadeOutLeft { - -webkit-animation-name: fadeOutLeft; - animation-name: fadeOutLeft; -} - -@-webkit-keyframes fadeOutLeftBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -@keyframes fadeOutLeftBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -.fadeOutLeftBig { - -webkit-animation-name: fadeOutLeftBig; - animation-name: fadeOutLeftBig; -} - -@-webkit-keyframes fadeOutRight { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(20px); - transform: translateX(20px); - } -} - -@keyframes fadeOutRight { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(20px); - -ms-transform: translateX(20px); - transform: translateX(20px); - } -} - -.fadeOutRight { - -webkit-animation-name: fadeOutRight; - animation-name: fadeOutRight; -} - -@-webkit-keyframes fadeOutRightBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -@keyframes fadeOutRightBig { - 0% { - opacity: 1; - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -.fadeOutRightBig { - -webkit-animation-name: fadeOutRightBig; - animation-name: fadeOutRightBig; -} - -@-webkit-keyframes fadeOutUp { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-20px); - transform: translateY(-20px); - } -} - -@keyframes fadeOutUp { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-20px); - -ms-transform: translateY(-20px); - transform: translateY(-20px); - } -} - -.fadeOutUp { - -webkit-animation-name: fadeOutUp; - animation-name: fadeOutUp; -} - -@-webkit-keyframes fadeOutUpBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -@keyframes fadeOutUpBig { - 0% { - opacity: 1; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -.fadeOutUpBig { - -webkit-animation-name: fadeOutUpBig; - animation-name: fadeOutUpBig; -} - -@-webkit-keyframes flip { - 0% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 100% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -@keyframes flip { - 0% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - -ms-transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - transform: perspective(400px) translateZ(0) rotateY(0) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 40% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - -ms-transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(170deg) scale(1); - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; - } - - 50% { - -webkit-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - -ms-transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - transform: perspective(400px) translateZ(150px) rotateY(190deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 80% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(.95); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } - - 100% { - -webkit-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - -ms-transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - transform: perspective(400px) translateZ(0) rotateY(360deg) scale(1); - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; - } -} - -.animated.flip { - -webkit-backface-visibility: visible; - -ms-backface-visibility: visible; - backface-visibility: visible; - -webkit-animation-name: flip; - animation-name: flip; -} - -@-webkit-keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } -} - -@keyframes flipInX { - 0% { - -webkit-transform: perspective(400px) rotateX(90deg); - -ms-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateX(-10deg); - -ms-transform: perspective(400px) rotateX(-10deg); - transform: perspective(400px) rotateX(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateX(10deg); - -ms-transform: perspective(400px) rotateX(10deg); - transform: perspective(400px) rotateX(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateX(0deg); - -ms-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } -} - -.flipInX { - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInX; - animation-name: flipInX; -} - -@-webkit-keyframes flipInY { - 0% { - -webkit-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateY(-10deg); - transform: perspective(400px) rotateY(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateY(10deg); - transform: perspective(400px) rotateY(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } -} - -@keyframes flipInY { - 0% { - -webkit-transform: perspective(400px) rotateY(90deg); - -ms-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } - - 40% { - -webkit-transform: perspective(400px) rotateY(-10deg); - -ms-transform: perspective(400px) rotateY(-10deg); - transform: perspective(400px) rotateY(-10deg); - } - - 70% { - -webkit-transform: perspective(400px) rotateY(10deg); - -ms-transform: perspective(400px) rotateY(10deg); - transform: perspective(400px) rotateY(10deg); - } - - 100% { - -webkit-transform: perspective(400px) rotateY(0deg); - -ms-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } -} - -.flipInY { - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipInY; - animation-name: flipInY; -} - -@-webkit-keyframes flipOutX { - 0% { - -webkit-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } -} - -@keyframes flipOutX { - 0% { - -webkit-transform: perspective(400px) rotateX(0deg); - -ms-transform: perspective(400px) rotateX(0deg); - transform: perspective(400px) rotateX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateX(90deg); - -ms-transform: perspective(400px) rotateX(90deg); - transform: perspective(400px) rotateX(90deg); - opacity: 0; - } -} - -.flipOutX { - -webkit-animation-name: flipOutX; - animation-name: flipOutX; - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; -} - -@-webkit-keyframes flipOutY { - 0% { - -webkit-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } -} - -@keyframes flipOutY { - 0% { - -webkit-transform: perspective(400px) rotateY(0deg); - -ms-transform: perspective(400px) rotateY(0deg); - transform: perspective(400px) rotateY(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: perspective(400px) rotateY(90deg); - -ms-transform: perspective(400px) rotateY(90deg); - transform: perspective(400px) rotateY(90deg); - opacity: 0; - } -} - -.flipOutY { - -webkit-backface-visibility: visible !important; - -ms-backface-visibility: visible !important; - backface-visibility: visible !important; - -webkit-animation-name: flipOutY; - animation-name: flipOutY; -} - -@-webkit-keyframes lightSpeedIn { - 0% { - -webkit-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: translateX(-20%) skewX(30deg); - transform: translateX(-20%) skewX(30deg); - opacity: 1; - } - - 80% { - -webkit-transform: translateX(0%) skewX(-15deg); - transform: translateX(0%) skewX(-15deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } -} - -@keyframes lightSpeedIn { - 0% { - -webkit-transform: translateX(100%) skewX(-30deg); - -ms-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } - - 60% { - -webkit-transform: translateX(-20%) skewX(30deg); - -ms-transform: translateX(-20%) skewX(30deg); - transform: translateX(-20%) skewX(30deg); - opacity: 1; - } - - 80% { - -webkit-transform: translateX(0%) skewX(-15deg); - -ms-transform: translateX(0%) skewX(-15deg); - transform: translateX(0%) skewX(-15deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(0%) skewX(0deg); - -ms-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } -} - -.lightSpeedIn { - -webkit-animation-name: lightSpeedIn; - animation-name: lightSpeedIn; - -webkit-animation-timing-function: ease-out; - animation-timing-function: ease-out; -} - -@-webkit-keyframes lightSpeedOut { - 0% { - -webkit-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } -} - -@keyframes lightSpeedOut { - 0% { - -webkit-transform: translateX(0%) skewX(0deg); - -ms-transform: translateX(0%) skewX(0deg); - transform: translateX(0%) skewX(0deg); - opacity: 1; - } - - 100% { - -webkit-transform: translateX(100%) skewX(-30deg); - -ms-transform: translateX(100%) skewX(-30deg); - transform: translateX(100%) skewX(-30deg); - opacity: 0; - } -} - -.lightSpeedOut { - -webkit-animation-name: lightSpeedOut; - animation-name: lightSpeedOut; - -webkit-animation-timing-function: ease-in; - animation-timing-function: ease-in; -} - -@-webkit-keyframes rotateIn { - 0% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-200deg); - transform: rotate(-200deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateIn { - 0% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(-200deg); - -ms-transform: rotate(-200deg); - transform: rotate(-200deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateIn { - -webkit-animation-name: rotateIn; - animation-name: rotateIn; -} - -@-webkit-keyframes rotateInDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInDownLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInDownLeft { - -webkit-animation-name: rotateInDownLeft; - animation-name: rotateInDownLeft; -} - -@-webkit-keyframes rotateInDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInDownRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInDownRight { - -webkit-animation-name: rotateInDownRight; - animation-name: rotateInDownRight; -} - -@-webkit-keyframes rotateInUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInUpLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInUpLeft { - -webkit-animation-name: rotateInUpLeft; - animation-name: rotateInUpLeft; -} - -@-webkit-keyframes rotateInUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -@keyframes rotateInUpRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } -} - -.rotateInUpRight { - -webkit-animation-name: rotateInUpRight; - animation-name: rotateInUpRight; -} - -@-webkit-keyframes rotateOut { - 0% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(200deg); - transform: rotate(200deg); - opacity: 0; - } -} - -@keyframes rotateOut { - 0% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: center center; - -ms-transform-origin: center center; - transform-origin: center center; - -webkit-transform: rotate(200deg); - -ms-transform: rotate(200deg); - transform: rotate(200deg); - opacity: 0; - } -} - -.rotateOut { - -webkit-animation-name: rotateOut; - animation-name: rotateOut; -} - -@-webkit-keyframes rotateOutDownLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -@keyframes rotateOutDownLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -.rotateOutDownLeft { - -webkit-animation-name: rotateOutDownLeft; - animation-name: rotateOutDownLeft; -} - -@-webkit-keyframes rotateOutDownRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -@keyframes rotateOutDownRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -.rotateOutDownRight { - -webkit-animation-name: rotateOutDownRight; - animation-name: rotateOutDownRight; -} - -@-webkit-keyframes rotateOutUpLeft { - 0% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpLeft { - 0% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: left bottom; - -ms-transform-origin: left bottom; - transform-origin: left bottom; - -webkit-transform: rotate(-90deg); - -ms-transform: rotate(-90deg); - transform: rotate(-90deg); - opacity: 0; - } -} - -.rotateOutUpLeft { - -webkit-animation-name: rotateOutUpLeft; - animation-name: rotateOutUpLeft; -} - -@-webkit-keyframes rotateOutUpRight { - 0% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -@keyframes rotateOutUpRight { - 0% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - opacity: 1; - } - - 100% { - -webkit-transform-origin: right bottom; - -ms-transform-origin: right bottom; - transform-origin: right bottom; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); - opacity: 0; - } -} - -.rotateOutUpRight { - -webkit-animation-name: rotateOutUpRight; - animation-name: rotateOutUpRight; -} - -@-webkit-keyframes slideInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes slideInDown { - 0% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } - - 100% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.slideInDown { - -webkit-animation-name: slideInDown; - animation-name: slideInDown; -} - -@-webkit-keyframes slideInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes slideInLeft { - 0% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.slideInLeft { - -webkit-animation-name: slideInLeft; - animation-name: slideInLeft; -} - -@-webkit-keyframes slideInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - -webkit-transform: translateX(0); - transform: translateX(0); - } -} - -@keyframes slideInRight { - 0% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } - - 100% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } -} - -.slideInRight { - -webkit-animation-name: slideInRight; - animation-name: slideInRight; -} - -@-webkit-keyframes slideOutLeft { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -@keyframes slideOutLeft { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(-2000px); - -ms-transform: translateX(-2000px); - transform: translateX(-2000px); - } -} - -.slideOutLeft { - -webkit-animation-name: slideOutLeft; - animation-name: slideOutLeft; -} - -@-webkit-keyframes slideOutRight { - 0% { - -webkit-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -@keyframes slideOutRight { - 0% { - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(2000px); - -ms-transform: translateX(2000px); - transform: translateX(2000px); - } -} - -.slideOutRight { - -webkit-animation-name: slideOutRight; - animation-name: slideOutRight; -} - -@-webkit-keyframes slideOutUp { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -@keyframes slideOutUp { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(-2000px); - -ms-transform: translateY(-2000px); - transform: translateY(-2000px); - } -} - -.slideOutUp { - -webkit-animation-name: slideOutUp; - animation-name: slideOutUp; -} - -@-webkit-keyframes slideInUp { - 0% { - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(0); - transform: translateY(0); - } -} - -@keyframes slideInUp { - 0% { - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } -} - -.slideInUp { - -webkit-animation-name: slideInUp; - animation-name: slideInUp; -} - -@-webkit-keyframes slideOutDown { - 0% { - -webkit-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -@keyframes slideOutDown { - 0% { - -webkit-transform: translateY(0); - -ms-transform: translateY(0); - transform: translateY(0); - } - - 100% { - opacity: 0; - -webkit-transform: translateY(2000px); - -ms-transform: translateY(2000px); - transform: translateY(2000px); - } -} - -.slideOutDown { - -webkit-animation-name: slideOutDown; - animation-name: slideOutDown; -} - -@-webkit-keyframes hinge { - 0% { - -webkit-transform: rotate(0); - transform: rotate(0); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate(80deg); - transform: rotate(80deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40% { - -webkit-transform: rotate(60deg); - transform: rotate(60deg); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 80% { - -webkit-transform: rotate(60deg) translateY(0); - transform: rotate(60deg) translateY(0); - -webkit-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - 100% { - -webkit-transform: translateY(700px); - transform: translateY(700px); - opacity: 0; - } -} - -@keyframes hinge { - 0% { - -webkit-transform: rotate(0); - -ms-transform: rotate(0); - transform: rotate(0); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 20%, 60% { - -webkit-transform: rotate(80deg); - -ms-transform: rotate(80deg); - transform: rotate(80deg); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 40% { - -webkit-transform: rotate(60deg); - -ms-transform: rotate(60deg); - transform: rotate(60deg); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - } - - 80% { - -webkit-transform: rotate(60deg) translateY(0); - -ms-transform: rotate(60deg) translateY(0); - transform: rotate(60deg) translateY(0); - -webkit-transform-origin: top left; - -ms-transform-origin: top left; - transform-origin: top left; - -webkit-animation-timing-function: ease-in-out; - animation-timing-function: ease-in-out; - opacity: 1; - } - - 100% { - -webkit-transform: translateY(700px); - -ms-transform: translateY(700px); - transform: translateY(700px); - opacity: 0; - } -} - -.hinge { - -webkit-animation-name: hinge; - animation-name: hinge; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollIn { - 0% { - opacity: 0; - -webkit-transform: translateX(-100%) rotate(-120deg); - transform: translateX(-100%) rotate(-120deg); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } -} - -@keyframes rollIn { - 0% { - opacity: 0; - -webkit-transform: translateX(-100%) rotate(-120deg); - -ms-transform: translateX(-100%) rotate(-120deg); - transform: translateX(-100%) rotate(-120deg); - } - - 100% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - -ms-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } -} - -.rollIn { - -webkit-animation-name: rollIn; - animation-name: rollIn; -} - -/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ - -@-webkit-keyframes rollOut { - 0% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(100%) rotate(120deg); - transform: translateX(100%) rotate(120deg); - } -} - -@keyframes rollOut { - 0% { - opacity: 1; - -webkit-transform: translateX(0px) rotate(0deg); - -ms-transform: translateX(0px) rotate(0deg); - transform: translateX(0px) rotate(0deg); - } - - 100% { - opacity: 0; - -webkit-transform: translateX(100%) rotate(120deg); - -ms-transform: translateX(100%) rotate(120deg); - transform: translateX(100%) rotate(120deg); - } -} - -.rollOut { - -webkit-animation-name: rollOut; - animation-name: rollOut; -} \ No newline at end of file diff --git a/public/res/template/css/bootstrap.min.css b/public/res/template/css/bootstrap.min.css deleted file mode 100644 index be869382..00000000 --- a/public/res/template/css/bootstrap.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap v3.3.7 (http://getbootstrap.com) - * Copyright 2011-2016 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regulard41d.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} -/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/public/res/template/css/patterns/3.png b/public/res/template/css/patterns/3.png deleted file mode 100644 index 3b8dcdc8..00000000 Binary files a/public/res/template/css/patterns/3.png and /dev/null differ diff --git a/public/res/template/css/patterns/4.png b/public/res/template/css/patterns/4.png deleted file mode 100644 index 11fac9a8..00000000 Binary files a/public/res/template/css/patterns/4.png and /dev/null differ diff --git a/public/res/template/css/patterns/header-profile-skin-1.png b/public/res/template/css/patterns/header-profile-skin-1.png deleted file mode 100644 index 41c5c089..00000000 Binary files a/public/res/template/css/patterns/header-profile-skin-1.png and /dev/null differ diff --git a/public/res/template/css/patterns/header-profile-skin-2.png b/public/res/template/css/patterns/header-profile-skin-2.png deleted file mode 100644 index df46d46e..00000000 Binary files a/public/res/template/css/patterns/header-profile-skin-2.png and /dev/null differ diff --git a/public/res/template/css/patterns/header-profile-skin-3.png b/public/res/template/css/patterns/header-profile-skin-3.png deleted file mode 100644 index 7a80132d..00000000 Binary files a/public/res/template/css/patterns/header-profile-skin-3.png and /dev/null differ diff --git a/public/res/template/css/patterns/header-profile.png b/public/res/template/css/patterns/header-profile.png deleted file mode 100644 index 7dea7f2c..00000000 Binary files a/public/res/template/css/patterns/header-profile.png and /dev/null differ diff --git a/public/res/template/css/patterns/shattered.png b/public/res/template/css/patterns/shattered.png deleted file mode 100644 index 90ed42b8..00000000 Binary files a/public/res/template/css/patterns/shattered.png and /dev/null differ diff --git a/public/res/template/css/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css b/public/res/template/css/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css deleted file mode 100644 index f4e6575f..00000000 --- a/public/res/template/css/plugins/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css +++ /dev/null @@ -1,251 +0,0 @@ -.checkbox { - padding-left: 20px; -} -.checkbox label { - display: inline-block; - vertical-align: middle; - position: relative; - padding-left: 5px; -} -.checkbox label::before { - content: ""; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - left: 0; - margin-left: -20px; - border: 1px solid #cccccc; - border-radius: 3px; - background-color: #fff; - -webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; - -o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out; - transition: border 0.15s ease-in-out, color 0.15s ease-in-out; -} -.checkbox label::after { - display: inline-block; - position: absolute; - width: 16px; - height: 16px; - left: 0; - top: 0; - margin-left: -20px; - padding-left: 3px; - padding-top: 1px; - font-size: 11px; - color: #555555; -} -.checkbox input[type="checkbox"], -.checkbox input[type="radio"] { - opacity: 0; - z-index: 1; -} -.checkbox input[type="checkbox"]:focus + label::before, -.checkbox input[type="radio"]:focus + label::before { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.checkbox input[type="checkbox"]:checked + label::after, -.checkbox input[type="radio"]:checked + label::after { - font-family: "FontAwesome"; - content: "\f00c"; -} -.checkbox input[type="checkbox"]:disabled + label, -.checkbox input[type="radio"]:disabled + label { - opacity: 0.65; -} -.checkbox input[type="checkbox"]:disabled + label::before, -.checkbox input[type="radio"]:disabled + label::before { - background-color: #eeeeee; - cursor: not-allowed; -} -.checkbox.checkbox-circle label::before { - border-radius: 50%; -} -.checkbox.checkbox-inline { - margin-top: 0; -} - -.checkbox-primary input[type="checkbox"]:checked + label::before, -.checkbox-primary input[type="radio"]:checked + label::before { - background-color: #337ab7; - border-color: #337ab7; -} -.checkbox-primary input[type="checkbox"]:checked + label::after, -.checkbox-primary input[type="radio"]:checked + label::after { - color: #fff; -} - -.checkbox-danger input[type="checkbox"]:checked + label::before, -.checkbox-danger input[type="radio"]:checked + label::before { - background-color: #d9534f; - border-color: #d9534f; -} -.checkbox-danger input[type="checkbox"]:checked + label::after, -.checkbox-danger input[type="radio"]:checked + label::after { - color: #fff; -} - -.checkbox-info input[type="checkbox"]:checked + label::before, -.checkbox-info input[type="radio"]:checked + label::before { - background-color: #5bc0de; - border-color: #5bc0de; -} -.checkbox-info input[type="checkbox"]:checked + label::after, -.checkbox-info input[type="radio"]:checked + label::after { - color: #fff; -} - -.checkbox-warning input[type="checkbox"]:checked + label::before, -.checkbox-warning input[type="radio"]:checked + label::before { - background-color: #f0ad4e; - border-color: #f0ad4e; -} -.checkbox-warning input[type="checkbox"]:checked + label::after, -.checkbox-warning input[type="radio"]:checked + label::after { - color: #fff; -} - -.checkbox-success input[type="checkbox"]:checked + label::before, -.checkbox-success input[type="radio"]:checked + label::before { - background-color: #5cb85c; - border-color: #5cb85c; -} -.checkbox-success input[type="checkbox"]:checked + label::after, -.checkbox-success input[type="radio"]:checked + label::after { - color: #fff; -} - -.radio { - padding-left: 20px; -} -.radio label { - display: inline-block; - vertical-align: middle; - position: relative; - padding-left: 5px; -} -.radio label::before { - content: ""; - display: inline-block; - position: absolute; - width: 17px; - height: 17px; - left: 0; - margin-left: -20px; - border: 1px solid #cccccc; - border-radius: 50%; - background-color: #fff; - -webkit-transition: border 0.15s ease-in-out; - -o-transition: border 0.15s ease-in-out; - transition: border 0.15s ease-in-out; -} -.radio label::after { - display: inline-block; - position: absolute; - content: " "; - width: 11px; - height: 11px; - left: 3px; - top: 3px; - margin-left: -20px; - border-radius: 50%; - background-color: #555555; - -webkit-transform: scale(0, 0); - -ms-transform: scale(0, 0); - -o-transform: scale(0, 0); - transform: scale(0, 0); - -webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); - -moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); - -o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); - transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); -} -.radio input[type="radio"] { - opacity: 0; - z-index: 1; -} -.radio input[type="radio"]:focus + label::before { - outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px; -} -.radio input[type="radio"]:checked + label::after { - -webkit-transform: scale(1, 1); - -ms-transform: scale(1, 1); - -o-transform: scale(1, 1); - transform: scale(1, 1); -} -.radio input[type="radio"]:disabled + label { - opacity: 0.65; -} -.radio input[type="radio"]:disabled + label::before { - cursor: not-allowed; -} -.radio.radio-inline { - margin-top: 0; -} - -.radio-primary input[type="radio"] + label::after { - background-color: #337ab7; -} -.radio-primary input[type="radio"]:checked + label::before { - border-color: #337ab7; -} -.radio-primary input[type="radio"]:checked + label::after { - background-color: #337ab7; -} - -.radio-danger input[type="radio"] + label::after { - background-color: #d9534f; -} -.radio-danger input[type="radio"]:checked + label::before { - border-color: #d9534f; -} -.radio-danger input[type="radio"]:checked + label::after { - background-color: #d9534f; -} - -.radio-info input[type="radio"] + label::after { - background-color: #5bc0de; -} -.radio-info input[type="radio"]:checked + label::before { - border-color: #5bc0de; -} -.radio-info input[type="radio"]:checked + label::after { - background-color: #5bc0de; -} - -.radio-warning input[type="radio"] + label::after { - background-color: #f0ad4e; -} -.radio-warning input[type="radio"]:checked + label::before { - border-color: #f0ad4e; -} -.radio-warning input[type="radio"]:checked + label::after { - background-color: #f0ad4e; -} - -.radio-success input[type="radio"] + label::after { - background-color: #5cb85c; -} -.radio-success input[type="radio"]:checked + label::before { - border-color: #5cb85c; -} -.radio-success input[type="radio"]:checked + label::after { - background-color: #5cb85c; -} - -input[type="checkbox"].styled:checked + label:after, -input[type="radio"].styled:checked + label:after { - font-family: 'FontAwesome'; - content: "\f00c"; -} -input[type="checkbox"] .styled:checked + label::before, -input[type="radio"] .styled:checked + label::before { - color: #fff; -} -input[type="checkbox"] .styled:checked + label::after, -input[type="radio"] .styled:checked + label::after { - color: #fff; -} diff --git a/public/res/template/css/plugins/blueimp/css/blueimp-gallery.min.css b/public/res/template/css/plugins/blueimp/css/blueimp-gallery.min.css deleted file mode 100644 index c65eaa05..00000000 --- a/public/res/template/css/plugins/blueimp/css/blueimp-gallery.min.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.blueimp-gallery,.blueimp-gallery>.slides>.slide>.slide-content{position:absolute;top:0;right:0;bottom:0;left:0;-moz-backface-visibility:hidden}.blueimp-gallery>.slides>.slide>.slide-content{margin:auto;width:auto;height:auto;max-width:100%;max-height:100%;opacity:1}.blueimp-gallery{position:fixed;z-index:999999;overflow:hidden;background:#000;background:rgba(0,0,0,.9);opacity:0;display:none;direction:ltr;-ms-touch-action:none;touch-action:none}.blueimp-gallery-carousel{position:relative;z-index:auto;margin:1em auto;padding-bottom:56.25%;box-shadow:0 0 10px #000;-ms-touch-action:pan-y;touch-action:pan-y}.blueimp-gallery-display{display:block;opacity:1}.blueimp-gallery>.slides{position:relative;height:100%;overflow:hidden}.blueimp-gallery-carousel>.slides{position:absolute}.blueimp-gallery>.slides>.slide{position:relative;float:left;height:100%;text-align:center;-webkit-transition-timing-function:cubic-bezier(0.645,.045,.355,1);-moz-transition-timing-function:cubic-bezier(0.645,.045,.355,1);-ms-transition-timing-function:cubic-bezier(0.645,.045,.355,1);-o-transition-timing-function:cubic-bezier(0.645,.045,.355,1);transition-timing-function:cubic-bezier(0.645,.045,.355,1)}.blueimp-gallery,.blueimp-gallery>.slides>.slide>.slide-content{-webkit-transition:opacity .5s linear;-moz-transition:opacity .5s linear;-ms-transition:opacity .5s linear;-o-transition:opacity .5s linear;transition:opacity .5s linear}.blueimp-gallery>.slides>.slide-loading{background:url(../img/loading.gif) center no-repeat;background-size:64px 64px}.blueimp-gallery>.slides>.slide-loading>.slide-content{opacity:0}.blueimp-gallery>.slides>.slide-error{background:url(../img/error.png) center no-repeat}.blueimp-gallery>.slides>.slide-error>.slide-content{display:none}.blueimp-gallery>.prev,.blueimp-gallery>.next{position:absolute;top:50%;left:15px;width:40px;height:40px;margin-top:-23px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-decoration:none;text-shadow:0 0 2px #000;text-align:center;background:#222;background:rgba(0,0,0,.5);-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;cursor:pointer;display:none}.blueimp-gallery>.next{left:auto;right:15px}.blueimp-gallery>.close,.blueimp-gallery>.title{position:absolute;top:15px;left:15px;margin:0 40px 0 0;font-size:20px;line-height:30px;color:#fff;text-shadow:0 0 2px #000;opacity:.8;display:none}.blueimp-gallery>.close{padding:15px;right:15px;left:auto;margin:-15px;font-size:30px;text-decoration:none;cursor:pointer}.blueimp-gallery>.play-pause{position:absolute;right:15px;bottom:15px;width:15px;height:15px;background:url(../img/play-pause.png) 0 0 no-repeat;cursor:pointer;opacity:.5;display:none}.blueimp-gallery-playing>.play-pause{background-position:-15px 0}.blueimp-gallery>.prev:hover,.blueimp-gallery>.next:hover,.blueimp-gallery>.close:hover,.blueimp-gallery>.title:hover,.blueimp-gallery>.play-pause:hover{color:#fff;opacity:1}.blueimp-gallery-controls>.prev,.blueimp-gallery-controls>.next,.blueimp-gallery-controls>.close,.blueimp-gallery-controls>.title,.blueimp-gallery-controls>.play-pause{display:block;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.blueimp-gallery-single>.prev,.blueimp-gallery-left>.prev,.blueimp-gallery-single>.next,.blueimp-gallery-right>.next,.blueimp-gallery-single>.play-pause{display:none}.blueimp-gallery>.slides>.slide>.slide-content,.blueimp-gallery>.prev,.blueimp-gallery>.next,.blueimp-gallery>.close,.blueimp-gallery>.play-pause{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}body:last-child .blueimp-gallery>.slides>.slide-error{background-image:url(../img/error.svg)}body:last-child .blueimp-gallery>.play-pause{width:20px;height:20px;background-size:40px 20px;background-image:url(../img/play-pause.svg)}body:last-child .blueimp-gallery-playing>.play-pause{background-position:-20px 0}*+html .blueimp-gallery>.slides>.slide{min-height:300px}*+html .blueimp-gallery>.slides>.slide>.slide-content{position:relative}@charset "UTF-8";.blueimp-gallery>.indicator{position:absolute;top:auto;right:15px;bottom:15px;left:15px;margin:0 40px;padding:0;list-style:none;text-align:center;line-height:10px;display:none}.blueimp-gallery>.indicator>li{display:inline-block;width:9px;height:9px;margin:6px 3px 0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;border:1px solid transparent;background:#ccc;background:rgba(255,255,255,.25)center no-repeat;border-radius:5px;box-shadow:0 0 2px #000;opacity:.5;cursor:pointer}.blueimp-gallery>.indicator>li:hover,.blueimp-gallery>.indicator>.active{background-color:#fff;border-color:#fff;opacity:1}.blueimp-gallery-controls>.indicator{display:block;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.blueimp-gallery-single>.indicator{display:none}.blueimp-gallery>.indicator{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}*+html .blueimp-gallery>.indicator>li{display:inline}@charset "UTF-8";.blueimp-gallery>.slides>.slide>.video-content>img{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:auto;height:auto;max-width:100%;max-height:100%;-moz-backface-visibility:hidden}.blueimp-gallery>.slides>.slide>.video-content>video{position:absolute;top:0;left:0;width:100%;height:100%}.blueimp-gallery>.slides>.slide>.video-content>iframe{position:absolute;top:100%;left:0;width:100%;height:100%;border:none}.blueimp-gallery>.slides>.slide>.video-playing>iframe{top:0}.blueimp-gallery>.slides>.slide>.video-content>a{position:absolute;top:50%;right:0;left:0;margin:-64px auto 0;width:128px;height:128px;background:url(../img/video-play.png) center no-repeat;opacity:.8;cursor:pointer}.blueimp-gallery>.slides>.slide>.video-content>a:hover{opacity:1}.blueimp-gallery>.slides>.slide>.video-playing>a,.blueimp-gallery>.slides>.slide>.video-playing>img{display:none}.blueimp-gallery>.slides>.slide>.video-content>video{display:none}.blueimp-gallery>.slides>.slide>.video-playing>video{display:block}.blueimp-gallery>.slides>.slide>.video-loading>a{background:url(../img/loading.gif) center no-repeat;background-size:64px 64px}body:last-child .blueimp-gallery>.slides>.slide>.video-content:not(.video-loading)>a{background-image:url(../img/video-play.svg)}*+html .blueimp-gallery>.slides>.slide>.video-content{height:100%}*+html .blueimp-gallery>.slides>.slide>.video-content>a{left:50%;margin-left:-64px} \ No newline at end of file diff --git a/public/res/template/css/plugins/blueimp/img/error.png b/public/res/template/css/plugins/blueimp/img/error.png deleted file mode 100644 index a5577c33..00000000 Binary files a/public/res/template/css/plugins/blueimp/img/error.png and /dev/null differ diff --git a/public/res/template/css/plugins/blueimp/img/error.svg b/public/res/template/css/plugins/blueimp/img/error.svg deleted file mode 100644 index 184206a1..00000000 --- a/public/res/template/css/plugins/blueimp/img/error.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/res/template/css/plugins/blueimp/img/loading.gif b/public/res/template/css/plugins/blueimp/img/loading.gif deleted file mode 100644 index 90f28cbd..00000000 Binary files a/public/res/template/css/plugins/blueimp/img/loading.gif and /dev/null differ diff --git a/public/res/template/css/plugins/blueimp/img/play-pause.png b/public/res/template/css/plugins/blueimp/img/play-pause.png deleted file mode 100644 index ece6cfb9..00000000 Binary files a/public/res/template/css/plugins/blueimp/img/play-pause.png and /dev/null differ diff --git a/public/res/template/css/plugins/blueimp/img/play-pause.svg b/public/res/template/css/plugins/blueimp/img/play-pause.svg deleted file mode 100644 index a7f1f50c..00000000 --- a/public/res/template/css/plugins/blueimp/img/play-pause.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/res/template/css/plugins/blueimp/img/video-play.png b/public/res/template/css/plugins/blueimp/img/video-play.png deleted file mode 100644 index 353e3a59..00000000 Binary files a/public/res/template/css/plugins/blueimp/img/video-play.png and /dev/null differ diff --git a/public/res/template/css/plugins/blueimp/img/video-play.svg b/public/res/template/css/plugins/blueimp/img/video-play.svg deleted file mode 100644 index b5ea206d..00000000 --- a/public/res/template/css/plugins/blueimp/img/video-play.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/res/template/css/plugins/bootstrap-markdown/bootstrap-markdown.min.css b/public/res/template/css/plugins/bootstrap-markdown/bootstrap-markdown.min.css deleted file mode 100644 index 388b2f5f..00000000 --- a/public/res/template/css/plugins/bootstrap-markdown/bootstrap-markdown.min.css +++ /dev/null @@ -1 +0,0 @@ -.md-editor{display:block;border:1px solid #ddd}.md-editor .md-footer,.md-editor>.md-header{display:block;padding:6px 4px;background:#f5f5f5}.md-editor>.md-header{margin:0}.md-editor>.md-preview{background:#fff;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;min-height:10px;overflow:auto}.md-editor>textarea{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;outline:0;margin:0;display:block;padding:0;width:100%;border:0;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;border-radius:0;box-shadow:none;background:#eee}.md-editor>textarea:focus{box-shadow:none;background:#fff}.md-editor.active{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.md-editor .md-controls{float:right;padding:3px}.md-editor .md-controls .md-control{right:5px;color:#bebebe;padding:3px 3px 3px 10px}.md-editor .md-controls .md-control:hover{color:#333}.md-editor.md-fullscreen-mode{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999;padding:60px 30px 15px;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-footer{display:none}.md-editor.md-fullscreen-mode .md-input,.md-editor.md-fullscreen-mode .md-preview{margin:0 auto!important;height:100%!important;font-size:20px!important;padding:20px!important;color:#999;line-height:1.6em!important;resize:none!important;box-shadow:none!important;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-preview{color:#333;overflow:auto}.md-editor.md-fullscreen-mode .md-input:focus,.md-editor.md-fullscreen-mode .md-input:hover{color:#333;background:#fff!important}.md-editor.md-fullscreen-mode .md-header{background:0 0;text-align:center;position:fixed;width:100%;top:20px}.md-editor.md-fullscreen-mode .btn-group{float:none}.md-editor.md-fullscreen-mode .btn{border:0;background:0 0;color:#b3b3b3}.md-editor.md-fullscreen-mode .btn.active,.md-editor.md-fullscreen-mode .btn:active,.md-editor.md-fullscreen-mode .btn:focus,.md-editor.md-fullscreen-mode .btn:hover{box-shadow:none;color:#333}.md-editor.md-fullscreen-mode .md-fullscreen-controls{position:absolute;top:20px;right:20px;text-align:right;z-index:1002;display:block}.md-editor.md-fullscreen-mode .md-fullscreen-controls a{color:#b3b3b3;clear:right;margin:10px;width:30px;height:30px;text-align:center}.md-editor.md-fullscreen-mode .md-fullscreen-controls a:hover{color:#333;text-decoration:none}.md-editor.md-fullscreen-mode .md-editor{height:100%!important;position:relative}.md-editor .md-fullscreen-controls{display:none}.md-nooverflow{overflow:hidden;position:fixed;width:100%} \ No newline at end of file diff --git a/public/res/template/css/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css b/public/res/template/css/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css deleted file mode 100644 index b31f01c7..00000000 --- a/public/res/template/css/plugins/bootstrap-tagsinput/bootstrap-tagsinput.css +++ /dev/null @@ -1,55 +0,0 @@ -.bootstrap-tagsinput { - background-color: #fff; - border: 1px solid #ccc; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - display: inline-block; - padding: 4px 6px; - color: #555; - vertical-align: middle; - border-radius: 4px; - max-width: 100%; - line-height: 22px; - cursor: text; -} -.bootstrap-tagsinput input { - border: none; - box-shadow: none; - outline: none; - background-color: transparent; - padding: 0 6px; - margin: 0; - width: auto; - max-width: inherit; -} -.bootstrap-tagsinput.form-control input::-moz-placeholder { - color: #777; - opacity: 1; -} -.bootstrap-tagsinput.form-control input:-ms-input-placeholder { - color: #777; -} -.bootstrap-tagsinput.form-control input::-webkit-input-placeholder { - color: #777; -} -.bootstrap-tagsinput input:focus { - border: none; - box-shadow: none; -} -.bootstrap-tagsinput .tag { - margin-right: 2px; - color: white; -} -.bootstrap-tagsinput .tag [data-role="remove"] { - margin-left: 8px; - cursor: pointer; -} -.bootstrap-tagsinput .tag [data-role="remove"]:after { - content: "x"; - padding: 0px 2px; -} -.bootstrap-tagsinput .tag [data-role="remove"]:hover { - box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); -} -.bootstrap-tagsinput .tag [data-role="remove"]:hover:active { - box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); -} diff --git a/public/res/template/css/plugins/bootstrapSocial/bootstrap-social.css b/public/res/template/css/plugins/bootstrapSocial/bootstrap-social.css deleted file mode 100644 index 662a736c..00000000 --- a/public/res/template/css/plugins/bootstrapSocial/bootstrap-social.css +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Social Buttons for Bootstrap - * - * Copyright 2013-2015 Panayiotis Lipiridis - * Licensed under the MIT License - * - * https://github.com/lipis/bootstrap-social - */ - -.btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} -.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} -.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} -.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} -.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} -.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg>:first-child{line-height:45px;width:45px;font-size:1.8em} -.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm>:first-child{line-height:28px;width:28px;font-size:1.4em} -.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs>:first-child{line-height:20px;width:20px;font-size:1.2em} -.btn-social-icon>:first-child{border:none;text-align:center;width:100% !important} -.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} -.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} -.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} -.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:focus,.btn-adn.focus{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} -.btn-adn:hover{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} -.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}.btn-adn:active:hover,.btn-adn.active:hover,.open>.dropdown-toggle.btn-adn:hover,.btn-adn:active:focus,.btn-adn.active:focus,.open>.dropdown-toggle.btn-adn:focus,.btn-adn:active.focus,.btn-adn.active.focus,.open>.dropdown-toggle.btn-adn.focus{color:#fff;background-color:#b94630;border-color:rgba(0,0,0,0.2)} -.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} -.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled.focus,.btn-adn[disabled].focus,fieldset[disabled] .btn-adn.focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2)} -.btn-adn .badge{color:#d87a68;background-color:#fff} -.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:focus,.btn-bitbucket.focus{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} -.btn-bitbucket:hover{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} -.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:active:hover,.btn-bitbucket.active:hover,.open>.dropdown-toggle.btn-bitbucket:hover,.btn-bitbucket:active:focus,.btn-bitbucket.active:focus,.open>.dropdown-toggle.btn-bitbucket:focus,.btn-bitbucket:active.focus,.btn-bitbucket.active.focus,.open>.dropdown-toggle.btn-bitbucket.focus{color:#fff;background-color:#0f253c;border-color:rgba(0,0,0,0.2)} -.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} -.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled.focus,.btn-bitbucket[disabled].focus,fieldset[disabled] .btn-bitbucket.focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)} -.btn-bitbucket .badge{color:#205081;background-color:#fff} -.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:focus,.btn-dropbox.focus{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} -.btn-dropbox:hover{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} -.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}.btn-dropbox:active:hover,.btn-dropbox.active:hover,.open>.dropdown-toggle.btn-dropbox:hover,.btn-dropbox:active:focus,.btn-dropbox.active:focus,.open>.dropdown-toggle.btn-dropbox:focus,.btn-dropbox:active.focus,.btn-dropbox.active.focus,.open>.dropdown-toggle.btn-dropbox.focus{color:#fff;background-color:#0a568c;border-color:rgba(0,0,0,0.2)} -.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} -.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled.focus,.btn-dropbox[disabled].focus,fieldset[disabled] .btn-dropbox.focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} -.btn-dropbox .badge{color:#1087dd;background-color:#fff} -.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:focus,.btn-facebook.focus{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} -.btn-facebook:hover{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} -.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}.btn-facebook:active:hover,.btn-facebook.active:hover,.open>.dropdown-toggle.btn-facebook:hover,.btn-facebook:active:focus,.btn-facebook.active:focus,.open>.dropdown-toggle.btn-facebook:focus,.btn-facebook:active.focus,.btn-facebook.active.focus,.open>.dropdown-toggle.btn-facebook.focus{color:#fff;background-color:#23345a;border-color:rgba(0,0,0,0.2)} -.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} -.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled.focus,.btn-facebook[disabled].focus,fieldset[disabled] .btn-facebook.focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} -.btn-facebook .badge{color:#3b5998;background-color:#fff} -.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:focus,.btn-flickr.focus{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} -.btn-flickr:hover{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} -.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}.btn-flickr:active:hover,.btn-flickr.active:hover,.open>.dropdown-toggle.btn-flickr:hover,.btn-flickr:active:focus,.btn-flickr.active:focus,.open>.dropdown-toggle.btn-flickr:focus,.btn-flickr:active.focus,.btn-flickr.active.focus,.open>.dropdown-toggle.btn-flickr.focus{color:#fff;background-color:#a80057;border-color:rgba(0,0,0,0.2)} -.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} -.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled.focus,.btn-flickr[disabled].focus,fieldset[disabled] .btn-flickr.focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} -.btn-flickr .badge{color:#ff0084;background-color:#fff} -.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:focus,.btn-foursquare.focus{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} -.btn-foursquare:hover{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} -.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}.btn-foursquare:active:hover,.btn-foursquare.active:hover,.open>.dropdown-toggle.btn-foursquare:hover,.btn-foursquare:active:focus,.btn-foursquare.active:focus,.open>.dropdown-toggle.btn-foursquare:focus,.btn-foursquare:active.focus,.btn-foursquare.active.focus,.open>.dropdown-toggle.btn-foursquare.focus{color:#fff;background-color:#e30742;border-color:rgba(0,0,0,0.2)} -.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} -.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled.focus,.btn-foursquare[disabled].focus,fieldset[disabled] .btn-foursquare.focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2)} -.btn-foursquare .badge{color:#f94877;background-color:#fff} -.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:focus,.btn-github.focus{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} -.btn-github:hover{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} -.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}.btn-github:active:hover,.btn-github.active:hover,.open>.dropdown-toggle.btn-github:hover,.btn-github:active:focus,.btn-github.active:focus,.open>.dropdown-toggle.btn-github:focus,.btn-github:active.focus,.btn-github.active.focus,.open>.dropdown-toggle.btn-github.focus{color:#fff;background-color:#191919;border-color:rgba(0,0,0,0.2)} -.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} -.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled.focus,.btn-github[disabled].focus,fieldset[disabled] .btn-github.focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)} -.btn-github .badge{color:#444;background-color:#fff} -.btn-google{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google:focus,.btn-google.focus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} -.btn-google:hover{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} -.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}.btn-google:active:hover,.btn-google.active:hover,.open>.dropdown-toggle.btn-google:hover,.btn-google:active:focus,.btn-google.active:focus,.open>.dropdown-toggle.btn-google:focus,.btn-google:active.focus,.btn-google.active.focus,.open>.dropdown-toggle.btn-google.focus{color:#fff;background-color:#a32b1c;border-color:rgba(0,0,0,0.2)} -.btn-google:active,.btn-google.active,.open>.dropdown-toggle.btn-google{background-image:none} -.btn-google.disabled,.btn-google[disabled],fieldset[disabled] .btn-google,.btn-google.disabled:hover,.btn-google[disabled]:hover,fieldset[disabled] .btn-google:hover,.btn-google.disabled:focus,.btn-google[disabled]:focus,fieldset[disabled] .btn-google:focus,.btn-google.disabled.focus,.btn-google[disabled].focus,fieldset[disabled] .btn-google.focus,.btn-google.disabled:active,.btn-google[disabled]:active,fieldset[disabled] .btn-google:active,.btn-google.disabled.active,.btn-google[disabled].active,fieldset[disabled] .btn-google.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} -.btn-google .badge{color:#dd4b39;background-color:#fff} -.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:focus,.btn-instagram.focus{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} -.btn-instagram:hover{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} -.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}.btn-instagram:active:hover,.btn-instagram.active:hover,.open>.dropdown-toggle.btn-instagram:hover,.btn-instagram:active:focus,.btn-instagram.active:focus,.open>.dropdown-toggle.btn-instagram:focus,.btn-instagram:active.focus,.btn-instagram.active.focus,.open>.dropdown-toggle.btn-instagram.focus{color:#fff;background-color:#26455d;border-color:rgba(0,0,0,0.2)} -.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} -.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled.focus,.btn-instagram[disabled].focus,fieldset[disabled] .btn-instagram.focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)} -.btn-instagram .badge{color:#3f729b;background-color:#fff} -.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:focus,.btn-linkedin.focus{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} -.btn-linkedin:hover{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} -.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}.btn-linkedin:active:hover,.btn-linkedin.active:hover,.open>.dropdown-toggle.btn-linkedin:hover,.btn-linkedin:active:focus,.btn-linkedin.active:focus,.open>.dropdown-toggle.btn-linkedin:focus,.btn-linkedin:active.focus,.btn-linkedin.active.focus,.open>.dropdown-toggle.btn-linkedin.focus{color:#fff;background-color:#00405f;border-color:rgba(0,0,0,0.2)} -.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} -.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled.focus,.btn-linkedin[disabled].focus,fieldset[disabled] .btn-linkedin.focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} -.btn-linkedin .badge{color:#007bb6;background-color:#fff} -.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:focus,.btn-microsoft.focus{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} -.btn-microsoft:hover{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} -.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}.btn-microsoft:active:hover,.btn-microsoft.active:hover,.open>.dropdown-toggle.btn-microsoft:hover,.btn-microsoft:active:focus,.btn-microsoft.active:focus,.open>.dropdown-toggle.btn-microsoft:focus,.btn-microsoft:active.focus,.btn-microsoft.active.focus,.open>.dropdown-toggle.btn-microsoft.focus{color:#fff;background-color:#0f4bac;border-color:rgba(0,0,0,0.2)} -.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} -.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled.focus,.btn-microsoft[disabled].focus,fieldset[disabled] .btn-microsoft.focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2)} -.btn-microsoft .badge{color:#2672ec;background-color:#fff} -.btn-odnoklassniki{color:#fff;background-color:#f4731c;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:focus,.btn-odnoklassniki.focus{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} -.btn-odnoklassniki:hover{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)} -.btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{color:#fff;background-color:#d35b0a;border-color:rgba(0,0,0,0.2)}.btn-odnoklassniki:active:hover,.btn-odnoklassniki.active:hover,.open>.dropdown-toggle.btn-odnoklassniki:hover,.btn-odnoklassniki:active:focus,.btn-odnoklassniki.active:focus,.open>.dropdown-toggle.btn-odnoklassniki:focus,.btn-odnoklassniki:active.focus,.btn-odnoklassniki.active.focus,.open>.dropdown-toggle.btn-odnoklassniki.focus{color:#fff;background-color:#b14c09;border-color:rgba(0,0,0,0.2)} -.btn-odnoklassniki:active,.btn-odnoklassniki.active,.open>.dropdown-toggle.btn-odnoklassniki{background-image:none} -.btn-odnoklassniki.disabled,.btn-odnoklassniki[disabled],fieldset[disabled] .btn-odnoklassniki,.btn-odnoklassniki.disabled:hover,.btn-odnoklassniki[disabled]:hover,fieldset[disabled] .btn-odnoklassniki:hover,.btn-odnoklassniki.disabled:focus,.btn-odnoklassniki[disabled]:focus,fieldset[disabled] .btn-odnoklassniki:focus,.btn-odnoklassniki.disabled.focus,.btn-odnoklassniki[disabled].focus,fieldset[disabled] .btn-odnoklassniki.focus,.btn-odnoklassniki.disabled:active,.btn-odnoklassniki[disabled]:active,fieldset[disabled] .btn-odnoklassniki:active,.btn-odnoklassniki.disabled.active,.btn-odnoklassniki[disabled].active,fieldset[disabled] .btn-odnoklassniki.active{background-color:#f4731c;border-color:rgba(0,0,0,0.2)} -.btn-odnoklassniki .badge{color:#f4731c;background-color:#fff} -.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:focus,.btn-openid.focus{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} -.btn-openid:hover{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} -.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}.btn-openid:active:hover,.btn-openid.active:hover,.open>.dropdown-toggle.btn-openid:hover,.btn-openid:active:focus,.btn-openid.active:focus,.open>.dropdown-toggle.btn-openid:focus,.btn-openid:active.focus,.btn-openid.active.focus,.open>.dropdown-toggle.btn-openid.focus{color:#fff;background-color:#b86607;border-color:rgba(0,0,0,0.2)} -.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} -.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled.focus,.btn-openid[disabled].focus,fieldset[disabled] .btn-openid.focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2)} -.btn-openid .badge{color:#f7931e;background-color:#fff} -.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:focus,.btn-pinterest.focus{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} -.btn-pinterest:hover{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} -.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}.btn-pinterest:active:hover,.btn-pinterest.active:hover,.open>.dropdown-toggle.btn-pinterest:hover,.btn-pinterest:active:focus,.btn-pinterest.active:focus,.open>.dropdown-toggle.btn-pinterest:focus,.btn-pinterest:active.focus,.btn-pinterest.active.focus,.open>.dropdown-toggle.btn-pinterest.focus{color:#fff;background-color:#801419;border-color:rgba(0,0,0,0.2)} -.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} -.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled.focus,.btn-pinterest[disabled].focus,fieldset[disabled] .btn-pinterest.focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} -.btn-pinterest .badge{color:#cb2027;background-color:#fff} -.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:focus,.btn-reddit.focus{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} -.btn-reddit:hover{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} -.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}.btn-reddit:active:hover,.btn-reddit.active:hover,.open>.dropdown-toggle.btn-reddit:hover,.btn-reddit:active:focus,.btn-reddit.active:focus,.open>.dropdown-toggle.btn-reddit:focus,.btn-reddit:active.focus,.btn-reddit.active.focus,.open>.dropdown-toggle.btn-reddit.focus{color:#000;background-color:#98ccff;border-color:rgba(0,0,0,0.2)} -.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} -.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled.focus,.btn-reddit[disabled].focus,fieldset[disabled] .btn-reddit.focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} -.btn-reddit .badge{color:#eff7ff;background-color:#000} -.btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:focus,.btn-soundcloud.focus{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} -.btn-soundcloud:hover{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} -.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:active:hover,.btn-soundcloud.active:hover,.open>.dropdown-toggle.btn-soundcloud:hover,.btn-soundcloud:active:focus,.btn-soundcloud.active:focus,.open>.dropdown-toggle.btn-soundcloud:focus,.btn-soundcloud:active.focus,.btn-soundcloud.active.focus,.open>.dropdown-toggle.btn-soundcloud.focus{color:#fff;background-color:#a83800;border-color:rgba(0,0,0,0.2)} -.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} -.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled.focus,.btn-soundcloud[disabled].focus,fieldset[disabled] .btn-soundcloud.focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#f50;border-color:rgba(0,0,0,0.2)} -.btn-soundcloud .badge{color:#f50;background-color:#fff} -.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:focus,.btn-tumblr.focus{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} -.btn-tumblr:hover{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} -.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}.btn-tumblr:active:hover,.btn-tumblr.active:hover,.open>.dropdown-toggle.btn-tumblr:hover,.btn-tumblr:active:focus,.btn-tumblr.active:focus,.open>.dropdown-toggle.btn-tumblr:focus,.btn-tumblr:active.focus,.btn-tumblr.active.focus,.open>.dropdown-toggle.btn-tumblr.focus{color:#fff;background-color:#111c26;border-color:rgba(0,0,0,0.2)} -.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} -.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled.focus,.btn-tumblr[disabled].focus,fieldset[disabled] .btn-tumblr.focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} -.btn-tumblr .badge{color:#2c4762;background-color:#fff} -.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:focus,.btn-twitter.focus{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} -.btn-twitter:hover{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} -.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}.btn-twitter:active:hover,.btn-twitter.active:hover,.open>.dropdown-toggle.btn-twitter:hover,.btn-twitter:active:focus,.btn-twitter.active:focus,.open>.dropdown-toggle.btn-twitter:focus,.btn-twitter:active.focus,.btn-twitter.active.focus,.open>.dropdown-toggle.btn-twitter.focus{color:#fff;background-color:#1583d7;border-color:rgba(0,0,0,0.2)} -.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} -.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled.focus,.btn-twitter[disabled].focus,fieldset[disabled] .btn-twitter.focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)} -.btn-twitter .badge{color:#55acee;background-color:#fff} -.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:focus,.btn-vimeo.focus{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} -.btn-vimeo:hover{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} -.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}.btn-vimeo:active:hover,.btn-vimeo.active:hover,.open>.dropdown-toggle.btn-vimeo:hover,.btn-vimeo:active:focus,.btn-vimeo.active:focus,.open>.dropdown-toggle.btn-vimeo:focus,.btn-vimeo:active.focus,.btn-vimeo.active.focus,.open>.dropdown-toggle.btn-vimeo.focus{color:#fff;background-color:#0f7b9f;border-color:rgba(0,0,0,0.2)} -.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} -.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled.focus,.btn-vimeo[disabled].focus,fieldset[disabled] .btn-vimeo.focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} -.btn-vimeo .badge{color:#1ab7ea;background-color:#fff} -.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:focus,.btn-vk.focus{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} -.btn-vk:hover{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} -.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}.btn-vk:active:hover,.btn-vk.active:hover,.open>.dropdown-toggle.btn-vk:hover,.btn-vk:active:focus,.btn-vk.active:focus,.open>.dropdown-toggle.btn-vk:focus,.btn-vk:active.focus,.btn-vk.active.focus,.open>.dropdown-toggle.btn-vk.focus{color:#fff;background-color:#3a526b;border-color:rgba(0,0,0,0.2)} -.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} -.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled.focus,.btn-vk[disabled].focus,fieldset[disabled] .btn-vk.focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} -.btn-vk .badge{color:#587ea3;background-color:#fff} -.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:focus,.btn-yahoo.focus{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} -.btn-yahoo:hover{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} -.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}.btn-yahoo:active:hover,.btn-yahoo.active:hover,.open>.dropdown-toggle.btn-yahoo:hover,.btn-yahoo:active:focus,.btn-yahoo.active:focus,.open>.dropdown-toggle.btn-yahoo:focus,.btn-yahoo:active.focus,.btn-yahoo.active.focus,.open>.dropdown-toggle.btn-yahoo.focus{color:#fff;background-color:#39074e;border-color:rgba(0,0,0,0.2)} -.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} -.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled.focus,.btn-yahoo[disabled].focus,fieldset[disabled] .btn-yahoo.focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2)} -.btn-yahoo .badge{color:#720e9e;background-color:#fff} diff --git a/public/res/template/css/plugins/bootstrapTour/bootstrap-tour.min.css b/public/res/template/css/plugins/bootstrapTour/bootstrap-tour.min.css deleted file mode 100644 index f98810cc..00000000 --- a/public/res/template/css/plugins/bootstrapTour/bootstrap-tour.min.css +++ /dev/null @@ -1,22 +0,0 @@ -/* ======================================================================== - * bootstrap-tour - v0.10.1 - * http://bootstraptour.com - * ======================================================================== - * Copyright 2012-2013 Ulrich Sossou - * - * ======================================================================== - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ======================================================================== - */ - -.tour-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;background-color:#000;opacity:.8;filter:alpha(opacity=80)}.tour-step-backdrop{position:relative;z-index:1101;background:inherit}.tour-step-backdrop>td{position:relative;z-index:1101}.tour-step-background{position:absolute!important;z-index:1100;background:inherit;border-radius:6px}.popover[class*=tour-]{z-index:1100}.popover[class*=tour-] .popover-navigation{padding:9px 14px}.popover[class*=tour-] .popover-navigation [data-role=end]{float:right}.popover[class*=tour-] .popover-navigation [data-role=prev],.popover[class*=tour-] .popover-navigation [data-role=next],.popover[class*=tour-] .popover-navigation [data-role=end]{cursor:pointer}.popover[class*=tour-] .popover-navigation [data-role=prev].disabled,.popover[class*=tour-] .popover-navigation [data-role=next].disabled,.popover[class*=tour-] .popover-navigation [data-role=end].disabled{cursor:default}.popover[class*=tour-].orphan{position:fixed;margin-top:0}.popover[class*=tour-].orphan .arrow{display:none} \ No newline at end of file diff --git a/public/res/template/css/plugins/c3/c3.min.css b/public/res/template/css/plugins/c3/c3.min.css deleted file mode 100644 index 1e20d5b1..00000000 --- a/public/res/template/css/plugins/c3/c3.min.css +++ /dev/null @@ -1 +0,0 @@ -.c3 svg{font:10px sans-serif;-webkit-tap-highlight-color:transparent}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}.c3-chart-arc path{stroke:#fff}.c3-chart-arc text{fill:#fff;font-size:13px}.c3-grid line{stroke:#aaa}.c3-grid text{fill:#aaa}.c3-xgrid,.c3-ygrid{stroke-dasharray:3 3}.c3-text.c3-empty{fill:gray;font-size:2em}.c3-line{stroke-width:1px}.c3-circle._expanded_{stroke-width:1px;stroke:#fff}.c3-selected-circle{fill:#fff;stroke-width:2px}.c3-bar{stroke-width:0}.c3-bar._expanded_{fill-opacity:.75}.c3-target.c3-focused{opacity:1}.c3-target.c3-focused path.c3-line,.c3-target.c3-focused path.c3-step{stroke-width:2px}.c3-target.c3-defocused{opacity:.3!important}.c3-region{fill:#4682b4;fill-opacity:.1}.c3-brush .extent{fill-opacity:.1}.c3-legend-item{font-size:12px}.c3-legend-item-hidden{opacity:.15}.c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3-title{font:14px sans-serif}.c3-tooltip-container{z-index:10}.c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;-webkit-box-shadow:7px 7px 12px -9px #777;-moz-box-shadow:7px 7px 12px -9px #777;box-shadow:7px 7px 12px -9px #777;opacity:.9}.c3-tooltip tr{border:1px solid #CCC}.c3-tooltip th{background-color:#aaa;font-size:14px;padding:2px 5px;text-align:left;color:#FFF}.c3-tooltip td{font-size:13px;padding:3px 6px;background-color:#fff;border-left:1px dotted #999}.c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3-tooltip td.value{text-align:right}.c3-area{stroke-width:0;opacity:.2}.c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3-chart-arcs .c3-chart-arcs-gauge-max,.c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3-chart-arc .c3-gauge-value{fill:#000} \ No newline at end of file diff --git a/public/res/template/css/plugins/chartist/chartist.min.css b/public/res/template/css/plugins/chartist/chartist.min.css deleted file mode 100644 index 61ceba79..00000000 --- a/public/res/template/css/plugins/chartist/chartist.min.css +++ /dev/null @@ -1,773 +0,0 @@ -.ct-label { - fill: rgba(0, 0, 0, 0.4); - color: rgba(0, 0, 0, 0.4); - font-size: 1rem; - line-height: 1; -} - -.ct-chart-line .ct-label, -.ct-chart-bar .ct-label { - display: block; - display: -webkit-box; - display: -moz-box; - display: -ms-flexbox; - display: -webkit-flex; - display: flex; -} - -.ct-label.ct-horizontal.ct-start { - -webkit-box-align: flex-end; - -webkit-align-items: flex-end; - -ms-flex-align: flex-end; - align-items: flex-end; - -webkit-box-pack: flex-start; - -webkit-justify-content: flex-start; - -ms-flex-pack: flex-start; - justify-content: flex-start; - text-align: left; - text-anchor: start; -} - -.ct-label.ct-horizontal.ct-end { - -webkit-box-align: flex-start; - -webkit-align-items: flex-start; - -ms-flex-align: flex-start; - align-items: flex-start; - -webkit-box-pack: flex-start; - -webkit-justify-content: flex-start; - -ms-flex-pack: flex-start; - justify-content: flex-start; - text-align: left; - text-anchor: start; -} - -.ct-label.ct-vertical.ct-start { - -webkit-box-align: flex-end; - -webkit-align-items: flex-end; - -ms-flex-align: flex-end; - align-items: flex-end; - -webkit-box-pack: flex-end; - -webkit-justify-content: flex-end; - -ms-flex-pack: flex-end; - justify-content: flex-end; - text-align: right; - text-anchor: end; -} - -.ct-label.ct-vertical.ct-end { - -webkit-box-align: flex-end; - -webkit-align-items: flex-end; - -ms-flex-align: flex-end; - align-items: flex-end; - -webkit-box-pack: flex-start; - -webkit-justify-content: flex-start; - -ms-flex-pack: flex-start; - justify-content: flex-start; - text-align: left; - text-anchor: start; -} - -.ct-chart-bar .ct-label.ct-horizontal.ct-start { - -webkit-box-align: flex-end; - -webkit-align-items: flex-end; - -ms-flex-align: flex-end; - align-items: flex-end; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - text-align: center; - text-anchor: start; -} - -.ct-chart-bar .ct-label.ct-horizontal.ct-end { - -webkit-box-align: flex-start; - -webkit-align-items: flex-start; - -ms-flex-align: flex-start; - align-items: flex-start; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - text-align: center; - text-anchor: start; -} - -.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-start { - -webkit-box-align: flex-end; - -webkit-align-items: flex-end; - -ms-flex-align: flex-end; - align-items: flex-end; - -webkit-box-pack: flex-start; - -webkit-justify-content: flex-start; - -ms-flex-pack: flex-start; - justify-content: flex-start; - text-align: left; - text-anchor: start; -} - -.ct-chart-bar.ct-horizontal-bars .ct-label.ct-horizontal.ct-end { - -webkit-box-align: flex-start; - -webkit-align-items: flex-start; - -ms-flex-align: flex-start; - align-items: flex-start; - -webkit-box-pack: flex-start; - -webkit-justify-content: flex-start; - -ms-flex-pack: flex-start; - justify-content: flex-start; - text-align: left; - text-anchor: start; -} - -.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-start { - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: flex-end; - -webkit-justify-content: flex-end; - -ms-flex-pack: flex-end; - justify-content: flex-end; - text-align: right; - text-anchor: end; -} - -.ct-chart-bar.ct-horizontal-bars .ct-label.ct-vertical.ct-end { - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: flex-start; - -webkit-justify-content: flex-start; - -ms-flex-pack: flex-start; - justify-content: flex-start; - text-align: left; - text-anchor: end; -} - -.ct-grid { - stroke: rgba(0, 0, 0, 0.2); - stroke-width: 1px; - stroke-dasharray: 2px; -} - -.ct-point { - stroke-width: 10px; - stroke-linecap: round; -} - -.ct-line { - fill: none; - stroke-width: 4px; -} - -.ct-area { - stroke: none; - fill-opacity: 0.1; -} - -.ct-bar { - fill: none; - stroke-width: 10px; -} - -.ct-slice-donut { - fill: none; - stroke-width: 60px; -} - -.ct-series-a .ct-point, .ct-series-a .ct-line, .ct-series-a .ct-bar, .ct-series-a .ct-slice-donut { - stroke: #1AB394; -} - -.ct-series-a .ct-slice-pie, .ct-series-a .ct-area { - fill: #1AB394; -} - -.ct-series-b .ct-point, .ct-series-b .ct-line, .ct-series-b .ct-bar, .ct-series-b .ct-slice-donut { - stroke: #79D2C0; -} - -.ct-series-b .ct-slice-pie, .ct-series-b .ct-area { - fill: #79D2C0; -} - -.ct-series-c .ct-point, .ct-series-c .ct-line, .ct-series-c .ct-bar, .ct-series-c .ct-slice-donut { - stroke: #D3D3D3; -} - -.ct-series-c .ct-slice-pie, .ct-series-c .ct-area { - fill: #D3D3D3; -} - -.ct-series-d .ct-point, .ct-series-d .ct-line, .ct-series-d .ct-bar, .ct-series-d .ct-slice-donut { - stroke: #BABABA; -} - -.ct-series-d .ct-slice-pie, .ct-series-d .ct-area { - fill: #BABABA; -} - -.ct-series-e .ct-point, .ct-series-e .ct-line, .ct-series-e .ct-bar, .ct-series-e .ct-slice-donut { - stroke: #453d3f; -} - -.ct-series-e .ct-slice-pie, .ct-series-e .ct-area { - fill: #453d3f; -} - -.ct-series-f .ct-point, .ct-series-f .ct-line, .ct-series-f .ct-bar, .ct-series-f .ct-slice-donut { - stroke: #59922b; -} - -.ct-series-f .ct-slice-pie, .ct-series-f .ct-area { - fill: #59922b; -} - -.ct-series-g .ct-point, .ct-series-g .ct-line, .ct-series-g .ct-bar, .ct-series-g .ct-slice-donut { - stroke: #0544d3; -} - -.ct-series-g .ct-slice-pie, .ct-series-g .ct-area { - fill: #0544d3; -} - -.ct-series-h .ct-point, .ct-series-h .ct-line, .ct-series-h .ct-bar, .ct-series-h .ct-slice-donut { - stroke: #6b0392; -} - -.ct-series-h .ct-slice-pie, .ct-series-h .ct-area { - fill: #6b0392; -} - -.ct-series-i .ct-point, .ct-series-i .ct-line, .ct-series-i .ct-bar, .ct-series-i .ct-slice-donut { - stroke: #f05b4f; -} - -.ct-series-i .ct-slice-pie, .ct-series-i .ct-area { - fill: #f05b4f; -} - -.ct-series-j .ct-point, .ct-series-j .ct-line, .ct-series-j .ct-bar, .ct-series-j .ct-slice-donut { - stroke: #dda458; -} - -.ct-series-j .ct-slice-pie, .ct-series-j .ct-area { - fill: #dda458; -} - -.ct-series-k .ct-point, .ct-series-k .ct-line, .ct-series-k .ct-bar, .ct-series-k .ct-slice-donut { - stroke: #eacf7d; -} - -.ct-series-k .ct-slice-pie, .ct-series-k .ct-area { - fill: #eacf7d; -} - -.ct-series-l .ct-point, .ct-series-l .ct-line, .ct-series-l .ct-bar, .ct-series-l .ct-slice-donut { - stroke: #86797d; -} - -.ct-series-l .ct-slice-pie, .ct-series-l .ct-area { - fill: #86797d; -} - -.ct-series-m .ct-point, .ct-series-m .ct-line, .ct-series-m .ct-bar, .ct-series-m .ct-slice-donut { - stroke: #b2c326; -} - -.ct-series-m .ct-slice-pie, .ct-series-m .ct-area { - fill: #b2c326; -} - -.ct-series-n .ct-point, .ct-series-n .ct-line, .ct-series-n .ct-bar, .ct-series-n .ct-slice-donut { - stroke: #6188e2; -} - -.ct-series-n .ct-slice-pie, .ct-series-n .ct-area { - fill: #6188e2; -} - -.ct-series-o .ct-point, .ct-series-o .ct-line, .ct-series-o .ct-bar, .ct-series-o .ct-slice-donut { - stroke: #a748ca; -} - -.ct-series-o .ct-slice-pie, .ct-series-o .ct-area { - fill: #a748ca; -} - -.ct-square { - display: block; - position: relative; - width: 100%; -} - -.ct-square:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 100%; -} - -.ct-square:after { - content: ""; - display: table; - clear: both; -} - -.ct-square > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-minor-second { - display: block; - position: relative; - width: 100%; -} - -.ct-minor-second:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 93.75%; -} - -.ct-minor-second:after { - content: ""; - display: table; - clear: both; -} - -.ct-minor-second > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-major-second { - display: block; - position: relative; - width: 100%; -} - -.ct-major-second:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 88.88889%; -} - -.ct-major-second:after { - content: ""; - display: table; - clear: both; -} - -.ct-major-second > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-minor-third { - display: block; - position: relative; - width: 100%; -} - -.ct-minor-third:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 83.33333%; -} - -.ct-minor-third:after { - content: ""; - display: table; - clear: both; -} - -.ct-minor-third > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-major-third { - display: block; - position: relative; - width: 100%; -} - -.ct-major-third:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 80%; -} - -.ct-major-third:after { - content: ""; - display: table; - clear: both; -} - -.ct-major-third > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-perfect-fourth { - display: block; - position: relative; - width: 100%; -} - -.ct-perfect-fourth:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 75%; -} - -.ct-perfect-fourth:after { - content: ""; - display: table; - clear: both; -} - -.ct-perfect-fourth > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-perfect-fifth { - display: block; - position: relative; - width: 100%; -} - -.ct-perfect-fifth:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 66.66667%; -} - -.ct-perfect-fifth:after { - content: ""; - display: table; - clear: both; -} - -.ct-perfect-fifth > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-minor-sixth { - display: block; - position: relative; - width: 100%; -} - -.ct-minor-sixth:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 62.5%; -} - -.ct-minor-sixth:after { - content: ""; - display: table; - clear: both; -} - -.ct-minor-sixth > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-golden-section { - display: block; - position: relative; - width: 100%; -} - -.ct-golden-section:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 61.8047%; -} - -.ct-golden-section:after { - content: ""; - display: table; - clear: both; -} - -.ct-golden-section > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-major-sixth { - display: block; - position: relative; - width: 100%; -} - -.ct-major-sixth:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 60%; -} - -.ct-major-sixth:after { - content: ""; - display: table; - clear: both; -} - -.ct-major-sixth > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-minor-seventh { - display: block; - position: relative; - width: 100%; -} - -.ct-minor-seventh:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 56.25%; -} - -.ct-minor-seventh:after { - content: ""; - display: table; - clear: both; -} - -.ct-minor-seventh > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-major-seventh { - display: block; - position: relative; - width: 100%; -} - -.ct-major-seventh:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 53.33333%; -} - -.ct-major-seventh:after { - content: ""; - display: table; - clear: both; -} - -.ct-major-seventh > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-octave { - display: block; - position: relative; - width: 100%; -} - -.ct-octave:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 50%; -} - -.ct-octave:after { - content: ""; - display: table; - clear: both; -} - -.ct-octave > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-major-tenth { - display: block; - position: relative; - width: 100%; -} - -.ct-major-tenth:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 40%; -} - -.ct-major-tenth:after { - content: ""; - display: table; - clear: both; -} - -.ct-major-tenth > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-major-eleventh { - display: block; - position: relative; - width: 100%; -} - -.ct-major-eleventh:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 37.5%; -} - -.ct-major-eleventh:after { - content: ""; - display: table; - clear: both; -} - -.ct-major-eleventh > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-major-twelfth { - display: block; - position: relative; - width: 100%; -} - -.ct-major-twelfth:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 33.33333%; -} - -.ct-major-twelfth:after { - content: ""; - display: table; - clear: both; -} - -.ct-major-twelfth > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} - -.ct-double-octave { - display: block; - position: relative; - width: 100%; -} - -.ct-double-octave:before { - display: block; - float: left; - content: ""; - width: 0; - height: 0; - padding-bottom: 25%; -} - -.ct-double-octave:after { - content: ""; - display: table; - clear: both; -} - -.ct-double-octave > svg { - display: block; - position: absolute; - top: 0; - left: 0; -} diff --git a/public/res/template/css/plugins/chosen/bootstrap-chosen.css b/public/res/template/css/plugins/chosen/bootstrap-chosen.css deleted file mode 100644 index 60655bde..00000000 --- a/public/res/template/css/plugins/chosen/bootstrap-chosen.css +++ /dev/null @@ -1,332 +0,0 @@ -.chosen-select { - width: 100%; } - -.chosen-select-deselect { - width: 100%; } - -.chosen-container { - display: inline-block; - font-size: 13px; - position: relative; - vertical-align: middle; } -.chosen-container .chosen-drop { - background: #fff; - border: 1px solid #e5e6e7; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - margin-top: -1px; - position: absolute; - top: 100%; - left: -9000px; - z-index: 1060; } -.chosen-container.chosen-with-drop .chosen-drop { - left: 0; - right: 0; } -.chosen-container .chosen-results { - color: #555555; - margin: 0 4px 4px 0; - max-height: 240px; - padding: 0 0 0 4px; - position: relative; - overflow-x: hidden; - overflow-y: auto; - -webkit-overflow-scrolling: touch; } -.chosen-container .chosen-results li { - display: none; - line-height: 1.42857; - list-style: none; - margin: 0; - padding: 5px 6px; } -.chosen-container .chosen-results li em { - background: #feffde; - font-style: normal; } -.chosen-container .chosen-results li.group-result { - display: list-item; - cursor: default; - color: #999; - font-weight: bold; } -.chosen-container .chosen-results li.group-option { - padding-left: 15px; } -.chosen-container .chosen-results li.active-result { - cursor: pointer; - display: list-item; } -.chosen-container .chosen-results li.highlighted { - background-color: #1ab394; - background-image: none; - color: white; } -.chosen-container .chosen-results li.highlighted em { - background: transparent; } -.chosen-container .chosen-results li.disabled-result { - display: list-item; - color: #777777; } -.chosen-container .chosen-results .no-results { - background: #eeeeee; - display: list-item; } -.chosen-container .chosen-results-scroll { - background: white; - margin: 0 4px; - position: absolute; - text-align: center; - width: 321px; - z-index: 1; } -.chosen-container .chosen-results-scroll span { - display: inline-block; - height: 1.42857; - text-indent: -5000px; - width: 9px; } -.chosen-container .chosen-results-scroll-down { - bottom: 0; } -.chosen-container .chosen-results-scroll-down span { - background: url("chosen-sprite.png") no-repeat -4px -3px; } -.chosen-container .chosen-results-scroll-up span { - background: url("chosen-sprite.png") no-repeat -22px -3px; } - -.chosen-container-single .chosen-single { - background-color: #fff; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - border: 1px solid #e5e6e7; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - color: #555555; - display: block; - height: 34px; - overflow: hidden; - line-height: 24px; - padding: 0 0 0 8px; - position: relative; - text-decoration: none; - white-space: nowrap; } -.chosen-container-single .chosen-single span { - display: block; - margin-right: 26px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; } -.chosen-container-single .chosen-single abbr { - background: url("chosen-sprite.png") right top no-repeat; - display: block; - font-size: 1px; - height: 10px; - position: absolute; - right: 26px; - top: 12px; - width: 12px; } -.chosen-container-single .chosen-single abbr:hover { - background-position: right -11px; } -.chosen-container-single .chosen-single.chosen-disabled .chosen-single abbr:hover { - background-position: right 2px; } -.chosen-container-single .chosen-single div { - display: block; - height: 100%; - position: absolute; - top: 0; - right: 0; - width: 18px; } -.chosen-container-single .chosen-single div b { - background: url("chosen-sprite.png") no-repeat 0 7px; - display: block; - height: 100%; - width: 100%; } -.chosen-container-single .chosen-default { - color: #777777; } -.chosen-container-single .chosen-search { - margin: 0; - padding: 3px 4px; - position: relative; - white-space: nowrap; - z-index: 1000; } -.chosen-container-single .chosen-search input[type="text"] { - background: url("chosen-sprite.png") no-repeat 100% -20px, #fff; - border: 1px solid #e5e6e7; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - margin: 1px 0; - padding: 4px 20px 4px 4px; - width: 100%; } -.chosen-container-single .chosen-drop { - margin-top: -1px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; } - -.chosen-container-single-nosearch .chosen-search input[type="text"] { - position: absolute; - left: -9000px; } - -.chosen-container-multi .chosen-choices { - background-color: #fff; - border: 1px solid #e5e6e7; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - cursor: text; - height: auto !important; - height: 1%; - margin: 0; - overflow: hidden; - padding: 0; - position: relative; } -.chosen-container-multi .chosen-choices li { - float: left; - list-style: none; } -.chosen-container-multi .chosen-choices .search-field { - margin: 0; - padding: 0; - white-space: nowrap; } -.chosen-container-multi .chosen-choices .search-field input[type="text"] { - background: transparent !important; - border: 0 !important; - -webkit-box-shadow: none; - box-shadow: none; - color: #555555; - height: 32px; - margin: 0; - padding: 4px; - outline: 0; } -.chosen-container-multi .chosen-choices .search-field .default { - color: #999; } -.chosen-container-multi .chosen-choices .search-choice { - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - background-color: #eeeeee; - border: 1px solid #e5e6e7; - border-top-right-radius: 4px; - border-top-left-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; - background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 100%); - background-image: -o-linear-gradient(top, white 0%, #eeeeee 100%); - background-image: linear-gradient(to bottom, white 0%, #eeeeee 100%); - background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); - -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); - color: #333333; - cursor: default; - line-height: 13px; - margin: 6px 0 3px 5px; - padding: 3px 20px 3px 5px; - position: relative; } -.chosen-container-multi .chosen-choices .search-choice .search-choice-close { - background: url("chosen-sprite.png") right top no-repeat; - display: block; - font-size: 1px; - height: 10px; - position: absolute; - right: 4px; - top: 5px; - width: 12px; - cursor: pointer; } -.chosen-container-multi .chosen-choices .search-choice .search-choice-close:hover { - background-position: right -11px; } -.chosen-container-multi .chosen-choices .search-choice-focus { - background: #d4d4d4; } -.chosen-container-multi .chosen-choices .search-choice-focus .search-choice-close { - background-position: right -11px; } -.chosen-container-multi .chosen-results { - margin: 0 0 0 0; - padding: 0; } -.chosen-container-multi .chosen-drop .result-selected { - display: none; } - -.chosen-container-active .chosen-single { - border: 1px solid #e5e6e7; - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; } -.chosen-container-active.chosen-with-drop .chosen-single { - background-color: #fff; - border: 1px solid #1ab394; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; } -.chosen-container-active.chosen-with-drop .chosen-single div { - background: transparent; - border-left: none; } -.chosen-container-active.chosen-with-drop .chosen-single div b { - background-position: -18px 7px; } -.chosen-container-active .chosen-choices { - border: 1px solid #1ab394; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; - -o-transition: border linear 0.2s, box-shadow linear 0.2s; - transition: border linear 0.2s, box-shadow linear 0.2s; } -.chosen-container-active .chosen-choices .search-field input[type="text"] { - color: #111 !important; } -.chosen-container-active.chosen-with-drop .chosen-choices { - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; } - -.chosen-disabled { - cursor: default; - opacity: 0.5 !important; } -.chosen-disabled .chosen-single { - cursor: default; } -.chosen-disabled .chosen-choices .search-choice .search-choice-close { - cursor: default; } - -.chosen-rtl { - text-align: right; } -.chosen-rtl .chosen-single { - padding: 0 8px 0 0; - overflow: visible; } -.chosen-rtl .chosen-single span { - margin-left: 26px; - margin-right: 0; - direction: rtl; } -.chosen-rtl .chosen-single div { - left: 7px; - right: auto; } -.chosen-rtl .chosen-single abbr { - left: 26px; - right: auto; } -.chosen-rtl .chosen-choices .search-field input[type="text"] { - direction: rtl; } -.chosen-rtl .chosen-choices li { - float: right; } -.chosen-rtl .chosen-choices .search-choice { - margin: 6px 5px 3px 0; - padding: 3px 5px 3px 19px; } -.chosen-rtl .chosen-choices .search-choice .search-choice-close { - background-position: right top; - left: 4px; - right: auto; } -.chosen-rtl.chosen-container-single .chosen-results { - margin: 0 0 4px 4px; - padding: 0 4px 0 0; } -.chosen-rtl .chosen-results .group-option { - padding-left: 0; - padding-right: 15px; } -.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div { - border-right: none; } -.chosen-rtl .chosen-search input[type="text"] { - background: url("chosen-sprite.png") no-repeat -28px -20px, #fff; - direction: rtl; - padding: 4px 5px 4px 20px; } - -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 2dppx) { - .chosen-rtl .chosen-search input[type="text"], - .chosen-container-single .chosen-single abbr, - .chosen-container-single .chosen-single div b, - .chosen-container-single .chosen-search input[type="text"], - .chosen-container-multi .chosen-choices .search-choice .search-choice-close, - .chosen-container .chosen-results-scroll-down span, - .chosen-container .chosen-results-scroll-up span { - background-image: url("chosen-sprite%402x.png") !important; - background-size: 52px 37px !important; - background-repeat: no-repeat !important; } } - -/*# sourceMappingURL=bootstrap-chosen.css.map */ \ No newline at end of file diff --git a/public/res/template/css/plugins/chosen/chosen-sprite.png b/public/res/template/css/plugins/chosen/chosen-sprite.png deleted file mode 100644 index 3611ae4a..00000000 Binary files a/public/res/template/css/plugins/chosen/chosen-sprite.png and /dev/null differ diff --git a/public/res/template/css/plugins/chosen/chosen-sprite@2x.png b/public/res/template/css/plugins/chosen/chosen-sprite@2x.png deleted file mode 100644 index ffe4d7d1..00000000 Binary files a/public/res/template/css/plugins/chosen/chosen-sprite@2x.png and /dev/null differ diff --git a/public/res/template/css/plugins/clockpicker/clockpicker.css b/public/res/template/css/plugins/clockpicker/clockpicker.css deleted file mode 100644 index 7d90a24b..00000000 --- a/public/res/template/css/plugins/clockpicker/clockpicker.css +++ /dev/null @@ -1,168 +0,0 @@ -/*! - * ClockPicker v{package.version} for Bootstrap (http://weareoutman.github.io/clockpicker/) - * Copyright 2014 Wang Shenwei. - * Licensed under MIT (https://github.com/weareoutman/clockpicker/blob/gh-pages/LICENSE) - */ - -.clockpicker .input-group-addon { - cursor: pointer; -} -.clockpicker-moving { - cursor: move; -} -.clockpicker-align-left.popover > .arrow { - left: 25px; -} -.clockpicker-align-top.popover > .arrow { - top: 17px; -} -.clockpicker-align-right.popover > .arrow { - left: auto; - right: 25px; -} -.clockpicker-align-bottom.popover > .arrow { - top: auto; - bottom: 6px; -} -.clockpicker-popover .popover-title { - background-color: #fff; - color: #999; - font-size: 24px; - font-weight: bold; - line-height: 30px; - text-align: center; -} -.clockpicker-popover .popover-title span { - cursor: pointer; -} -.clockpicker-popover .popover-content { - background-color: #f8f8f8; - padding: 12px; -} -.popover-content:last-child { - border-bottom-left-radius: 5px; - border-bottom-right-radius: 5px; -} -.clockpicker-plate { - background-color: #fff; - border: 1px solid #ccc; - border-radius: 50%; - width: 200px; - height: 200px; - overflow: visible; - position: relative; - /* Disable text selection highlighting. Thanks to Hermanya */ - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.clockpicker-canvas, -.clockpicker-dial { - width: 200px; - height: 200px; - position: absolute; - left: -1px; - top: -1px; -} -.clockpicker-minutes { - visibility: hidden; -} -.clockpicker-tick { - border-radius: 50%; - color: #666; - line-height: 26px; - text-align: center; - width: 26px; - height: 26px; - position: absolute; - cursor: pointer; -} -.clockpicker-tick.active, -.clockpicker-tick:hover { - background-color: rgb(192, 229, 247); - background-color: rgba(0, 149, 221, .25); -} -.clockpicker-button { - background-image: none; - background-color: #fff; - border-width: 1px 0 0; - border-top-left-radius: 0; - border-top-right-radius: 0; - margin: 0; - padding: 10px 0; -} -.clockpicker-button:hover { - background-image: none; - background-color: #ebebeb; -} -.clockpicker-button:focus { - outline: none!important; -} -.clockpicker-dial { - -webkit-transition: -webkit-transform 350ms, opacity 350ms; - -moz-transition: -moz-transform 350ms, opacity 350ms; - -ms-transition: -ms-transform 350ms, opacity 350ms; - -o-transition: -o-transform 350ms, opacity 350ms; - transition: transform 350ms, opacity 350ms; -} -.clockpicker-dial-out { - opacity: 0; -} -.clockpicker-hours.clockpicker-dial-out { - -webkit-transform: scale(1.2, 1.2); - -moz-transform: scale(1.2, 1.2); - -ms-transform: scale(1.2, 1.2); - -o-transform: scale(1.2, 1.2); - transform: scale(1.2, 1.2); -} -.clockpicker-minutes.clockpicker-dial-out { - -webkit-transform: scale(.8, .8); - -moz-transform: scale(.8, .8); - -ms-transform: scale(.8, .8); - -o-transform: scale(.8, .8); - transform: scale(.8, .8); -} -.clockpicker-canvas { - -webkit-transition: opacity 175ms; - -moz-transition: opacity 175ms; - -ms-transition: opacity 175ms; - -o-transition: opacity 175ms; - transition: opacity 175ms; -} -.clockpicker-canvas-out { - opacity: 0.25; -} -.clockpicker-canvas-bearing, -.clockpicker-canvas-fg { - stroke: none; - fill: rgb(0, 149, 221); -} -.clockpicker-canvas-bg { - stroke: none; - fill: rgb(192, 229, 247); -} -.clockpicker-canvas-bg-trans { - fill: rgba(0, 149, 221, .25); -} -.clockpicker-canvas line { - stroke: rgb(0, 149, 221); - stroke-width: 1; - stroke-linecap: round; - /*shape-rendering: crispEdges;*/ -} -.clockpicker-button.am-button { - margin: 1px; - padding: 5px; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 4px; - -} -.clockpicker-button.pm-button { - margin: 1px 1px 1px 136px; - padding: 5px; - border: 1px solid rgba(0, 0, 0, .2); - border-radius: 4px; -} diff --git a/public/res/template/css/plugins/codemirror/ambiance.css b/public/res/template/css/plugins/codemirror/ambiance.css deleted file mode 100644 index c844566e..00000000 --- a/public/res/template/css/plugins/codemirror/ambiance.css +++ /dev/null @@ -1,77 +0,0 @@ -/* ambiance theme for codemirror */ - -/* Color scheme */ - -.cm-s-ambiance .cm-keyword { color: #cda869; } -.cm-s-ambiance .cm-atom { color: #CF7EA9; } -.cm-s-ambiance .cm-number { color: #78CF8A; } -.cm-s-ambiance .cm-def { color: #aac6e3; } -.cm-s-ambiance .cm-variable { color: #ffb795; } -.cm-s-ambiance .cm-variable-2 { color: #eed1b3; } -.cm-s-ambiance .cm-variable-3 { color: #faded3; } -.cm-s-ambiance .cm-property { color: #eed1b3; } -.cm-s-ambiance .cm-operator {color: #fa8d6a;} -.cm-s-ambiance .cm-comment { color: #555; font-style:italic; } -.cm-s-ambiance .cm-string { color: #8f9d6a; } -.cm-s-ambiance .cm-string-2 { color: #9d937c; } -.cm-s-ambiance .cm-meta { color: #D2A8A1; } -.cm-s-ambiance .cm-qualifier { color: yellow; } -.cm-s-ambiance .cm-builtin { color: #9999cc; } -.cm-s-ambiance .cm-bracket { color: #24C2C7; } -.cm-s-ambiance .cm-tag { color: #fee4ff } -.cm-s-ambiance .cm-attribute { color: #9B859D; } -.cm-s-ambiance .cm-header {color: blue;} -.cm-s-ambiance .cm-quote { color: #24C2C7; } -.cm-s-ambiance .cm-hr { color: pink; } -.cm-s-ambiance .cm-link { color: #F4C20B; } -.cm-s-ambiance .cm-special { color: #FF9D00; } -.cm-s-ambiance .cm-error { color: #AF2018; } - -.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; } -.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; } - -.cm-s-ambiance .CodeMirror-selected { - background: rgba(255, 255, 255, 0.15); -} -.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected { - background: rgba(255, 255, 255, 0.10); -} - -/* Editor styling */ - -.cm-s-ambiance.CodeMirror { - line-height: 1.40em; - color: #E6E1DC; - background-color: #202020; - -webkit-box-shadow: inset 0 0 10px black; - -moz-box-shadow: inset 0 0 10px black; - box-shadow: inset 0 0 10px black; -} - -.cm-s-ambiance .CodeMirror-gutters { - background: #3D3D3D; - border-right: 1px solid #4D4D4D; - box-shadow: 0 10px 20px black; -} - -.cm-s-ambiance .CodeMirror-linenumber { - text-shadow: 0px 1px 1px #4d4d4d; - color: #111; - padding: 0 5px; -} - -.cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; } -.cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; } - -.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor { - border-left: 1px solid #7991E8; -} - -.cm-s-ambiance .CodeMirror-activeline-background { - background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031); -} - -.cm-s-ambiance.CodeMirror, -.cm-s-ambiance .CodeMirror-gutters { - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC"); -} diff --git a/public/res/template/css/plugins/codemirror/codemirror.css b/public/res/template/css/plugins/codemirror/codemirror.css deleted file mode 100644 index 68c67b17..00000000 --- a/public/res/template/css/plugins/codemirror/codemirror.css +++ /dev/null @@ -1,309 +0,0 @@ -/* BASICS */ - -.CodeMirror { - /* Set height, width, borders, and global font properties here */ - font-family: monospace; - height: 300px; -} -.CodeMirror-scroll { - /* Set scrolling behaviour here */ - overflow: auto; -} - -/* PADDING */ - -.CodeMirror-lines { - padding: 4px 0; /* Vertical padding around content */ -} -.CodeMirror pre { - padding: 0 4px; /* Horizontal padding of content */ -} - -.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - background-color: white; /* The little square between H and V scrollbars */ -} - -/* GUTTER */ - -.CodeMirror-gutters { - border-right: 1px solid #ddd; - background-color: #f7f7f7; - white-space: nowrap; -} -.CodeMirror-linenumbers {} -.CodeMirror-linenumber { - padding: 0 3px 0 5px; - min-width: 20px; - text-align: right; - color: #999; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -.CodeMirror-guttermarker { color: black; } -.CodeMirror-guttermarker-subtle { color: #999; } - -/* CURSOR */ - -.CodeMirror div.CodeMirror-cursor { - border-left: 1px solid black; -} -/* Shown when moving in bi-directional text */ -.CodeMirror div.CodeMirror-secondarycursor { - border-left: 1px solid silver; -} -.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { - width: auto; - border: 0; - background: #7e7; -} -.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursors { - z-index: 1; -} - -.cm-animate-fat-cursor { - width: auto; - border: 0; - -webkit-animation: blink 1.06s steps(1) infinite; - -moz-animation: blink 1.06s steps(1) infinite; - animation: blink 1.06s steps(1) infinite; -} -@-moz-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@-webkit-keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} -@keyframes blink { - 0% { background: #7e7; } - 50% { background: none; } - 100% { background: #7e7; } -} - -/* Can style cursor different in overwrite (non-insert) mode */ -div.CodeMirror-overwrite div.CodeMirror-cursor {} - -.cm-tab { display: inline-block; text-decoration: inherit; } - -.CodeMirror-ruler { - border-left: 1px solid #ccc; - position: absolute; -} - -/* DEFAULT THEME */ - -.cm-s-default .cm-keyword {color: #708;} -.cm-s-default .cm-atom {color: #219;} -.cm-s-default .cm-number {color: #164;} -.cm-s-default .cm-def {color: #00f;} -.cm-s-default .cm-variable, -.cm-s-default .cm-punctuation, -.cm-s-default .cm-property, -.cm-s-default .cm-operator {} -.cm-s-default .cm-variable-2 {color: #05a;} -.cm-s-default .cm-variable-3 {color: #085;} -.cm-s-default .cm-comment {color: #a50;} -.cm-s-default .cm-string {color: #a11;} -.cm-s-default .cm-string-2 {color: #f50;} -.cm-s-default .cm-meta {color: #555;} -.cm-s-default .cm-qualifier {color: #555;} -.cm-s-default .cm-builtin {color: #30a;} -.cm-s-default .cm-bracket {color: #997;} -.cm-s-default .cm-tag {color: #170;} -.cm-s-default .cm-attribute {color: #00c;} -.cm-s-default .cm-header {color: blue;} -.cm-s-default .cm-quote {color: #090;} -.cm-s-default .cm-hr {color: #999;} -.cm-s-default .cm-link {color: #00c;} - -.cm-negative {color: #d44;} -.cm-positive {color: #292;} -.cm-header, .cm-strong {font-weight: bold;} -.cm-em {font-style: italic;} -.cm-link {text-decoration: underline;} - -.cm-s-default .cm-error {color: #f00;} -.cm-invalidchar {color: #f00;} - -/* Default styles for common addons */ - -div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} -div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } -.CodeMirror-activeline-background {background: #e8f2ff;} - -/* STOP */ - -/* The rest of this file contains styles related to the mechanics of - the editor. You probably shouldn't touch them. */ - -.CodeMirror { - line-height: 1; - position: relative; - overflow: hidden; - background: white; - color: black; -} - -.CodeMirror-scroll { - /* 30px is the magic margin used to hide the element's real scrollbars */ - /* See overflow: hidden in .CodeMirror */ - margin-bottom: -30px; margin-right: -30px; - padding-bottom: 30px; - height: 100%; - outline: none; /* Prevent dragging from highlighting the element */ - position: relative; - -moz-box-sizing: content-box; - box-sizing: content-box; -} -.CodeMirror-sizer { - position: relative; - border-right: 30px solid transparent; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* The fake, visible scrollbars. Used to force redraw during scrolling - before actuall scrolling happens, thus preventing shaking and - flickering artifacts. */ -.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { - position: absolute; - z-index: 6; - display: none; -} -.CodeMirror-vscrollbar { - right: 0; top: 0; - overflow-x: hidden; - overflow-y: scroll; -} -.CodeMirror-hscrollbar { - bottom: 0; left: 0; - overflow-y: hidden; - overflow-x: scroll; -} -.CodeMirror-scrollbar-filler { - right: 0; bottom: 0; -} -.CodeMirror-gutter-filler { - left: 0; bottom: 0; -} - -.CodeMirror-gutters { - position: absolute; left: 0; top: 0; - padding-bottom: 30px; - z-index: 3; -} -.CodeMirror-gutter { - white-space: normal; - height: 100%; - -moz-box-sizing: content-box; - box-sizing: content-box; - padding-bottom: 30px; - margin-bottom: -32px; - display: inline-block; - /* Hack to make IE7 behave */ - *zoom:1; - *display:inline; -} -.CodeMirror-gutter-elt { - position: absolute; - cursor: default; - z-index: 4; -} - -.CodeMirror-lines { - cursor: text; - min-height: 1px; /* prevents collapsing before first draw */ -} -.CodeMirror pre { - /* Reset some styles that the rest of the page might have set */ - -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; - border-width: 0; - background: transparent; - font-family: inherit; - font-size: inherit; - margin: 0; - white-space: pre; - word-wrap: normal; - line-height: inherit; - color: inherit; - z-index: 2; - position: relative; - overflow: visible; -} -.CodeMirror-wrap pre { - word-wrap: break-word; - white-space: pre-wrap; - word-break: normal; -} - -.CodeMirror-linebackground { - position: absolute; - left: 0; right: 0; top: 0; bottom: 0; - z-index: 0; -} - -.CodeMirror-linewidget { - position: relative; - z-index: 2; - overflow: auto; -} - -.CodeMirror-widget {} - -.CodeMirror-wrap .CodeMirror-scroll { - overflow-x: hidden; -} - -.CodeMirror-measure { - position: absolute; - width: 100%; - height: 0; - overflow: hidden; - visibility: hidden; -} -.CodeMirror-measure pre { position: static; } - -.CodeMirror div.CodeMirror-cursor { - position: absolute; - border-right: none; - width: 0; -} - -div.CodeMirror-cursors { - visibility: hidden; - position: relative; - z-index: 3; -} -.CodeMirror-focused div.CodeMirror-cursors { - visibility: visible; -} - -.CodeMirror-selected { background: #d9d9d9; } -.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } -.CodeMirror-crosshair { cursor: crosshair; } - -.cm-searching { - background: #ffa; - background: rgba(255, 255, 0, .4); -} - -/* IE7 hack to prevent it from returning funny offsetTops on the spans */ -.CodeMirror span { *vertical-align: text-bottom; } - -/* Used to force a border model for a node */ -.cm-force-border { padding-right: .1px; } - -@media print { - /* Hide the cursor when printing */ - .CodeMirror div.CodeMirror-cursors { - visibility: hidden; - } -} - -/* Help users use markselection to safely style text background */ -span.CodeMirror-selectedtext { background: none; } diff --git a/public/res/template/css/plugins/colorpicker/bootstrap-colorpicker.min.css b/public/res/template/css/plugins/colorpicker/bootstrap-colorpicker.min.css deleted file mode 100644 index 032cca2f..00000000 --- a/public/res/template/css/plugins/colorpicker/bootstrap-colorpicker.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Bootstrap Colorpicker - * http://mjolnic.github.io/bootstrap-colorpicker/ - * - * Originally written by (c) 2012 Stefan Petre - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0.txt - * - */.colorpicker-saturation{float:left;width:100px;height:100px;cursor:crosshair;background-image:url("../images/bootstrap-colorpicker/saturation.png")}.colorpicker-saturation i{position:absolute;top:0;left:0;display:block;width:5px;height:5px;margin:-4px 0 0 -4px;border:1px solid #000;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-saturation i b{display:block;width:5px;height:5px;border:1px solid #fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.colorpicker-hue,.colorpicker-alpha{float:left;width:15px;height:100px;margin-bottom:4px;margin-left:4px;cursor:row-resize}.colorpicker-hue i,.colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:100%;height:1px;margin-top:-1px;background:#000;border-top:1px solid #fff}.colorpicker-hue{background-image:url("../images/bootstrap-colorpicker/hue.png")}.colorpicker-alpha{display:none;background-image:url("../images/bootstrap-colorpicker/alpha.png")}.colorpicker{top:0;left:0;z-index:2500;min-width:130px;padding:4px;margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1}.colorpicker:before,.colorpicker:after{display:table;line-height:0;content:""}.colorpicker:after{clear:both}.colorpicker:before{position:absolute;top:-7px;left:6px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.colorpicker:after{position:absolute;top:-6px;left:7px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.colorpicker div{position:relative}.colorpicker.colorpicker-with-alpha{min-width:140px}.colorpicker.colorpicker-with-alpha .colorpicker-alpha{display:block}.colorpicker-color{height:10px;margin-top:5px;clear:both;background-image:url("../images/bootstrap-colorpicker/alpha.png");background-position:0 100%}.colorpicker-color div{height:10px}.colorpicker-element .input-group-addon i,.colorpicker-element .add-on i{display:inline-block;width:16px;height:16px;vertical-align:text-top;cursor:pointer}.colorpicker.colorpicker-inline{position:relative;z-index:auto;display:inline-block;float:none}.colorpicker.colorpicker-horizontal{width:110px;height:auto;min-width:110px}.colorpicker.colorpicker-horizontal .colorpicker-saturation{margin-bottom:4px}.colorpicker.colorpicker-horizontal .colorpicker-color{width:100px}.colorpicker.colorpicker-horizontal .colorpicker-hue,.colorpicker.colorpicker-horizontal .colorpicker-alpha{float:left;width:100px;height:15px;margin-bottom:4px;margin-left:0;cursor:col-resize}.colorpicker.colorpicker-horizontal .colorpicker-hue i,.colorpicker.colorpicker-horizontal .colorpicker-alpha i{position:absolute;top:0;left:0;display:block;width:1px;height:15px;margin-top:0;background:#fff;border:0}.colorpicker.colorpicker-horizontal .colorpicker-hue{background-image:url("../images/bootstrap-colorpicker/hue-horizontal.png")}.colorpicker.colorpicker-horizontal .colorpicker-alpha{background-image:url("../images/bootstrap-colorpicker/alpha-horizontal.png")}.colorpicker.colorpicker-hidden{display:none}.colorpicker.colorpicker-visible{display:block}.colorpicker-inline.colorpicker-visible{display:inline-block} \ No newline at end of file diff --git a/public/res/template/css/plugins/cropper/cropper.min.css b/public/res/template/css/plugins/cropper/cropper.min.css deleted file mode 100644 index 534bae19..00000000 --- a/public/res/template/css/plugins/cropper/cropper.min.css +++ /dev/null @@ -1,9 +0,0 @@ -/*! - * Cropper v0.7.6-beta - * https://github.com/fengyuanchen/cropper - * - * Copyright 2014 Fengyuan Chen - * Released under the MIT license - */ - -.cropper-container{position:relative;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}.cropper-container img{width:100%;height:100%;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important}.cropper-modal,.cropper-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.cropper-canvas{background-color:#fff;opacity:0;filter:alpha(opacity=0)}.cropper-modal{background-color:#000;opacity:.5;filter:alpha(opacity=50)}.cropper-dragger{position:absolute;top:10%;left:10%;width:80%;height:80%}.cropper-viewer{display:block;width:100%;height:100%;overflow:hidden;outline-width:1px;outline-style:solid;outline-color:#69f;outline-color:rgba(51,102,255,.75)}.cropper-dashed{position:absolute;display:block;border:0 dashed #fff;opacity:.5;filter:alpha(opacity=50)}.cropper-dashed.dashed-h{top:33.3%;left:0;width:100%;height:33.3%;border-top-width:1px;border-bottom-width:1px}.cropper-dashed.dashed-v{top:0;left:33.3%;width:33.3%;height:100%;border-right-width:1px;border-left-width:1px}.cropper-face,.cropper-line,.cropper-point{position:absolute;display:block;width:100%;height:100%;opacity:.1;filter:alpha(opacity=10)}.cropper-face{top:0;left:0;cursor:move;background-color:#fff}.cropper-line{background-color:#69f}.cropper-line.line-e{top:0;right:-3px;width:5px;cursor:e-resize}.cropper-line.line-n{top:-3px;left:0;height:5px;cursor:n-resize}.cropper-line.line-w{top:0;left:-3px;width:5px;cursor:w-resize}.cropper-line.line-s{bottom:-3px;left:0;height:5px;cursor:s-resize}.cropper-point{width:5px;height:5px;background-color:#69f;opacity:.75;filter:alpha(opacity=75)}.cropper-point.point-e{top:50%;right:-3px;margin-top:-3px;cursor:e-resize}.cropper-point.point-n{top:-3px;left:50%;margin-left:-3px;cursor:n-resize}.cropper-point.point-w{top:50%;left:-3px;margin-top:-3px;cursor:w-resize}.cropper-point.point-s{bottom:-3px;left:50%;margin-left:-3px;cursor:s-resize}.cropper-point.point-ne{top:-3px;right:-3px;cursor:ne-resize}.cropper-point.point-nw{top:-3px;left:-3px;cursor:nw-resize}.cropper-point.point-sw{bottom:-3px;left:-3px;cursor:sw-resize}.cropper-point.point-se{right:-3px;bottom:-3px;width:20px;height:20px;cursor:se-resize;opacity:1;filter:alpha(opacity=100)}.cropper-point.point-se:before{position:absolute;right:-50%;bottom:-50%;display:block;width:200%;height:200%;content:" ";background-color:#69f;opacity:0;filter:alpha(opacity=0)}@media (min-width:768px){.cropper-point.point-se{width:15px;height:15px}}@media (min-width:992px){.cropper-point.point-se{width:10px;height:10px}}@media (min-width:1200px){.cropper-point.point-se{width:5px;height:5px;opacity:.75;filter:alpha(opacity=75)}}.cropper-hidden{display:none!important}.cropper-invisible{position:fixed;top:0;left:0;z-index:-1;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;opacity:0;filter:alpha(opacity=0)}.cropper-move{cursor:move}.cropper-crop{cursor:crosshair}.cropper-disabled .cropper-canvas,.cropper-disabled .cropper-face,.cropper-disabled .cropper-line,.cropper-disabled .cropper-point{cursor:not-allowed} \ No newline at end of file diff --git a/public/res/template/css/plugins/dataTables/datatables.min.css b/public/res/template/css/plugins/dataTables/datatables.min.css deleted file mode 100644 index b7b15fd6..00000000 --- a/public/res/template/css/plugins/dataTables/datatables.min.css +++ /dev/null @@ -1,17 +0,0 @@ -/* - * This combined file was created by the DataTables downloader builder: - * https://datatables.net/download - * - * To rebuild or modify this file with the latest versions of the included - * software please visit: - * https://datatables.net/download/#bs/jszip-2.5.0/pdfmake-0.1.18/dt-1.10.13/b-1.2.3/b-html5-1.2.3/b-print-1.2.3 - * - * Included libraries: - * JSZip 2.5.0, pdfmake 0.1.18, DataTables 1.10.13, Buttons 1.2.3, HTML5 export 1.2.3, Print view 1.2.3 - */ - -table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:8px;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:8px;right:8px;display:block;font-family:'Glyphicons Halflings';opacity:0.5}table.dataTable thead .sorting:after{opacity:0.2;content:"\e150"}table.dataTable thead .sorting_asc:after{content:"\e155"}table.dataTable thead .sorting_desc:after{content:"\e156"}table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{color:#eee}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-condensed>thead>tr>th{padding-right:20px}table.dataTable.table-condensed .sorting:after,table.dataTable.table-condensed .sorting_asc:after,table.dataTable.table-condensed .sorting_desc:after{top:6px;right:6px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} - - -div.dt-button-info{position:fixed;top:50%;left:50%;width:400px;margin-top:-100px;margin-left:-200px;background-color:white;border:2px solid #111;box-shadow:3px 3px 8px rgba(0,0,0,0.3);border-radius:3px;text-align:center;z-index:21}div.dt-button-info h2{padding:0.5em;margin:0;font-weight:normal;border-bottom:1px solid #ddd;background-color:#f3f3f3}div.dt-button-info>div{padding:1em}ul.dt-button-collection.dropdown-menu{display:block;z-index:2002;-webkit-column-gap:8px;-moz-column-gap:8px;-ms-column-gap:8px;-o-column-gap:8px;column-gap:8px}ul.dt-button-collection.dropdown-menu.fixed{position:fixed;top:50%;left:50%;margin-left:-75px;border-radius:0}ul.dt-button-collection.dropdown-menu.fixed.two-column{margin-left:-150px}ul.dt-button-collection.dropdown-menu.fixed.three-column{margin-left:-225px}ul.dt-button-collection.dropdown-menu.fixed.four-column{margin-left:-300px}ul.dt-button-collection.dropdown-menu>*{-webkit-column-break-inside:avoid;break-inside:avoid}ul.dt-button-collection.dropdown-menu.two-column{width:300px;padding-bottom:1px;-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2}ul.dt-button-collection.dropdown-menu.three-column{width:450px;padding-bottom:1px;-webkit-column-count:3;-moz-column-count:3;-ms-column-count:3;-o-column-count:3;column-count:3}ul.dt-button-collection.dropdown-menu.four-column{width:600px;padding-bottom:1px;-webkit-column-count:4;-moz-column-count:4;-ms-column-count:4;-o-column-count:4;column-count:4}div.dt-button-background{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2001}@media screen and (max-width: 767px){div.dt-buttons{float:none;width:100%;text-align:center;margin-bottom:0.5em}div.dt-buttons a.btn{float:none}} - diff --git a/public/res/template/css/plugins/datapicker/datepicker3.css b/public/res/template/css/plugins/datapicker/datepicker3.css deleted file mode 100644 index d5203af6..00000000 --- a/public/res/template/css/plugins/datapicker/datepicker3.css +++ /dev/null @@ -1,789 +0,0 @@ -/*! - * Datepicker for Bootstrap - * - * Copyright 2012 Stefan Petre - * Improvements by Andrew Rowls - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */ -.datepicker { - padding: 4px; - border-radius: 4px; - direction: ltr; - /*.dow { - border-top: 1px solid #ddd !important; - }*/ -} -.datepicker-inline { - width: 220px; -} -.datepicker.datepicker-rtl { - direction: rtl; -} -.datepicker.datepicker-rtl table tr td span { - float: right; -} -.datepicker-dropdown { - top: 0; - left: 0; -} -.datepicker-dropdown:before { - content: ''; - display: inline-block; - border-left: 7px solid transparent; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-top: 0; - border-bottom-color: rgba(0, 0, 0, 0.2); - position: absolute; -} -.datepicker-dropdown:after { - content: ''; - display: inline-block; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-top: 0; - position: absolute; -} -.datepicker-dropdown.datepicker-orient-left:before { - left: 6px; -} -.datepicker-dropdown.datepicker-orient-left:after { - left: 7px; -} -.datepicker-dropdown.datepicker-orient-right:before { - right: 6px; -} -.datepicker-dropdown.datepicker-orient-right:after { - right: 7px; -} -.datepicker-dropdown.datepicker-orient-top:before { - top: -7px; -} -.datepicker-dropdown.datepicker-orient-top:after { - top: -6px; -} -.datepicker-dropdown.datepicker-orient-bottom:before { - bottom: -7px; - border-bottom: 0; - border-top: 7px solid #999; -} -.datepicker-dropdown.datepicker-orient-bottom:after { - bottom: -6px; - border-bottom: 0; - border-top: 6px solid #fff; -} -.datepicker > div { - display: none; -} -.datepicker.days div.datepicker-days { - display: block; -} -.datepicker.months div.datepicker-months { - display: block; -} -.datepicker.years div.datepicker-years { - display: block; -} -.datepicker table { - margin: 0; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} -.datepicker table tr td, -.datepicker table tr th { - text-align: center; - width: 30px; - height: 30px; - border-radius: 4px; - border: none; -} -.table-striped .datepicker table tr td, -.table-striped .datepicker table tr th { - background-color: transparent; -} -.datepicker table tr td.day:hover, -.datepicker table tr td.day.focused { - background: #eeeeee; - cursor: pointer; -} -.datepicker table tr td.old, -.datepicker table tr td.new { - color: #999999; -} -.datepicker table tr td.disabled, -.datepicker table tr td.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td.today, -.datepicker table tr td.today:hover, -.datepicker table tr td.today.disabled, -.datepicker table tr td.today.disabled:hover { - color: #000000; - background-color: #ffdb99; - border-color: #ffb733; -} -.datepicker table tr td.today:hover, -.datepicker table tr td.today:hover:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today:focus, -.datepicker table tr td.today:hover:focus, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - color: #000000; - background-color: #ffcd70; - border-color: #f59e00; -} -.datepicker table tr td.today:active, -.datepicker table tr td.today:hover:active, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.active, -.datepicker table tr td.today:hover.active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.today, -.open .dropdown-toggle.datepicker table tr td.today:hover, -.open .dropdown-toggle.datepicker table tr td.today.disabled, -.open .dropdown-toggle.datepicker table tr td.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.today.disabled, -.datepicker table tr td.today:hover.disabled, -.datepicker table tr td.today.disabled.disabled, -.datepicker table tr td.today.disabled:hover.disabled, -.datepicker table tr td.today[disabled], -.datepicker table tr td.today:hover[disabled], -.datepicker table tr td.today.disabled[disabled], -.datepicker table tr td.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.today, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today.disabled, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today.disabled:hover, -.datepicker table tr td.today:hover.disabled:hover, -.datepicker table tr td.today.disabled.disabled:hover, -.datepicker table tr td.today.disabled:hover.disabled:hover, -.datepicker table tr td.today[disabled]:hover, -.datepicker table tr td.today:hover[disabled]:hover, -.datepicker table tr td.today.disabled[disabled]:hover, -.datepicker table tr td.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.today:hover, -fieldset[disabled] .datepicker table tr td.today:hover:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover, -.datepicker table tr td.today.disabled:focus, -.datepicker table tr td.today:hover.disabled:focus, -.datepicker table tr td.today.disabled.disabled:focus, -.datepicker table tr td.today.disabled:hover.disabled:focus, -.datepicker table tr td.today[disabled]:focus, -.datepicker table tr td.today:hover[disabled]:focus, -.datepicker table tr td.today.disabled[disabled]:focus, -.datepicker table tr td.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.today:focus, -fieldset[disabled] .datepicker table tr td.today:hover:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus, -.datepicker table tr td.today.disabled:active, -.datepicker table tr td.today:hover.disabled:active, -.datepicker table tr td.today.disabled.disabled:active, -.datepicker table tr td.today.disabled:hover.disabled:active, -.datepicker table tr td.today[disabled]:active, -.datepicker table tr td.today:hover[disabled]:active, -.datepicker table tr td.today.disabled[disabled]:active, -.datepicker table tr td.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.today:active, -fieldset[disabled] .datepicker table tr td.today:hover:active, -fieldset[disabled] .datepicker table tr td.today.disabled:active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover:active, -.datepicker table tr td.today.disabled.active, -.datepicker table tr td.today:hover.disabled.active, -.datepicker table tr td.today.disabled.disabled.active, -.datepicker table tr td.today.disabled:hover.disabled.active, -.datepicker table tr td.today[disabled].active, -.datepicker table tr td.today:hover[disabled].active, -.datepicker table tr td.today.disabled[disabled].active, -.datepicker table tr td.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.today.active, -fieldset[disabled] .datepicker table tr td.today:hover.active, -fieldset[disabled] .datepicker table tr td.today.disabled.active, -fieldset[disabled] .datepicker table tr td.today.disabled:hover.active { - background-color: #ffdb99; - border-color: #ffb733; -} -.datepicker table tr td.today:hover:hover { - color: #000; -} -.datepicker table tr td.today.active:hover { - color: #fff; -} -.datepicker table tr td.range, -.datepicker table tr td.range:hover, -.datepicker table tr td.range.disabled, -.datepicker table tr td.range.disabled:hover { - background: #eeeeee; - border-radius: 0; -} -.datepicker table tr td.range.today, -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background-color: #f7ca77; - border-color: #f1a417; - border-radius: 0; -} -.datepicker table tr td.range.today:hover, -.datepicker table tr td.range.today:hover:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today:focus, -.datepicker table tr td.range.today:hover:focus, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - color: #000000; - background-color: #f4bb51; - border-color: #bf800c; -} -.datepicker table tr td.range.today:active, -.datepicker table tr td.range.today:hover:active, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.active, -.datepicker table tr td.range.today:hover.active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.range.today, -.open .dropdown-toggle.datepicker table tr td.range.today:hover, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled, -.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover { - background-image: none; -} -.datepicker table tr td.range.today.disabled, -.datepicker table tr td.range.today:hover.disabled, -.datepicker table tr td.range.today.disabled.disabled, -.datepicker table tr td.range.today.disabled:hover.disabled, -.datepicker table tr td.range.today[disabled], -.datepicker table tr td.range.today:hover[disabled], -.datepicker table tr td.range.today.disabled[disabled], -.datepicker table tr td.range.today.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.range.today, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today.disabled:hover, -.datepicker table tr td.range.today:hover.disabled:hover, -.datepicker table tr td.range.today.disabled.disabled:hover, -.datepicker table tr td.range.today.disabled:hover.disabled:hover, -.datepicker table tr td.range.today[disabled]:hover, -.datepicker table tr td.range.today:hover[disabled]:hover, -.datepicker table tr td.range.today.disabled[disabled]:hover, -.datepicker table tr td.range.today.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover, -fieldset[disabled] .datepicker table tr td.range.today:hover:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover, -.datepicker table tr td.range.today.disabled:focus, -.datepicker table tr td.range.today:hover.disabled:focus, -.datepicker table tr td.range.today.disabled.disabled:focus, -.datepicker table tr td.range.today.disabled:hover.disabled:focus, -.datepicker table tr td.range.today[disabled]:focus, -.datepicker table tr td.range.today:hover[disabled]:focus, -.datepicker table tr td.range.today.disabled[disabled]:focus, -.datepicker table tr td.range.today.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.range.today:focus, -fieldset[disabled] .datepicker table tr td.range.today:hover:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:focus, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus, -.datepicker table tr td.range.today.disabled:active, -.datepicker table tr td.range.today:hover.disabled:active, -.datepicker table tr td.range.today.disabled.disabled:active, -.datepicker table tr td.range.today.disabled:hover.disabled:active, -.datepicker table tr td.range.today[disabled]:active, -.datepicker table tr td.range.today:hover[disabled]:active, -.datepicker table tr td.range.today.disabled[disabled]:active, -.datepicker table tr td.range.today.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.range.today:active, -fieldset[disabled] .datepicker table tr td.range.today:hover:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active, -.datepicker table tr td.range.today.disabled.active, -.datepicker table tr td.range.today:hover.disabled.active, -.datepicker table tr td.range.today.disabled.disabled.active, -.datepicker table tr td.range.today.disabled:hover.disabled.active, -.datepicker table tr td.range.today[disabled].active, -.datepicker table tr td.range.today:hover[disabled].active, -.datepicker table tr td.range.today.disabled[disabled].active, -.datepicker table tr td.range.today.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.range.today.active, -fieldset[disabled] .datepicker table tr td.range.today:hover.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled.active, -fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active { - background-color: #f7ca77; - border-color: #f1a417; -} -.datepicker table tr td.selected, -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background-color: #999999; - border-color: #555555; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.selected:hover, -.datepicker table tr td.selected:hover:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected:focus, -.datepicker table tr td.selected:hover:focus, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - color: #ffffff; - background-color: #858585; - border-color: #373737; -} -.datepicker table tr td.selected:active, -.datepicker table tr td.selected:hover:active, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.active, -.datepicker table tr td.selected:hover.active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.selected, -.open .dropdown-toggle.datepicker table tr td.selected:hover, -.open .dropdown-toggle.datepicker table tr td.selected.disabled, -.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover { - background-image: none; -} -.datepicker table tr td.selected.disabled, -.datepicker table tr td.selected:hover.disabled, -.datepicker table tr td.selected.disabled.disabled, -.datepicker table tr td.selected.disabled:hover.disabled, -.datepicker table tr td.selected[disabled], -.datepicker table tr td.selected:hover[disabled], -.datepicker table tr td.selected.disabled[disabled], -.datepicker table tr td.selected.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.selected, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected.disabled:hover, -.datepicker table tr td.selected:hover.disabled:hover, -.datepicker table tr td.selected.disabled.disabled:hover, -.datepicker table tr td.selected.disabled:hover.disabled:hover, -.datepicker table tr td.selected[disabled]:hover, -.datepicker table tr td.selected:hover[disabled]:hover, -.datepicker table tr td.selected.disabled[disabled]:hover, -.datepicker table tr td.selected.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.selected:hover, -fieldset[disabled] .datepicker table tr td.selected:hover:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover, -.datepicker table tr td.selected.disabled:focus, -.datepicker table tr td.selected:hover.disabled:focus, -.datepicker table tr td.selected.disabled.disabled:focus, -.datepicker table tr td.selected.disabled:hover.disabled:focus, -.datepicker table tr td.selected[disabled]:focus, -.datepicker table tr td.selected:hover[disabled]:focus, -.datepicker table tr td.selected.disabled[disabled]:focus, -.datepicker table tr td.selected.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.selected:focus, -fieldset[disabled] .datepicker table tr td.selected:hover:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:focus, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus, -.datepicker table tr td.selected.disabled:active, -.datepicker table tr td.selected:hover.disabled:active, -.datepicker table tr td.selected.disabled.disabled:active, -.datepicker table tr td.selected.disabled:hover.disabled:active, -.datepicker table tr td.selected[disabled]:active, -.datepicker table tr td.selected:hover[disabled]:active, -.datepicker table tr td.selected.disabled[disabled]:active, -.datepicker table tr td.selected.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.selected:active, -fieldset[disabled] .datepicker table tr td.selected:hover:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active, -.datepicker table tr td.selected.disabled.active, -.datepicker table tr td.selected:hover.disabled.active, -.datepicker table tr td.selected.disabled.disabled.active, -.datepicker table tr td.selected.disabled:hover.disabled.active, -.datepicker table tr td.selected[disabled].active, -.datepicker table tr td.selected:hover[disabled].active, -.datepicker table tr td.selected.disabled[disabled].active, -.datepicker table tr td.selected.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.selected.active, -fieldset[disabled] .datepicker table tr td.selected:hover.active, -fieldset[disabled] .datepicker table tr td.selected.disabled.active, -fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active { - background-color: #999999; - border-color: #555555; -} -.datepicker table tr td.active, -.datepicker table tr td.active:hover, -.datepicker table tr td.active.disabled, -.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td.active:hover, -.datepicker table tr td.active:hover:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active:focus, -.datepicker table tr td.active:hover:focus, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.datepicker table tr td.active:active, -.datepicker table tr td.active:hover:active, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.active, -.datepicker table tr td.active:hover.active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td.active, -.open .dropdown-toggle.datepicker table tr td.active:hover, -.open .dropdown-toggle.datepicker table tr td.active.disabled, -.open .dropdown-toggle.datepicker table tr td.active.disabled:hover { - background-image: none; -} -.datepicker table tr td.active.disabled, -.datepicker table tr td.active:hover.disabled, -.datepicker table tr td.active.disabled.disabled, -.datepicker table tr td.active.disabled:hover.disabled, -.datepicker table tr td.active[disabled], -.datepicker table tr td.active:hover[disabled], -.datepicker table tr td.active.disabled[disabled], -.datepicker table tr td.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td.active, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active.disabled, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active.disabled:hover, -.datepicker table tr td.active:hover.disabled:hover, -.datepicker table tr td.active.disabled.disabled:hover, -.datepicker table tr td.active.disabled:hover.disabled:hover, -.datepicker table tr td.active[disabled]:hover, -.datepicker table tr td.active:hover[disabled]:hover, -.datepicker table tr td.active.disabled[disabled]:hover, -.datepicker table tr td.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td.active:hover, -fieldset[disabled] .datepicker table tr td.active:hover:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover, -.datepicker table tr td.active.disabled:focus, -.datepicker table tr td.active:hover.disabled:focus, -.datepicker table tr td.active.disabled.disabled:focus, -.datepicker table tr td.active.disabled:hover.disabled:focus, -.datepicker table tr td.active[disabled]:focus, -.datepicker table tr td.active:hover[disabled]:focus, -.datepicker table tr td.active.disabled[disabled]:focus, -.datepicker table tr td.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td.active:focus, -fieldset[disabled] .datepicker table tr td.active:hover:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:focus, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus, -.datepicker table tr td.active.disabled:active, -.datepicker table tr td.active:hover.disabled:active, -.datepicker table tr td.active.disabled.disabled:active, -.datepicker table tr td.active.disabled:hover.disabled:active, -.datepicker table tr td.active[disabled]:active, -.datepicker table tr td.active:hover[disabled]:active, -.datepicker table tr td.active.disabled[disabled]:active, -.datepicker table tr td.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td.active:active, -fieldset[disabled] .datepicker table tr td.active:hover:active, -fieldset[disabled] .datepicker table tr td.active.disabled:active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover:active, -.datepicker table tr td.active.disabled.active, -.datepicker table tr td.active:hover.disabled.active, -.datepicker table tr td.active.disabled.disabled.active, -.datepicker table tr td.active.disabled:hover.disabled.active, -.datepicker table tr td.active[disabled].active, -.datepicker table tr td.active:hover[disabled].active, -.datepicker table tr td.active.disabled[disabled].active, -.datepicker table tr td.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td.active.active, -fieldset[disabled] .datepicker table tr td.active:hover.active, -fieldset[disabled] .datepicker table tr td.active.disabled.active, -fieldset[disabled] .datepicker table tr td.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span { - display: block; - width: 23%; - height: 54px; - line-height: 54px; - float: left; - margin: 1%; - cursor: pointer; - border-radius: 4px; -} -.datepicker table tr td span:hover { - background: #eeeeee; -} -.datepicker table tr td span.disabled, -.datepicker table tr td span.disabled:hover { - background: none; - color: #999999; - cursor: default; -} -.datepicker table tr td span.active, -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #428bca; - border-color: #357ebd; - text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); -} -.datepicker table tr td span.active:hover, -.datepicker table tr td span.active:hover:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active:focus, -.datepicker table tr td span.active:hover:focus, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - color: #ffffff; - background-color: #3276b1; - border-color: #285e8e; -} -.datepicker table tr td span.active:active, -.datepicker table tr td span.active:hover:active, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.active, -.datepicker table tr td span.active:hover.active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active.disabled:hover.active, -.open .dropdown-toggle.datepicker table tr td span.active, -.open .dropdown-toggle.datepicker table tr td span.active:hover, -.open .dropdown-toggle.datepicker table tr td span.active.disabled, -.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover { - background-image: none; -} -.datepicker table tr td span.active.disabled, -.datepicker table tr td span.active:hover.disabled, -.datepicker table tr td span.active.disabled.disabled, -.datepicker table tr td span.active.disabled:hover.disabled, -.datepicker table tr td span.active[disabled], -.datepicker table tr td span.active:hover[disabled], -.datepicker table tr td span.active.disabled[disabled], -.datepicker table tr td span.active.disabled:hover[disabled], -fieldset[disabled] .datepicker table tr td span.active, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active.disabled:hover, -.datepicker table tr td span.active:hover.disabled:hover, -.datepicker table tr td span.active.disabled.disabled:hover, -.datepicker table tr td span.active.disabled:hover.disabled:hover, -.datepicker table tr td span.active[disabled]:hover, -.datepicker table tr td span.active:hover[disabled]:hover, -.datepicker table tr td span.active.disabled[disabled]:hover, -.datepicker table tr td span.active.disabled:hover[disabled]:hover, -fieldset[disabled] .datepicker table tr td span.active:hover, -fieldset[disabled] .datepicker table tr td span.active:hover:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover, -.datepicker table tr td span.active.disabled:focus, -.datepicker table tr td span.active:hover.disabled:focus, -.datepicker table tr td span.active.disabled.disabled:focus, -.datepicker table tr td span.active.disabled:hover.disabled:focus, -.datepicker table tr td span.active[disabled]:focus, -.datepicker table tr td span.active:hover[disabled]:focus, -.datepicker table tr td span.active.disabled[disabled]:focus, -.datepicker table tr td span.active.disabled:hover[disabled]:focus, -fieldset[disabled] .datepicker table tr td span.active:focus, -fieldset[disabled] .datepicker table tr td span.active:hover:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:focus, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus, -.datepicker table tr td span.active.disabled:active, -.datepicker table tr td span.active:hover.disabled:active, -.datepicker table tr td span.active.disabled.disabled:active, -.datepicker table tr td span.active.disabled:hover.disabled:active, -.datepicker table tr td span.active[disabled]:active, -.datepicker table tr td span.active:hover[disabled]:active, -.datepicker table tr td span.active.disabled[disabled]:active, -.datepicker table tr td span.active.disabled:hover[disabled]:active, -fieldset[disabled] .datepicker table tr td span.active:active, -fieldset[disabled] .datepicker table tr td span.active:hover:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active, -.datepicker table tr td span.active.disabled.active, -.datepicker table tr td span.active:hover.disabled.active, -.datepicker table tr td span.active.disabled.disabled.active, -.datepicker table tr td span.active.disabled:hover.disabled.active, -.datepicker table tr td span.active[disabled].active, -.datepicker table tr td span.active:hover[disabled].active, -.datepicker table tr td span.active.disabled[disabled].active, -.datepicker table tr td span.active.disabled:hover[disabled].active, -fieldset[disabled] .datepicker table tr td span.active.active, -fieldset[disabled] .datepicker table tr td span.active:hover.active, -fieldset[disabled] .datepicker table tr td span.active.disabled.active, -fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active { - background-color: #428bca; - border-color: #357ebd; -} -.datepicker table tr td span.old, -.datepicker table tr td span.new { - color: #999999; -} -.datepicker th.datepicker-switch { - width: 145px; -} -.datepicker thead tr:first-child th, -.datepicker tfoot tr th { - cursor: pointer; -} -.datepicker thead tr:first-child th:hover, -.datepicker tfoot tr th:hover { - background: #eeeeee; -} -.datepicker .cw { - font-size: 10px; - width: 12px; - padding: 0 2px 0 5px; - vertical-align: middle; -} -.datepicker thead tr:first-child th.cw { - cursor: default; - background-color: transparent; -} -.input-group.date .input-group-addon i { - cursor: pointer; - width: 16px; - height: 16px; -} -.input-daterange input { - text-align: center; -} -.input-daterange input:first-child { - border-radius: 3px 0 0 3px; -} -.input-daterange input:last-child { - border-radius: 0 3px 3px 0; -} -.input-daterange .input-group-addon { - width: auto; - min-width: 16px; - padding: 4px 5px; - font-weight: normal; - line-height: 1.428571429; - text-align: center; - text-shadow: 0 1px 0 #fff; - vertical-align: middle; - background-color: #eeeeee; - border-width: 1px 0; - margin-left: -5px; - margin-right: -5px; -} -.datepicker.dropdown-menu { - position: absolute; - top: 100%; - left: 0; - z-index: 1000; - float: left; - display: none; - min-width: 160px; - list-style: none; - background-color: #ffffff; - border: 1px solid #ccc; - border: 1px solid rgba(0, 0, 0, 0.2); - border-radius: 5px; - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; - *border-right-width: 2px; - *border-bottom-width: 2px; - color: #333333; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - font-size: 13px; - line-height: 1.428571429; -} -.datepicker.dropdown-menu th, -.datepicker.dropdown-menu td { - padding: 4px 5px; -} diff --git a/public/res/template/css/plugins/daterangepicker/daterangepicker-bs3.css b/public/res/template/css/plugins/daterangepicker/daterangepicker-bs3.css deleted file mode 100644 index 7a501fb0..00000000 --- a/public/res/template/css/plugins/daterangepicker/daterangepicker-bs3.css +++ /dev/null @@ -1,335 +0,0 @@ -/*! - * Stylesheet for the Date Range Picker, for use with Bootstrap 3.x - * - * Copyright 2013-2015 Dan Grossman ( http://www.dangrossman.info ) - * Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php - * - * Built for http://www.improvely.com - */ - - .daterangepicker.dropdown-menu { - max-width: none; - z-index: 3000; -} - -.daterangepicker.opensleft .ranges, .daterangepicker.opensleft .calendar { - float: left; - margin: 4px; -} - -.daterangepicker.opensright .ranges, .daterangepicker.opensright .calendar, -.daterangepicker.openscenter .ranges, .daterangepicker.openscenter .calendar { - float: right; - margin: 4px; -} - -.daterangepicker.single .ranges, .daterangepicker.single .calendar { - float: none; -} - -.daterangepicker .ranges { - width: 160px; - text-align: left; -} - -.daterangepicker .ranges .range_inputs>div { - float: left; -} - -.daterangepicker .ranges .range_inputs>div:nth-child(2) { - padding-left: 11px; -} - -.daterangepicker .calendar { - display: none; - max-width: 270px; -} - -.daterangepicker.show-calendar .calendar { - display: block; -} - -.daterangepicker .calendar.single .calendar-date { - border: none; -} - -.daterangepicker .calendar th, .daterangepicker .calendar td { - font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; - white-space: nowrap; - text-align: center; - min-width: 32px; -} - -.daterangepicker .daterangepicker_start_input label, -.daterangepicker .daterangepicker_end_input label { - color: #333; - display: block; - font-size: 11px; - font-weight: normal; - height: 20px; - line-height: 20px; - margin-bottom: 2px; - text-shadow: #fff 1px 1px 0px; - text-transform: uppercase; - width: 74px; -} - -.daterangepicker .ranges input { - font-size: 11px; -} - -.daterangepicker .ranges .input-mini { - border: 1px solid #ccc; - border-radius: 4px; - color: #555; - display: block; - font-size: 11px; - height: 30px; - line-height: 30px; - vertical-align: middle; - margin: 0 0 10px 0; - padding: 0 6px; - width: 74px; -} - -.daterangepicker .ranges ul { - list-style: none; - margin: 0; - padding: 0; -} - -.daterangepicker .ranges li { - font-size: 13px; - background: #f5f5f5; - border: 1px solid #f5f5f5; - color: #08c; - padding: 3px 12px; - margin-bottom: 8px; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - cursor: pointer; -} - -.daterangepicker .ranges li.active, .daterangepicker .ranges li:hover { - background: #08c; - border: 1px solid #08c; - color: #fff; -} - -.daterangepicker .calendar-date { - border: 1px solid #ddd; - padding: 4px; - border-radius: 4px; - background: #fff; -} - -.daterangepicker .calendar-time { - text-align: center; - margin: 8px auto 0 auto; - line-height: 30px; -} - -.daterangepicker { - position: absolute; - background: #fff; - top: 100px; - left: 20px; - padding: 4px; - margin-top: 1px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.daterangepicker.opensleft:before { - position: absolute; - top: -7px; - right: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.opensleft:after { - position: absolute; - top: -6px; - right: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.openscenter:before { - position: absolute; - top: -7px; - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.openscenter:after { - position: absolute; - top: -6px; - left: 0; - right: 0; - width: 0; - margin-left: auto; - margin-right: auto; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.opensright:before { - position: absolute; - top: -7px; - left: 9px; - display: inline-block; - border-right: 7px solid transparent; - border-bottom: 7px solid #ccc; - border-left: 7px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.2); - content: ''; -} - -.daterangepicker.opensright:after { - position: absolute; - top: -6px; - left: 10px; - display: inline-block; - border-right: 6px solid transparent; - border-bottom: 6px solid #fff; - border-left: 6px solid transparent; - content: ''; -} - -.daterangepicker.dropup{ - margin-top: -5px; -} -.daterangepicker.dropup:before{ - top: initial; - bottom:-7px; - border-bottom: initial; - border-top: 7px solid #ccc; -} -.daterangepicker.dropup:after{ - top: initial; - bottom:-6px; - border-bottom: initial; - border-top: 6px solid #fff; -} - -.daterangepicker table { - width: 100%; - margin: 0; -} - -.daterangepicker td, .daterangepicker th { - text-align: center; - width: 20px; - height: 20px; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - cursor: pointer; - white-space: nowrap; -} - -.daterangepicker td.off { - color: #999; -} - -.daterangepicker td.disabled, .daterangepicker option.disabled { - color: #999; -} - -.daterangepicker td.available:hover, .daterangepicker th.available:hover { - background: #eee; -} - -.daterangepicker td.in-range { - background: #ebf4f8; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.daterangepicker td.start-date { - -webkit-border-radius: 4px 0 0 4px; - -moz-border-radius: 4px 0 0 4px; - border-radius: 4px 0 0 4px; -} - -.daterangepicker td.end-date { - -webkit-border-radius: 0 4px 4px 0; - -moz-border-radius: 0 4px 4px 0; - border-radius: 0 4px 4px 0; -} - -.daterangepicker td.start-date.end-date { - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; -} - -.daterangepicker td.active, .daterangepicker td.active:hover { - background-color: #357ebd; - border-color: #3071a9; - color: #fff; -} - -.daterangepicker td.week, .daterangepicker th.week { - font-size: 80%; - color: #ccc; -} - -.daterangepicker select.monthselect, .daterangepicker select.yearselect { - font-size: 12px; - padding: 1px; - height: auto; - margin: 0; - cursor: default; -} - -.daterangepicker select.monthselect { - margin-right: 2%; - width: 56%; -} - -.daterangepicker select.yearselect { - width: 40%; -} - -.daterangepicker select.hourselect, .daterangepicker select.minuteselect, .daterangepicker select.secondselect, .daterangepicker select.ampmselect { - width: 50px; - margin-bottom: 0; -} - -.daterangepicker_start_input { - float: left; -} - -.daterangepicker_end_input { - float: left; - padding-left: 11px -} - -.daterangepicker th.month { - width: auto; -} diff --git a/public/res/template/css/plugins/dropzone/basic.css b/public/res/template/css/plugins/dropzone/basic.css deleted file mode 100644 index 94ae03db..00000000 --- a/public/res/template/css/plugins/dropzone/basic.css +++ /dev/null @@ -1,39 +0,0 @@ -/* - * The MIT License - * Copyright (c) 2012 Matias Meno - */ -.dropzone, .dropzone * { - box-sizing: border-box; } - -.dropzone { - position: relative; } -.dropzone .dz-preview { - position: relative; - display: inline-block; - width: 120px; - margin: 0.5em; } -.dropzone .dz-preview .dz-progress { - display: block; - height: 15px; - border: 1px solid #aaa; } -.dropzone .dz-preview .dz-progress .dz-upload { - display: block; - height: 100%; - width: 0; - background: green; } -.dropzone .dz-preview .dz-error-message { - color: red; - display: none; } -.dropzone .dz-preview.dz-error .dz-error-message, .dropzone .dz-preview.dz-error .dz-error-mark { - display: block; } -.dropzone .dz-preview.dz-success .dz-success-mark { - display: block; } -.dropzone .dz-preview .dz-error-mark, .dropzone .dz-preview .dz-success-mark { - position: absolute; - display: none; - left: 30px; - top: 30px; - width: 54px; - height: 58px; - left: 50%; - margin-left: -27px; } \ No newline at end of file diff --git a/public/res/template/css/plugins/dropzone/dropzone.css b/public/res/template/css/plugins/dropzone/dropzone.css deleted file mode 100644 index d1300320..00000000 --- a/public/res/template/css/plugins/dropzone/dropzone.css +++ /dev/null @@ -1,388 +0,0 @@ -/* - * The MIT License - * Copyright (c) 2012 Matias Meno - */ -@-webkit-keyframes passing-through { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30%, 70% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - -moz-transform: translateY(-40px); - -ms-transform: translateY(-40px); - -o-transform: translateY(-40px); - transform: translateY(-40px); } } -@-moz-keyframes passing-through { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30%, 70% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - -moz-transform: translateY(-40px); - -ms-transform: translateY(-40px); - -o-transform: translateY(-40px); - transform: translateY(-40px); } } -@keyframes passing-through { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30%, 70% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } - 100% { - opacity: 0; - -webkit-transform: translateY(-40px); - -moz-transform: translateY(-40px); - -ms-transform: translateY(-40px); - -o-transform: translateY(-40px); - transform: translateY(-40px); } } -@-webkit-keyframes slide-in { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } } -@-moz-keyframes slide-in { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } } -@keyframes slide-in { - 0% { - opacity: 0; - -webkit-transform: translateY(40px); - -moz-transform: translateY(40px); - -ms-transform: translateY(40px); - -o-transform: translateY(40px); - transform: translateY(40px); } - 30% { - opacity: 1; - -webkit-transform: translateY(0px); - -moz-transform: translateY(0px); - -ms-transform: translateY(0px); - -o-transform: translateY(0px); - transform: translateY(0px); } } -@-webkit-keyframes pulse { - 0% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } - 10% { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -ms-transform: scale(1.1); - -o-transform: scale(1.1); - transform: scale(1.1); } - 20% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } } -@-moz-keyframes pulse { - 0% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } - 10% { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -ms-transform: scale(1.1); - -o-transform: scale(1.1); - transform: scale(1.1); } - 20% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } } -@keyframes pulse { - 0% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } - 10% { - -webkit-transform: scale(1.1); - -moz-transform: scale(1.1); - -ms-transform: scale(1.1); - -o-transform: scale(1.1); - transform: scale(1.1); } - 20% { - -webkit-transform: scale(1); - -moz-transform: scale(1); - -ms-transform: scale(1); - -o-transform: scale(1); - transform: scale(1); } } -.dropzone, .dropzone * { - box-sizing: border-box; } - -.dropzone { - min-height: 150px; - border: 2px solid rgba(0, 0, 0, 0.3); - background: white; - padding: 20px 20px; } -.dropzone.dz-clickable { - cursor: pointer; } -.dropzone.dz-clickable * { - cursor: default; } -.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * { - cursor: pointer; } -.dropzone.dz-started .dz-message { - display: none; } -.dropzone.dz-drag-hover { - border-style: solid; } -.dropzone.dz-drag-hover .dz-message { - opacity: 0.5; } -.dropzone .dz-message { - text-align: center; - margin: 2em 0; } -.dropzone .dz-preview { - position: relative; - display: inline-block; - vertical-align: top; - margin: 16px; - min-height: 100px; } -.dropzone .dz-preview:hover { - z-index: 1000; } -.dropzone .dz-preview:hover .dz-details { - opacity: 1; } -.dropzone .dz-preview.dz-file-preview .dz-image { - border-radius: 20px; - background: #999; - background: linear-gradient(to bottom, #eee, #ddd); } -.dropzone .dz-preview.dz-file-preview .dz-details { - opacity: 1; } -.dropzone .dz-preview.dz-image-preview { - background: white; } -.dropzone .dz-preview.dz-image-preview .dz-details { - -webkit-transition: opacity 0.2s linear; - -moz-transition: opacity 0.2s linear; - -ms-transition: opacity 0.2s linear; - -o-transition: opacity 0.2s linear; - transition: opacity 0.2s linear; } -.dropzone .dz-preview .dz-remove { - font-size: 14px; - text-align: center; - display: block; - cursor: pointer; - border: none; } -.dropzone .dz-preview .dz-remove:hover { - text-decoration: underline; } -.dropzone .dz-preview:hover .dz-details { - opacity: 1; } -.dropzone .dz-preview .dz-details { - z-index: 20; - position: absolute; - top: 0; - left: 0; - opacity: 0; - font-size: 13px; - min-width: 100%; - max-width: 100%; - padding: 2em 1em; - text-align: center; - color: rgba(0, 0, 0, 0.9); - line-height: 150%; } -.dropzone .dz-preview .dz-details .dz-size { - margin-bottom: 1em; - font-size: 16px; } -.dropzone .dz-preview .dz-details .dz-filename { - white-space: nowrap; } -.dropzone .dz-preview .dz-details .dz-filename:hover span { - border: 1px solid rgba(200, 200, 200, 0.8); - background-color: rgba(255, 255, 255, 0.8); } -.dropzone .dz-preview .dz-details .dz-filename:not(:hover) { - overflow: hidden; - text-overflow: ellipsis; } -.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span { - border: 1px solid transparent; } -.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span { - background-color: rgba(255, 255, 255, 0.4); - padding: 0 0.4em; - border-radius: 3px; } -.dropzone .dz-preview:hover .dz-image img { - -webkit-transform: scale(1.05, 1.05); - -moz-transform: scale(1.05, 1.05); - -ms-transform: scale(1.05, 1.05); - -o-transform: scale(1.05, 1.05); - transform: scale(1.05, 1.05); - -webkit-filter: blur(8px); - filter: blur(8px); } -.dropzone .dz-preview .dz-image { - border-radius: 20px; - overflow: hidden; - width: 120px; - height: 120px; - position: relative; - display: block; - z-index: 10; } -.dropzone .dz-preview .dz-image img { - display: block; } -.dropzone .dz-preview.dz-success .dz-success-mark { - -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); - animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); } -.dropzone .dz-preview.dz-error .dz-error-mark { - opacity: 1; - -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); - animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); } -.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark { - pointer-events: none; - opacity: 0; - z-index: 500; - position: absolute; - display: block; - top: 50%; - left: 50%; - margin-left: -27px; - margin-top: -27px; } -.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg { - display: block; - width: 54px; - height: 54px; } -.dropzone .dz-preview.dz-processing .dz-progress { - opacity: 1; - -webkit-transition: all 0.2s linear; - -moz-transition: all 0.2s linear; - -ms-transition: all 0.2s linear; - -o-transition: all 0.2s linear; - transition: all 0.2s linear; } -.dropzone .dz-preview.dz-complete .dz-progress { - opacity: 0; - -webkit-transition: opacity 0.4s ease-in; - -moz-transition: opacity 0.4s ease-in; - -ms-transition: opacity 0.4s ease-in; - -o-transition: opacity 0.4s ease-in; - transition: opacity 0.4s ease-in; } -.dropzone .dz-preview:not(.dz-processing) .dz-progress { - -webkit-animation: pulse 6s ease infinite; - -moz-animation: pulse 6s ease infinite; - -ms-animation: pulse 6s ease infinite; - -o-animation: pulse 6s ease infinite; - animation: pulse 6s ease infinite; } -.dropzone .dz-preview .dz-progress { - opacity: 1; - z-index: 1000; - pointer-events: none; - position: absolute; - height: 16px; - left: 50%; - top: 50%; - margin-top: -8px; - width: 80px; - margin-left: -40px; - background: rgba(255, 255, 255, 0.9); - -webkit-transform: scale(1); - border-radius: 8px; - overflow: hidden; } -.dropzone .dz-preview .dz-progress .dz-upload { - background: #333; - background: linear-gradient(to bottom, #666, #444); - position: absolute; - top: 0; - left: 0; - bottom: 0; - width: 0; - -webkit-transition: width 300ms ease-in-out; - -moz-transition: width 300ms ease-in-out; - -ms-transition: width 300ms ease-in-out; - -o-transition: width 300ms ease-in-out; - transition: width 300ms ease-in-out; } -.dropzone .dz-preview.dz-error .dz-error-message { - display: block; } -.dropzone .dz-preview.dz-error:hover .dz-error-message { - opacity: 1; - pointer-events: auto; } -.dropzone .dz-preview .dz-error-message { - pointer-events: none; - z-index: 1000; - position: absolute; - display: block; - display: none; - opacity: 0; - -webkit-transition: opacity 0.3s ease; - -moz-transition: opacity 0.3s ease; - -ms-transition: opacity 0.3s ease; - -o-transition: opacity 0.3s ease; - transition: opacity 0.3s ease; - border-radius: 8px; - font-size: 13px; - top: 130px; - left: -10px; - width: 140px; - background: #be2626; - background: linear-gradient(to bottom, #be2626, #a92222); - padding: 0.5em 1.2em; - color: white; } -.dropzone .dz-preview .dz-error-message:after { - content: ''; - position: absolute; - top: -6px; - left: 64px; - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 6px solid #be2626; } \ No newline at end of file diff --git a/public/res/template/css/plugins/dualListbox/bootstrap-duallistbox.min.css b/public/res/template/css/plugins/dualListbox/bootstrap-duallistbox.min.css deleted file mode 100644 index 6fac3b0d..00000000 --- a/public/res/template/css/plugins/dualListbox/bootstrap-duallistbox.min.css +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Bootstrap Duallistbox - v3.0.5 - * A responsive dual listbox widget optimized for Twitter Bootstrap. It works on all modern browsers and on touch devices. - * http://www.virtuosoft.eu/code/bootstrap-duallistbox/ - * - * Made by István Ujj-Mészáros - * Under Apache License v2.0 License - */ - -.bootstrap-duallistbox-container .buttons{width:100%;margin-bottom:-1px}.bootstrap-duallistbox-container label{display:block}.bootstrap-duallistbox-container .info{display:inline-block;margin-bottom:5px;font-size:11px}.bootstrap-duallistbox-container .clear1,.bootstrap-duallistbox-container .clear2{display:none;font-size:10px}.bootstrap-duallistbox-container .box1.filtered .clear1,.bootstrap-duallistbox-container .box2.filtered .clear2{display:inline-block}.bootstrap-duallistbox-container .move,.bootstrap-duallistbox-container .remove{width:60%}.bootstrap-duallistbox-container .btn-group .btn{border-bottom-left-radius:0;border-bottom-right-radius:0}.bootstrap-duallistbox-container select{border-top-left-radius:0;border-top-right-radius:0}.bootstrap-duallistbox-container .moveall,.bootstrap-duallistbox-container .removeall{width:40%}.bootstrap-duallistbox-container.bs2compatible .btn-group>.btn+.btn{margin-left:0}.bootstrap-duallistbox-container select{width:100%;height:300px;padding:0}.bootstrap-duallistbox-container .filter{display:inline-block;width:100%;height:31px;margin:0 0 5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-duallistbox-container .filter.placeholder{color:#aaa}.bootstrap-duallistbox-container.moveonselect .move,.bootstrap-duallistbox-container.moveonselect .remove{display:none}.bootstrap-duallistbox-container.moveonselect .moveall,.bootstrap-duallistbox-container.moveonselect .removeall{width:100%} \ No newline at end of file diff --git a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-2.html b/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-2.html deleted file mode 100644 index 8d3f2666..00000000 --- a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-2.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - 404 Not Found - - - - -

404 Not Found

- The request /inspinia_admin-v2.7.1/css/plugins/fonts/glyphicons-halflings-regular.woff was not found on this server. - - - diff --git a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-3.html b/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-3.html deleted file mode 100644 index dcfeaa29..00000000 --- a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-3.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - 404 Not Found - - - - -

404 Not Found

- The request /inspinia_admin-v2.7.1/css/plugins/fonts/glyphicons-halflings-regular.ttf was not found on this server. - - - diff --git a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-4.html b/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-4.html deleted file mode 100644 index 119d052f..00000000 --- a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular-4.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - 404 Not Found - - - - -

404 Not Found

- The request /inspinia_admin-v2.7.1/css/plugins/fonts/glyphicons-halflings-regular.svg was not found on this server. - - - diff --git a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular.html b/public/res/template/css/plugins/fonts/glyphicons-halflings-regular.html deleted file mode 100644 index a382e480..00000000 --- a/public/res/template/css/plugins/fonts/glyphicons-halflings-regular.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - 404 Not Found - - - - -

404 Not Found

- The request /inspinia_admin-v2.7.1/css/plugins/fonts/glyphicons-halflings-regular.eot was not found on this server. - - - diff --git a/public/res/template/css/plugins/fonts/glyphicons-halflings-regulard41d.html b/public/res/template/css/plugins/fonts/glyphicons-halflings-regulard41d.html deleted file mode 100644 index 769ebd6f..00000000 --- a/public/res/template/css/plugins/fonts/glyphicons-halflings-regulard41d.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - 404 Not Found - - - - -

404 Not Found

- The request /inspinia_admin-v2.7.1/css/plugins/fonts/glyphicons-halflings-regular.eot? was not found on this server. - - - diff --git a/public/res/template/css/plugins/footable/fonts/footable.eot b/public/res/template/css/plugins/footable/fonts/footable.eot deleted file mode 100644 index 37229798..00000000 Binary files a/public/res/template/css/plugins/footable/fonts/footable.eot and /dev/null differ diff --git a/public/res/template/css/plugins/footable/fonts/footable.svg b/public/res/template/css/plugins/footable/fonts/footable.svg deleted file mode 100644 index 5a6e1fda..00000000 --- a/public/res/template/css/plugins/footable/fonts/footable.svg +++ /dev/null @@ -1,78 +0,0 @@ - - - - -This is a custom SVG font generated by IcoMoon. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/res/template/css/plugins/footable/fonts/footable.ttf b/public/res/template/css/plugins/footable/fonts/footable.ttf deleted file mode 100644 index 2d5c84ab..00000000 Binary files a/public/res/template/css/plugins/footable/fonts/footable.ttf and /dev/null differ diff --git a/public/res/template/css/plugins/footable/fonts/footable.woff b/public/res/template/css/plugins/footable/fonts/footable.woff deleted file mode 100644 index 4864dbb5..00000000 Binary files a/public/res/template/css/plugins/footable/fonts/footable.woff and /dev/null differ diff --git a/public/res/template/css/plugins/footable/fonts/footabled41d.eot b/public/res/template/css/plugins/footable/fonts/footabled41d.eot deleted file mode 100644 index 37229798..00000000 Binary files a/public/res/template/css/plugins/footable/fonts/footabled41d.eot and /dev/null differ diff --git a/public/res/template/css/plugins/footable/footable.core.css b/public/res/template/css/plugins/footable/footable.core.css deleted file mode 100644 index e8385338..00000000 --- a/public/res/template/css/plugins/footable/footable.core.css +++ /dev/null @@ -1,178 +0,0 @@ -@font-face { - font-family: 'footable'; - src: url('fonts/footable.eot'); - src: url('fonts/footabled41d.eot?#iefix') format('embedded-opentype'), url('fonts/footable.woff') format('woff'), url('fonts/footable.ttf') format('truetype'), url('fonts/footable.svg#footable') format('svg'); - font-weight: normal; - font-style: normal; -} -@media screen and (-webkit-min-device-pixel-ratio: 0) { - @font-face { - font-family: 'footable'; - src: url('fonts/footable.svg#footable') format('svg'); - font-weight: normal; - font-style: normal; - } -} -.footable { - width: 100%; - /** SORTING **/ - - /** PAGINATION **/ - -} -.footable.breakpoint > tbody > tr.footable-detail-show > td { - border-bottom: none; -} -.footable.breakpoint > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e001"; -} -.footable.breakpoint > tbody > tr:hover:not(.footable-row-detail) { - cursor: pointer; -} -.footable.breakpoint > tbody > tr > td.footable-cell-detail { - background: #eee; - border-top: none; -} -.footable.breakpoint > tbody > tr > td > span.footable-toggle { - display: inline-block; - font-family: 'footable'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - -webkit-font-smoothing: antialiased; - padding-right: 5px; - font-size: 14px; - color: #888888; -} -.footable.breakpoint > tbody > tr > td > span.footable-toggle:before { - content: "\e000"; -} -.footable.breakpoint.toggle-circle > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e005"; -} -.footable.breakpoint.toggle-circle > tbody > tr > td > span.footable-toggle:before { - content: "\e004"; -} -.footable.breakpoint.toggle-circle-filled > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e003"; -} -.footable.breakpoint.toggle-circle-filled > tbody > tr > td > span.footable-toggle:before { - content: "\e002"; -} -.footable.breakpoint.toggle-square > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e007"; -} -.footable.breakpoint.toggle-square > tbody > tr > td > span.footable-toggle:before { - content: "\e006"; -} -.footable.breakpoint.toggle-square-filled > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e009"; -} -.footable.breakpoint.toggle-square-filled > tbody > tr > td > span.footable-toggle:before { - content: "\e008"; -} -.footable.breakpoint.toggle-arrow > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e00f"; -} -.footable.breakpoint.toggle-arrow > tbody > tr > td > span.footable-toggle:before { - content: "\e011"; -} -.footable.breakpoint.toggle-arrow-small > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e013"; -} -.footable.breakpoint.toggle-arrow-small > tbody > tr > td > span.footable-toggle:before { - content: "\e015"; -} -.footable.breakpoint.toggle-arrow-circle > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e01b"; -} -.footable.breakpoint.toggle-arrow-circle > tbody > tr > td > span.footable-toggle:before { - content: "\e01d"; -} -.footable.breakpoint.toggle-arrow-circle-filled > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e00b"; -} -.footable.breakpoint.toggle-arrow-circle-filled > tbody > tr > td > span.footable-toggle:before { - content: "\e00d"; -} -.footable.breakpoint.toggle-arrow-tiny > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e01f"; -} -.footable.breakpoint.toggle-arrow-tiny > tbody > tr > td > span.footable-toggle:before { - content: "\e021"; -} -.footable.breakpoint.toggle-arrow-alt > tbody > tr.footable-detail-show > td > span.footable-toggle:before { - content: "\e017"; -} -.footable.breakpoint.toggle-arrow-alt > tbody > tr > td > span.footable-toggle:before { - content: "\e019"; -} -.footable.breakpoint.toggle-medium > tbody > tr > td > span.footable-toggle { - font-size: 18px; -} -.footable.breakpoint.toggle-large > tbody > tr > td > span.footable-toggle { - font-size: 24px; -} -.footable > thead > tr > th { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: -moz-none; - -ms-user-select: none; - user-select: none; -} -.footable > thead > tr > th.footable-sortable:hover { - cursor: pointer; -} -.footable > thead > tr > th.footable-sorted > span.footable-sort-indicator:before { - content: "\e013"; -} -.footable > thead > tr > th.footable-sorted-desc > span.footable-sort-indicator:before { - content: "\e012"; -} -.footable > thead > tr > th > span.footable-sort-indicator { - display: inline-block; - font-family: 'footable'; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - -webkit-font-smoothing: antialiased; - padding-left: 5px; -} -.footable > thead > tr > th > span.footable-sort-indicator:before { - content: "\e022"; -} -.footable > tfoot .pagination { - margin: 0; -} -.footable.no-paging .hide-if-no-paging { - display: none; -} -.footable-row-detail-inner { - display: table; -} -.footable-row-detail-row { - display: table-row; - line-height: 1.5em; -} -.footable-row-detail-group { - display: block; - line-height: 2em; - font-size: 1.2em; - font-weight: bold; -} -.footable-row-detail-name { - display: table-cell; - font-weight: bold; - padding-right: 0.5em; -} -.footable-row-detail-value { - display: table-cell; -} -.footable-odd { - background-color: #f7f7f7; -} diff --git a/public/res/template/css/plugins/fullcalendar/fullcalendar.css b/public/res/template/css/plugins/fullcalendar/fullcalendar.css deleted file mode 100644 index b7f14b9c..00000000 --- a/public/res/template/css/plugins/fullcalendar/fullcalendar.css +++ /dev/null @@ -1,1261 +0,0 @@ -/*! - * <%= meta.title %> v<%= meta.version %> Stylesheet - * Docs & License: <%= meta.homepage %> - * (c) <%= meta.copyright %> - */ - - -.fc { - direction: ltr; - text-align: left; -} - -.fc-rtl { - text-align: right; -} - -body .fc { /* extra precedence to overcome jqui */ - font-size: 1em; -} - - -/* Colors ---------------------------------------------------------------------------------------------------*/ - -.fc-unthemed th, -.fc-unthemed td, -.fc-unthemed thead, -.fc-unthemed tbody, -.fc-unthemed .fc-divider, -.fc-unthemed .fc-row, -.fc-unthemed .fc-content, /* for gutter border */ -.fc-unthemed .fc-popover { - border-color: #ddd; -} - -.fc-unthemed .fc-popover { - background-color: #fff; -} - -.fc-unthemed .fc-divider, -.fc-unthemed .fc-popover .fc-header { - background: #eee; -} - -.fc-unthemed .fc-popover .fc-header .fc-close { - color: #666; -} - -.fc-unthemed .fc-today { - background: #fcf8e3; -} - -.fc-highlight { /* when user is selecting cells */ - background: #bce8f1; - opacity: .3; - filter: alpha(opacity=30); /* for IE */ -} - -.fc-bgevent { /* default look for background events */ - background: rgb(143, 223, 130); - opacity: .3; - filter: alpha(opacity=30); /* for IE */ -} - -.fc-nonbusiness { /* default look for non-business-hours areas */ - /* will inherit .fc-bgevent's styles */ - background: #d7d7d7; -} - - -/* Icons (inline elements with styled text that mock arrow icons) ---------------------------------------------------------------------------------------------------*/ - -.fc-icon { - display: inline-block; - height: 1em; - line-height: 1em; - font-size: 1em; - text-align: center; - overflow: hidden; - font-family: "Courier New", Courier, monospace; - - /* don't allow browser text-selection */ - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - } - -/* -Acceptable font-family overrides for individual icons: - "Arial", sans-serif - "Times New Roman", serif - -NOTE: use percentage font sizes or else old IE chokes -*/ - -.fc-icon:after { - position: relative; -} - -.fc-icon-left-single-arrow:after { - content: "\02039"; - font-weight: bold; - font-size: 200%; - top: -7%; -} - -.fc-icon-right-single-arrow:after { - content: "\0203A"; - font-weight: bold; - font-size: 200%; - top: -7%; -} - -.fc-icon-left-double-arrow:after { - content: "\000AB"; - font-size: 160%; - top: -7%; -} - -.fc-icon-right-double-arrow:after { - content: "\000BB"; - font-size: 160%; - top: -7%; -} - -.fc-icon-left-triangle:after { - content: "\25C4"; - font-size: 125%; - top: 3%; -} - -.fc-icon-right-triangle:after { - content: "\25BA"; - font-size: 125%; - top: 3%; -} - -.fc-icon-down-triangle:after { - content: "\25BC"; - font-size: 125%; - top: 2%; -} - -.fc-icon-x:after { - content: "\000D7"; - font-size: 200%; - top: 6%; -} - - -/* Buttons (styled