├── .gitignore
├── examples
├── scene
│ ├── assets
│ │ ├── peach-gradient-1.jpg
│ │ ├── tex
│ │ │ └── shadow-circle.png
│ │ ├── 321103__nsstudios__blip1.wav
│ │ ├── tree1.dae
│ │ └── tree2.dae
│ └── index.html
├── examples.css
└── index.html
├── browser.js
├── tests
├── .jshintrc
├── __init.test.js
├── karma.conf.js
├── helpers.js
└── proxy-controls.test.js
├── .jshintrc
├── lib
├── Object.polyfill.js
└── overlay.js
├── LICENSE
├── package.json
├── README.md
├── proxy-controls.js
└── dist
└── aframe-proxy-controls.min.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .sw[ponm]
2 | examples/node_modules/
3 | gh-pages
4 | node_modules/
5 | build.js
6 |
--------------------------------------------------------------------------------
/examples/scene/assets/peach-gradient-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/donmccurdy/aframe-proxy-controls/master/examples/scene/assets/peach-gradient-1.jpg
--------------------------------------------------------------------------------
/examples/scene/assets/tex/shadow-circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/donmccurdy/aframe-proxy-controls/master/examples/scene/assets/tex/shadow-circle.png
--------------------------------------------------------------------------------
/examples/scene/assets/321103__nsstudios__blip1.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/donmccurdy/aframe-proxy-controls/master/examples/scene/assets/321103__nsstudios__blip1.wav
--------------------------------------------------------------------------------
/examples/examples.css:
--------------------------------------------------------------------------------
1 | html {
2 | background: #EF2D5E;
3 | color: #FAFAFA;
4 | font-family: monospace;
5 | font-size: 20px;
6 | padding: 10px 20px;
7 | }
8 | body {
9 | max-width: 40em;
10 | line-height: 1.5em;
11 | }
12 | h1 {
13 | font-weight: 300;
14 | }
15 | a {
16 | color: #FAFAFA;
17 | padding: 15px 0;
18 | }
19 |
--------------------------------------------------------------------------------
/browser.js:
--------------------------------------------------------------------------------
1 | // Browser distrubution of the A-Frame component.
2 | (function (AFRAME) {
3 | if (!AFRAME) {
4 | console.error('Component attempted to register before AFRAME was available.');
5 | return;
6 | }
7 |
8 | (AFRAME.aframeCore || AFRAME).registerComponent('proxy-controls', require('./proxy-controls'));
9 |
10 | }(window.AFRAME));
11 |
--------------------------------------------------------------------------------
/tests/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../.jshintrc",
3 | "globals" : {
4 | "it" : false,
5 | "describe" : false,
6 | "expect" : false,
7 | "beforeEach" : false,
8 | "afterEach" : false,
9 | "assert" : false,
10 | "sinon" : false,
11 | "spyOn" : false,
12 | "suite" : false
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "globals": {
3 | "console": false,
4 | "document": false,
5 | "fetch": false,
6 | "module": false,
7 | "process": false,
8 | "require": false,
9 | "THREE": false,
10 | "window": false
11 | },
12 | "bitwise": false,
13 | "browser": true,
14 | "eqeqeq": true,
15 | "esnext": true,
16 | "expr": true,
17 | "forin": true,
18 | "immed": true,
19 | "latedef": "nofunc",
20 | "laxbreak": true,
21 | "maxlen": 100,
22 | "newcap": true,
23 | "noarg": true,
24 | "noempty": true,
25 | "nonew": true,
26 | "noyield": true,
27 | "quotmark": "single",
28 | "smarttabs": false,
29 | "trailing": true,
30 | "undef": true,
31 | "unused": true,
32 | "white": false
33 | }
34 |
--------------------------------------------------------------------------------
/tests/__init.test.js:
--------------------------------------------------------------------------------
1 | /**
2 | * __init.test.js is run before every test case.
3 | */
4 | window.debug = true;
5 |
6 | var AScene = require('aframe-core').AScene;
7 |
8 | beforeEach(function () {
9 | this.sinon = sinon.sandbox.create();
10 | // Stub to not create a WebGL context since Travis CI runs headless.
11 | this.sinon.stub(AScene.prototype, 'attachedCallback');
12 | });
13 |
14 | afterEach(function () {
15 | // Clean up any attached elements.
16 | ['canvas', 'a-assets', 'a-scene'].forEach(function (tagName) {
17 | var els = document.querySelectorAll(tagName);
18 | for (var i = 0; i < els.length; i++) {
19 | els[i].parentNode.removeChild(els[i]);
20 | }
21 | });
22 | AScene.scene = null;
23 |
24 | this.sinon.restore();
25 | });
26 |
--------------------------------------------------------------------------------
/lib/Object.polyfill.js:
--------------------------------------------------------------------------------
1 | if (typeof Object.assign !== 'function') {
2 | (function () {
3 | Object.assign = function (target) {
4 | 'use strict';
5 | if (target === undefined || target === null) {
6 | throw new TypeError('Cannot convert undefined or null to object');
7 | }
8 |
9 | var output = Object(target);
10 | for (var index = 1; index < arguments.length; index++) {
11 | var source = arguments[index];
12 | if (source !== undefined && source !== null) {
13 | for (var nextKey in source) {
14 | if (source.hasOwnProperty(nextKey)) {
15 | output[nextKey] = source[nextKey];
16 | }
17 | }
18 | }
19 | }
20 | return output;
21 | };
22 | })();
23 | }
24 |
--------------------------------------------------------------------------------
/tests/karma.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 | module.exports = function (config) {
3 | config.set({
4 | basePath: '../',
5 | browserify: {
6 | paths: ['./']
7 | },
8 | browsers: ['firefox_latest'],
9 | customLaunchers: {
10 | firefox_latest: {
11 | base: 'FirefoxNightly',
12 | prefs: { /* empty */ }
13 | }
14 | },
15 | client: {
16 | captureConsole: true,
17 | mocha: {ui: 'bdd'}
18 | },
19 | envPreprocessor: [
20 | 'TEST_ENV'
21 | ],
22 | files: [
23 | 'tests/**/*.test.js',
24 | ],
25 | frameworks: ['mocha', 'sinon-chai', 'chai-shallow-deep-equal', 'browserify'],
26 | preprocessors: {
27 | 'tests/**/*.js': ['browserify']
28 | },
29 | reporters: ['mocha']
30 | });
31 | };
32 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Don McCurdy
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/examples/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | A-Frame Proxy Controls • Examples
6 |
7 |
8 |
9 |
10 | A-Frame Proxy Controls
11 |
12 |
13 | To test, open the Remote Client
14 | on a device with a keyboard or gamepad attached. Then, open an example
15 | scene in another tab or with a WebVR-capable mobile device.
16 |
17 |
18 |
19 | You'll see a short pair code on the scene, which can used by your host
20 | device to connect.
21 |
22 |
23 | Examples
24 |
25 |
26 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/tests/helpers.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Helper method to create a scene, create an entity, add entity to scene,
3 | * add scene to document.
4 | *
5 | * @returns {object} An `` element.
6 | */
7 | module.exports.entityFactory = function () {
8 | var scene = document.createElement('a-scene');
9 | var entity = document.createElement('a-entity');
10 | scene.appendChild(entity);
11 | document.body.appendChild(scene);
12 | return entity;
13 | };
14 |
15 | /**
16 | * Creates and attaches a mixin element (and an `` element if necessary).
17 | *
18 | * @param {string} id - ID of mixin.
19 | * @param {object} obj - Map of component names to attribute values.
20 | * @returns {object} An attached `` element.
21 | */
22 | module.exports.mixinFactory = function (id, obj) {
23 | var mixinEl = document.createElement('a-mixin');
24 | mixinEl.setAttribute('id', id);
25 | Object.keys(obj).forEach(function (componentName) {
26 | mixinEl.setAttribute(componentName, obj[componentName]);
27 | });
28 |
29 | var assetsEl = document.querySelector('a-assets');
30 | if (!assetsEl) {
31 | assetsEl = document.createElement('a-assets');
32 | document.body.appendChild(assetsEl);
33 | }
34 | assetsEl.appendChild(mixinEl);
35 |
36 | return mixinEl;
37 | };
38 |
39 | /**
40 | * Test that is only run locally and is skipped on CI.
41 | */
42 | module.exports.getSkipCISuite = function () {
43 | if (window.__env__.TEST_ENV === 'ci') {
44 | return suite.skip;
45 | } else {
46 | return suite;
47 | }
48 | };
49 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "aframe-proxy-controls",
3 | "version": "0.6.0",
4 | "description": "A-Frame component to proxy keyboard/gamepad controls between devices over WebRTC.",
5 | "main": "proxy-controls.js",
6 | "config": {
7 | "demo_host": "localhost",
8 | "demo_port": 8000,
9 | "proxy_url": "https://proxy-controls.donmccurdy.com"
10 | },
11 | "scripts": {
12 | "dev": "budo browser.js:bundle.js --dir examples --host $npm_package_config_demo_host --port $npm_package_config_demo_port --live -- -t envify",
13 | "dist": "browserify -t envify browser.js -o dist/aframe-proxy-controls.js && uglifyjs dist/aframe-proxy-controls.js -o dist/aframe-proxy-controls.min.js --compress --mangle --screw-ie8",
14 | "test": "karma start ./tests/karma.conf.js",
15 | "preversion": "karma start ./tests/karma.conf.js --single-run",
16 | "version": "npm run dist && git add -A dist",
17 | "postversion": "git push && git push --tags && npm publish"
18 | },
19 | "repository": {
20 | "type": "git",
21 | "url": "git+https://github.com/donmccurdy/aframe-proxy-controls.git"
22 | },
23 | "keywords": [
24 | "aframe",
25 | "aframe-component",
26 | "layout",
27 | "aframe-vr",
28 | "vr",
29 | "aframe-layout",
30 | "mozvr",
31 | "webvr",
32 | "webrtc"
33 | ],
34 | "author": "Don McCurdy ",
35 | "license": "MIT",
36 | "bugs": {
37 | "url": "https://github.com/donmccurdy/aframe-proxy-controls/issues"
38 | },
39 | "homepage": "https://github.com/donmccurdy/aframe-proxy-controls#readme",
40 | "dependencies": {
41 | "keyboardevent-key-polyfill": "^1.0.1",
42 | "socketpeer": "donmccurdy/socketpeer#fork-master",
43 | "whatwg-fetch": "^0.11.0"
44 | },
45 | "devDependencies": {
46 | "aframe-core": "*",
47 | "browserify": "^12.0.1",
48 | "browserify-css": "^0.8.3",
49 | "budo": "^7.1.0",
50 | "chai": "^3.4.1",
51 | "chai-shallow-deep-equal": "^1.3.0",
52 | "envify": "^3.4.0",
53 | "ghpages": "0.0.3",
54 | "karma": "^0.13.15",
55 | "karma-browserify": "^4.4.2",
56 | "karma-chai-shallow-deep-equal": "0.0.4",
57 | "karma-firefox-launcher": "^0.1.7",
58 | "karma-mocha": "^0.2.1",
59 | "karma-mocha-reporter": "^1.1.3",
60 | "karma-sinon-chai": "^1.1.0",
61 | "mocha": "^2.3.4",
62 | "uglify-js": "^2.6.1"
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/tests/proxy-controls.test.js:
--------------------------------------------------------------------------------
1 | var Aframe = require('aframe-core'),
2 | component = require('../proxy-controls.js'),
3 | entityFactory = require('./helpers').entityFactory;
4 |
5 | Aframe.registerComponent('proxy-controls', component);
6 |
7 | describe('proxy controls', function () {
8 | var ctrl,
9 | fetchPromise;
10 |
11 | beforeEach(function () {
12 | fetchPromise = Promise.resolve({json: function () { return {pairCode: 'pair-code'}; }});
13 | sinon.stub(window, 'fetch', function () { return fetchPromise; });
14 | });
15 |
16 | afterEach(function () {
17 | window.fetch.restore();
18 | });
19 |
20 | beforeEach(function (done) {
21 | this.el = entityFactory();
22 | this.el.setAttribute('proxy-controls', 'proxyUrl: http://foo.bar.baz');
23 | this.el.addEventListener('loaded', function () {
24 | ctrl = this.el.components['proxy-controls'];
25 | done();
26 | }.bind(this));
27 | });
28 |
29 | describe('keyboard events', function () {
30 | it('returns recent keyboard state', function () {
31 | var state = {hi: 'im a keyboard'};
32 | ctrl.onEvent({type: 'keyboard', state: state});
33 | expect(ctrl.getKeyboard()).to.equal(state);
34 | });
35 | });
36 |
37 | describe('gamepad events', function () {
38 | it('returns recent gamepad state', function () {
39 | var state = {hi: 'im a gamepad'};
40 | ctrl.onEvent({type: 'gamepad', state: [state]});
41 | expect(ctrl.getGamepad(0)).to.equal(state);
42 | });
43 | });
44 |
45 | describe('arbitrary event support', function () {
46 | it('returns arbitrary input state', function () {
47 | var state = {hi: 'im a USB-powered plush toy'};
48 | ctrl.onEvent({type: 'plush-toy', state: state});
49 | expect(ctrl.get('plush-toy')).to.equal(state);
50 | });
51 | });
52 |
53 | describe('pair code overlay', function () {
54 |
55 | it('displays pair code in overlay and inserts styles', function () {
56 | expect(ctrl.overlay.el.textContent).to.contain('pair-code');
57 | expect(ctrl.overlay.stylesheet).to.be.ok;
58 | });
59 |
60 | it('hides overlay for enableOverlay:false', function () {
61 | ctrl.overlay.destroy();
62 | ctrl.overlay = null;
63 |
64 | ctrl.data.enableOverlay = false;
65 | ctrl.createOverlay('pair-code');
66 | expect(ctrl.overlay).to.be.null;
67 | });
68 |
69 | it('omits styles for enableOverlayStiles:false', function () {
70 | ctrl.overlay.destroy();
71 | ctrl.overlay = null;
72 |
73 | ctrl.data.enableOverlayStyles = false;
74 | ctrl.createOverlay('pair-code');
75 | expect(ctrl.overlay).to.be.ok;
76 | expect(ctrl.overlay.stylesheet).to.be.null;
77 | });
78 |
79 | });
80 |
81 | });
82 |
--------------------------------------------------------------------------------
/examples/scene/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Scene • Examples
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
24 |
25 |
26 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
45 |
46 |
47 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # A-Frame `proxy-controls` Component
2 |
3 | 
4 | [](https://github.com/donmccurdy/aframe-proxy-controls/blob/master/LICENSE)
5 |
6 | A-Frame component to proxy keyboard/gamepad controls between devices over WebRTC.
7 |
8 | ## Overview
9 |
10 | With a mobile device / Google Cardboard for WebVR, designing the UI around a single button is an obstacle. This component provides an *experimental* way to proxy user input events (keyboard, perhaps Leap Motion later) from a keyboard-connected device to the mobile viewer.
11 |
12 | For performance, WebRTC DataStreams are used to minimize latency between the devices. [Browser support for this standard is limited](http://caniuse.com/#feat=rtcpeerconnection) - notably, Safari (including all iPhone browsers) does not support it. I will consider adding fallback support via WebSockets in the future, if the latency is bearable.
13 |
14 | ## Usage
15 |
16 | Add the `proxy-controls` component to the scene, and use one of the input controller components on the object(s) you want to control. For example:
17 |
18 | ```html
19 |
20 |
21 |
22 | ```
23 |
24 | The `gamepad-controls` component is available separately, [here](https://github.com/donmccurdy/aframe-gamepad-controls).
25 |
26 | ## Options
27 |
28 | Options are assigned with A-Frame's entity/component/property pattern:
29 |
30 | ```html
31 |
35 |
36 |
37 |
38 |
39 | ```
40 |
41 |
42 | Property | Default | Description
43 | --------------------|----------|-------------
44 | enabled | true | Enables/disables event updates from the host.
45 | debug | false | Enables/disables logging in the console.
46 | proxyUrl | https://proxy-controls.donmccurdy.com | URL of the remote proxy server / signaling server.
47 | pairCode | \ | Pair code that should be used to match with the remote host. If not provided, a random pair code is assigned.
48 | enableOverlay | true | Enables/disables the overlay UI showing the pair code.
49 | enableOverlayStyles | true | Enables/disables the CSS used to style the pair code overlay.
50 |
51 | ## Events
52 |
53 | When the pair code is available, a `proxycontrols.paircode` event is fired. If you want to hide the default overlay, use this to show the pair code to the user as needed:
54 |
55 | ```javascript
56 | scene.addEventListener('proxycontrols.paircode', function (e) {
57 | console.log(e.detail.pairCode);
58 | });
59 | ```
60 |
--------------------------------------------------------------------------------
/lib/overlay.js:
--------------------------------------------------------------------------------
1 |
2 | var STYLES = {
3 | overlay: {
4 | default: [
5 | 'position: absolute;',
6 | 'top: 20px;',
7 | 'left: 20px;',
8 | 'max-width: calc(100% - 40px);',
9 | 'box-sizing: border-box;',
10 | 'padding: 0.5em;',
11 | 'color: #FFF;',
12 | 'background: rgba(0,0,0,0.35);',
13 | 'font-family: Source Sans Pro, Helvetica Neue, Helvetica, Arial, sans-serif;',
14 | 'font-size: 1.2em;'
15 | ],
16 | desktop : [
17 | 'top: auto;',
18 | 'left: auto;',
19 | 'bottom: 90px;',
20 | 'right: 20px;'
21 | ]
22 | },
23 | link: {
24 | default: [
25 | 'display: none;'
26 | ],
27 | desktop: [
28 | 'display: inline;',
29 | 'padding: 0.2em 0.4em 0.35em;',
30 | 'color: #444;',
31 | 'background: rgba(255,255,255,0.65);',
32 | 'float: right;',
33 | 'text-decoration: none;',
34 | 'margin-top: 0.4em;'
35 | ],
36 | hover: [
37 | 'background: rgba(255,255,255,0.8);'
38 | ]
39 | },
40 | x: {
41 | default: [
42 | 'position: absolute;',
43 | 'top: -10px;',
44 | 'right: -10px;',
45 | 'height: 20px;',
46 | 'width: 20px;',
47 | 'line-height: 20px;',
48 | 'text-align: center;',
49 | 'border-radius: 50%;',
50 | 'background: rgba(0,0,0,0.35);',
51 | 'color: #FFF;',
52 | 'cursor: pointer;'
53 | ]
54 | }
55 | };
56 |
57 | /**
58 | * Helper class for the canvas overlay, which has to be rendered and styled
59 | * in JavaScript, just because.
60 | *
61 | * @param {string} pairCode
62 | * * @param {string} linkUrl
63 | * @param {boolean} includeStyles
64 | */
65 | var Overlay = function (pairCode, linkUrl, includeStyles) {
66 | /** @type {string} Pair code. */
67 | this.pairCode = pairCode;
68 |
69 | /** @type {string} URL for 'Connect' button. */
70 | this.linkUrl = linkUrl;
71 |
72 | /** @type {Element} Overlay element. */
73 | this.el = document.createElement('div');
74 |
75 | /** @type {Element} Overlay stylesheet. */
76 | this.stylesheet = null;
77 |
78 | if (includeStyles) {
79 | this.stylesheet = document.createElement('style');
80 | this.appendStyles();
81 | }
82 |
83 | this.render();
84 | };
85 |
86 | Overlay.prototype.render = function () {
87 | var overlayLink = document.createElement('a'),
88 | overlayLinkWrap = document.createElement('div'),
89 | overlayClose = document.createElement('div');
90 | overlayLink.textContent = '› Connect';
91 | overlayLink.href = this.linkUrl + '/#/connect';
92 | overlayLink.target = '_blank';
93 | overlayLink.classList.add('overlay-link');
94 |
95 | this.el.textContent = 'Pair code: “' + this.pairCode + '”';
96 | this.el.classList.add('overlay');
97 |
98 | overlayClose.innerHTML = '×';
99 | overlayClose.classList.add('overlay-x');
100 | overlayClose.addEventListener('click', this.el.remove.bind(this.el));
101 |
102 | overlayLinkWrap.appendChild(overlayLink);
103 | this.el.appendChild(overlayLinkWrap);
104 | this.el.appendChild(overlayClose);
105 | document.body.appendChild(this.el);
106 | };
107 |
108 | Overlay.prototype.appendStyles = function () {
109 | var style = this.stylesheet;
110 | style.type = 'text/css';
111 | document.head.appendChild(style);
112 | style.sheet.insertRule(''
113 | + '@media screen and (min-width: 550px) { .overlay { '
114 | + STYLES.overlay.desktop.join('')
115 | + ' }}',
116 | 0
117 | );
118 | style.sheet.insertRule(''
119 | + '@media screen and (min-width: 550px) { .overlay-link { '
120 | + STYLES.link.desktop.join('')
121 | + ' }}',
122 | 0
123 | );
124 | style.sheet.insertRule('.overlay { ' + STYLES.overlay.default.join('') + ' }', 0);
125 | style.sheet.insertRule('.overlay-x { ' + STYLES.x.default.join('') + ' }', 0);
126 | style.sheet.insertRule('.overlay-link { ' + STYLES.link.default.join('') + ' }', 0);
127 | style.sheet.insertRule('.overlay-link:hover { ' + STYLES.link.hover.join('') + ' }', 0);
128 | };
129 |
130 | Overlay.prototype.destroy = function () {
131 | this.el.remove();
132 | if (this.stylesheet) this.stylesheet.remove();
133 | };
134 |
135 | module.exports = Overlay;
136 |
--------------------------------------------------------------------------------
/proxy-controls.js:
--------------------------------------------------------------------------------
1 | require('./lib/Object.polyfill.js');
2 | require('whatwg-fetch');
3 |
4 | var SocketPeer = require('socketpeer'),
5 | Overlay = require('./lib/overlay');
6 |
7 | var PROXY_URL = 'https://proxy-controls.donmccurdy.com';
8 | if (typeof process !== 'undefined') {
9 | PROXY_URL = process.env.npm_package_config_proxy_url || PROXY_URL;
10 | }
11 |
12 | /**
13 | * Client controls via WebRTC datastream, for A-Frame.
14 | *
15 | * @namespace proxy-controls
16 | * @param {string} proxyUrl - URL of remote WebRTC connection broker.
17 | * @param {string} proxyPath - Proxy path on connection broken service.
18 | * @param {string} pairCode - ID for local client. If not specified, a random
19 | * code is fetched from the server.
20 | * @param {bool} [enabled=true] - To completely enable or disable the remote updates.
21 | * @param {debug} [debug=false] - Whether to show debugging information in the log.
22 | */
23 | module.exports = {
24 | /*******************************************************************
25 | * Schema
26 | */
27 |
28 | schema: {
29 | enabled: { default: true },
30 | debug: { default: false },
31 |
32 | // WebRTC/WebSocket configuration.
33 | proxyUrl: { default: PROXY_URL },
34 | pairCode: { default: '' },
35 |
36 | // Overlay styles
37 | enableOverlay: {default: true },
38 | enableOverlayStyles: { default: true }
39 | },
40 |
41 | /*******************************************************************
42 | * Initialization
43 | */
44 |
45 | /**
46 | * Called once when component is attached. Generally for initial setup.
47 | */
48 | init: function () {
49 | /** @type {SocketPeer} WebRTC/WebSocket connection. */
50 | this.peer = null;
51 |
52 | /** @type {Overlay} Overlay to display pair code. */
53 | this.overlay = null;
54 |
55 | /** @type {Object} State tracking, keyed by event type. */
56 | this.state = {};
57 |
58 | if (this.data.pairCode) {
59 | this.setupConnection(this.data.pairCode);
60 | } else {
61 | fetch(this.data.proxyUrl + '/ajax/pair-code')
62 | .then(function (response) { return response.json(); })
63 | .then(function (data) { return data.pairCode; })
64 | .then(this.setupConnection.bind(this))
65 | .catch(console.error.bind(console));
66 | }
67 | },
68 |
69 | tick: function () {},
70 |
71 | /*******************************************************************
72 | * WebRTC Connection
73 | */
74 |
75 | setupConnection: function (pairCode) {
76 | var data = this.data;
77 |
78 | if (!data.proxyUrl) {
79 | console.error('proxy-controls "proxyUrl" property not found.');
80 | return;
81 | }
82 |
83 | var peer = this.peer = new SocketPeer({
84 | pairCode: pairCode,
85 | url: data.proxyUrl + '/socketpeer/'
86 | });
87 |
88 | this.el.emit('proxycontrols.paircode', {pairCode: pairCode});
89 | this.createOverlay(pairCode);
90 |
91 | peer.on('connect', this.onConnection.bind(this));
92 | peer.on('disconnect', this.createOverlay.bind(this, pairCode));
93 | peer.on('error', function (error) {
94 | if (data.debug) console.error('peer:error(%s)', error.message);
95 | });
96 |
97 | // Debugging
98 | if (data.debug) {
99 | peer.on('connect', console.info.bind(console, 'peer:connect("%s")'));
100 | peer.on('upgrade', console.info.bind(console, 'peer:upgrade("%s")'));
101 | }
102 | },
103 |
104 | onConnection: function () {
105 | if (this.data.debug) console.info('peer:connection()');
106 | if (this.overlay) this.overlay.destroy();
107 | this.peer.on('data', this.onEvent.bind(this));
108 | },
109 |
110 | createOverlay: function (pairCode) {
111 | if (this.data.enableOverlay) {
112 | this.overlay = new Overlay(
113 | pairCode,
114 | this.data.proxyUrl + '/#/connect',
115 | this.data.enableOverlayStyles
116 | );
117 | }
118 | },
119 |
120 | /*******************************************************************
121 | * Remote event propagation
122 | */
123 |
124 | onEvent: function (event) {
125 | if (!this.data.enabled) {
126 | return;
127 | } else if (!event.type) {
128 | if (this.data.debug) console.warn('Missing event type.');
129 | } else if (event.type === 'ping') {
130 | this.peer.send(event);
131 | } else {
132 | this.state[event.type] = event.state;
133 | }
134 | },
135 |
136 | /*******************************************************************
137 | * Accessors
138 | */
139 |
140 | /**
141 | * Returns true if the ProxyControls instance is currently connected to a
142 | * remote peer and able to accept input events.
143 | *
144 | * @return {boolean}
145 | */
146 | isConnected: function () {
147 | var peer = this.peer || {};
148 | return peer.socketConnected || peer.rtcConnected;
149 | },
150 |
151 | /**
152 | * Returns the Gamepad instance at the given index, if any.
153 | *
154 | * @param {number} index
155 | * @return {Gamepad}
156 | */
157 | getGamepad: function (index) {
158 | return (this.state.gamepad || {})[index];
159 | },
160 |
161 | /**
162 | * Returns an object representing keyboard state. Object will have keys
163 | * for every pressed key on the keyboard, while unpressed keys will not
164 | * be included. For example, while pressing Shift+A, this function would
165 | * return: `{SHIFT: true, A: true}`.
166 | *
167 | * @return {Object}
168 | */
169 | getKeyboard: function () {
170 | return this.state.keyboard || {};
171 | },
172 |
173 | /**
174 | * Generic accessor for custom input types.
175 | *
176 | * @param {string} type
177 | * @return {Object}
178 | */
179 | get: function (type) {
180 | return this.state[type];
181 | },
182 |
183 | /*******************************************************************
184 | * Dealloc
185 | */
186 |
187 | /**
188 | * Called when a component is removed (e.g., via removeAttribute).
189 | * Generally undoes all modifications to the entity.
190 | */
191 | remove: function () {
192 | if (this.peer) this.peer.destroy();
193 | if (this.overlay) this.overlay.destroy();
194 | }
195 | };
196 |
--------------------------------------------------------------------------------
/examples/scene/assets/tree1.dae:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CINEMA4D 15.064 COLLADA Exporter
6 |
7 | 2015-08-28T05:40:04Z
8 | 2015-08-28T05:40:04Z
9 |
10 | Y_UP
11 |
12 |
13 |
14 | tex/shadow-circle.png
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 0.8 0.8 0.8 1
24 |
25 |
26 | 0.2 0.2 0.2 1
27 |
28 |
29 | 0.5
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | 0.0627451 0.396078 0.513725 1
41 |
42 |
43 | 0.2 0.2 0.2 1
44 |
45 |
46 | 0.5
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | 0.0235294 0.564706 0.607843 1
58 |
59 |
60 | 0.2 0.2 0.2 1
61 |
62 |
63 | 0.5
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | 0.164706 0.72549 0.701961 1
75 |
76 |
77 | 0.2 0.2 0.2 1
78 |
79 |
80 | 0.5
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | 0.654902 0.47451 0.415686 1
92 |
93 |
94 | 0.2 0.2 0.2 1
95 |
96 |
97 | 0.5
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | ID13
108 |
109 |
110 |
111 |
112 | ID14
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | 1 1 1 1
122 |
123 |
124 | 0.88
125 |
126 |
127 | 1
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 | -40 -80.5 40 40 -80.5 40 40 -80.5 -40 -40 -80.5 -40 -40 -77.5711 47.0711 40 -77.5711 47.0711 45 -77.5711 45 47.0711 -77.5711 40 47.0711 -77.5711 -40 45 -77.5711 -45 40 -77.5711 -47.0711 -40 -77.5711 -47.0711 -45 -77.5711 -45 -47.0711 -77.5711 -40 -47.0711 -77.5711 40 -45 -77.5711 45 -40 -70.5 50 40 -70.5 50 47.0711 -70.5 47.0711 50 -70.5 40 50 -70.5 -40 47.0711 -70.5 -47.0711 40 -70.5 -50 -40 -70.5 -50 -47.0711 -70.5 -47.0711 -50 -70.5 -40 -50 -70.5 40 -47.0711 -70.5 47.0711 -40 70.5 50 40 70.5 50 47.0711 70.5 47.0711 50 70.5 40 50 70.5 -40 47.0711 70.5 -47.0711 40 70.5 -50 -40 70.5 -50 -47.0711 70.5 -47.0711 -50 70.5 -40 -50 70.5 40 -47.0711 70.5 47.0711 -40 77.5711 47.0711 40 77.5711 47.0711 45 77.5711 45 47.0711 77.5711 40 47.0711 77.5711 -40 45 77.5711 -45 40 77.5711 -47.0711 -40 77.5711 -47.0711 -45 77.5711 -45 -47.0711 77.5711 -40 -47.0711 77.5711 40 -45 77.5711 45 -40 80.5 40 40 80.5 40 40 80.5 -40 -40 80.5 -40
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 | -0.0785214 -0.921027 0.381502 0.0785214 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785214 0.921027 0.381502 0.0785214 0.921027 0.381502 0.156558 -0.912487 0.377964 0.357407 -0.357407 0.862856 0.382683 0 0.92388 0.357407 0.357407 0.862856 0.156558 0.912487 0.377964 0.381502 -0.921027 0.0785214 0.377964 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.92388 0 0.382683 0.862856 0.357407 0.357407 0.377964 0.912487 0.156558 0.381502 0.921027 0.0785214 0.381502 -0.921027 -0.0785214 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785214 0.377964 -0.912487 -0.156558 0.862856 -0.357407 -0.357407 0.92388 0 -0.382683 0.862856 0.357407 -0.357407 0.377964 0.912487 -0.156558 0.0785214 -0.921027 -0.381502 0.156558 -0.912487 -0.377964 0.357407 -0.357407 -0.862856 0.382683 0 -0.92388 0.357407 0.357407 -0.862856 0.156558 0.912487 -0.377964 0.0785214 0.921027 -0.381502 -0.0785214 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785214 0.921027 -0.381502 -0.156558 -0.912487 -0.377964 -0.357407 -0.357407 -0.862856 -0.382683 0 -0.92388 -0.357407 0.357407 -0.862856 -0.156558 0.912487 -0.377964 -0.381502 -0.921027 -0.0785214 -0.377964 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.92388 0 -0.382683 -0.862856 0.357407 -0.357407 -0.377964 0.912487 -0.156558 -0.381502 0.921027 -0.0785214 -0.381502 -0.921027 0.0785214 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785214 -0.377964 -0.912487 0.156558 -0.862856 -0.357407 0.357407 -0.92388 0 0.382683 -0.862856 0.357407 0.357407 -0.377964 0.912487 0.156558 -0.156558 -0.912487 0.377964 -0.357407 -0.357407 0.862856 -0.382683 0 0.92388 -0.357407 0.357407 0.862856 -0.156558 0.912487 0.377964 0 1 -0 0 -1 -0
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 | 0 0 0 0.0455526 0.835876 0.0455526 0.835876 0 0 0.0911051 0.835876 0.0911051 0 0.908895 0.835876 0.908895 0 0.954447 0.835876 0.954447 0 1 0.835876 1 0.876907 0 0.917938 0.0455526 0.917938 0.0911051 0.917938 0.908895 0.917938 0.954447 0.876907 1 0.958969 0 1 0.0455526 1 0.0911051 1 0.908895 1 0.954447 0.958969 1 1 1 1 0
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 | 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4
194 | 1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 3 8 19 2 7 12 1 1 12 0 8 20 2 20 20 5 19 20 4 7 20 1 20 21 5 32 21 7 31 21 6 19 21 4 32 22 7 44 22 9 43 22 8 31 22 6 44 23 9 54 23 11 53 18 10 43 18 8 9 24 13 8 19 2 2 19 12 9 25 13 21 25 14 20 25 5 8 25 2 21 26 14 33 26 15 32 26 7 20 26 5 33 27 15 45 27 16 44 27 9 32 27 7 45 28 16 54 23 17 44 23 9 10 29 19 9 30 13 2 29 18 10 31 19 22 31 20 21 31 14 9 31 13 22 32 20 34 32 21 33 32 15 21 32 14 34 33 21 46 33 22 45 33 16 33 33 15 46 35 22 54 35 23 45 34 16 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 3 14 53 2 13 46 1 3 46 0 14 54 2 26 54 5 25 54 4 13 54 1 26 55 5 38 55 7 37 55 6 25 55 4 38 56 7 50 56 9 49 56 8 37 56 6 50 57 9 52 57 11 55 52 10 49 52 8 15 58 13 14 53 2 0 53 12 15 59 13 27 59 14 26 59 5 14 59 2 27 60 14 39 60 15 38 60 7 26 60 5 39 61 15 51 61 16 50 61 9 38 61 7 51 62 16 52 57 17 50 57 9 4 0 19 15 63 13 0 0 18 4 64 19 16 64 20 27 64 14 15 64 13 16 65 20 28 65 21 39 65 15 27 65 14 28 66 21 40 66 22 51 66 16 39 66 15 40 5 22 52 5 23 51 67 16 53 68 25 54 68 24 55 68 10 52 68 0 3 69 0 2 69 25 1 69 24 0 69 10
195 |
196 |
197 |
198 |
199 |
200 |
201 | 0 -50 0 0 50 0 10 -50 -0 10 -50 -0 10 50 -0 10 50 -0 8.66025 -50 -5 8.66025 -50 -5 8.66025 50 -5 8.66025 50 -5 5 -50 -8.66025 5 -50 -8.66025 5 50 -8.66025 5 50 -8.66025 6.12323e-16 -50 -10 6.12323e-16 -50 -10 6.12323e-16 50 -10 6.12323e-16 50 -10 -5 -50 -8.66025 -5 -50 -8.66025 -5 50 -8.66025 -5 50 -8.66025 -8.66025 -50 -5 -8.66025 -50 -5 -8.66025 50 -5 -8.66025 50 -5 -10 -50 -1.22465e-15 -10 -50 -1.22465e-15 -10 50 -1.22465e-15 -10 50 -1.22465e-15 -8.66025 -50 5 -8.66025 -50 5 -8.66025 50 5 -8.66025 50 5 -5 -50 8.66025 -5 -50 8.66025 -5 50 8.66025 -5 50 8.66025 -1.83697e-15 -50 10 -1.83697e-15 -50 10 -1.83697e-15 50 10 -1.83697e-15 50 10 5 -50 8.66025 5 -50 8.66025 5 50 8.66025 5 50 8.66025 8.66025 -50 5 8.66025 -50 5 8.66025 50 5 8.66025 50 5
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 | 0 -1 -0 1 0 -0 0.866026 0 -0.5 0 1 -0 0.5 0 -0.866026 0 0 -1 -0.5 0 -0.866026 -0.866026 0 -0.5 -1 0 -0 -0.866026 0 0.5 -0.5 0 0.866026 0 0 1 0.5 0 0.866026 0.866026 0 0.5
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 | 0.5 0.5 0 0.5 0.0669873 0.75 0 0 0 1 0.0833333 1 0.0833333 0 1 0.5 0.933013 0.75 0.25 0.933013 0.166667 1 0.166667 0 0.75 0.933013 0.5 1 0.25 1 0.25 0 0.333333 1 0.333333 0 0.416667 1 0.416667 0 0.5 0 0.933013 0.25 0.583333 1 0.583333 0 0.0669873 0.25 0.75 0.0669873 0.666667 1 0.666667 0 0.25 0.0669873 0.75 1 0.75 0 0.833333 1 0.833333 0 0.916667 1 0.916667 0 1 1 1 0
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 | 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3
237 | 6 0 2 2 0 1 0 0 0 7 2 6 8 2 5 4 1 4 3 1 3 9 3 8 1 3 0 5 3 7 10 0 9 6 0 2 0 0 0 11 4 11 12 4 10 8 2 5 7 2 6 13 3 12 1 3 0 9 3 8 14 0 13 10 0 9 0 0 0 15 5 15 16 5 14 12 4 10 11 4 11 17 3 13 1 3 0 13 3 12 18 0 12 14 0 13 0 0 0 19 6 17 20 6 16 16 5 14 15 5 15 21 3 9 1 3 0 17 3 13 22 0 8 18 0 12 0 0 0 23 7 19 24 7 18 20 6 16 19 6 17 25 3 2 1 3 0 21 3 9 26 0 7 22 0 8 0 0 0 27 8 20 28 8 13 24 7 18 23 7 19 29 3 1 1 3 0 25 3 2 30 0 21 26 0 7 0 0 0 31 9 23 32 9 22 28 8 13 27 8 20 33 3 24 1 3 0 29 3 1 34 0 25 30 0 21 0 0 0 35 10 27 36 10 26 32 9 22 31 9 23 37 3 28 1 3 0 33 3 24 38 0 20 34 0 25 0 0 0 39 11 30 40 11 29 36 10 26 35 10 27 41 3 20 1 3 0 37 3 28 42 0 28 38 0 20 0 0 0 43 12 32 44 12 31 40 11 29 39 11 30 45 3 25 1 3 0 41 3 20 46 0 24 42 0 28 0 0 0 47 13 34 48 13 33 44 12 31 43 12 32 49 3 21 1 3 0 45 3 25 2 0 1 46 0 24 0 0 0 3 1 36 4 1 35 48 13 33 47 13 34 5 3 7 1 3 0 49 3 21
238 |
239 |
240 |
241 |
242 |
243 |
244 | -50 0 50 50 0 50 -50 0 -50 50 0 -50
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 | 0 1 -0
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 | 0 0 0 1 1 1 1 0
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 | 4
280 | 1 0 3 3 0 2 2 0 1 0 0 0
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 | 0 0 -0
289 | 0 1 0 -0
290 | 1 0 0 0
291 | 0 0 1 -0
292 | 1 1 1
293 |
294 | 0 180 -0
295 | 0 1 0 -0
296 | 1 0 0 0
297 | 0 0 1 -0
298 | 1 1 1
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 | 0 50 -0
311 | 0 1 0 -0
312 | 1 0 0 0
313 | 0 0 1 -0
314 | 1 1 1
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 | 0 0 -0
327 | 0 1 0 -0
328 | 1 0 0 0
329 | 0 0 1 -0
330 | 1 1 1
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
--------------------------------------------------------------------------------
/examples/scene/assets/tree2.dae:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CINEMA4D 15.064 COLLADA Exporter
6 |
7 | 2015-08-28T05:43:48Z
8 | 2015-08-28T05:43:48Z
9 |
10 | Y_UP
11 |
12 |
13 |
14 | tex/shadow-circle.png
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | 0.8 0.8 0.8 1
24 |
25 |
26 | 0.2 0.2 0.2 1
27 |
28 |
29 | 0.5
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 | 0.0627451 0.396078 0.513725 1
41 |
42 |
43 | 0.2 0.2 0.2 1
44 |
45 |
46 | 0.5
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | 0.0235294 0.564706 0.607843 1
58 |
59 |
60 | 0.2 0.2 0.2 1
61 |
62 |
63 | 0.5
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | 0.164706 0.72549 0.701961 1
75 |
76 |
77 | 0.2 0.2 0.2 1
78 |
79 |
80 | 0.5
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 | 0.654902 0.47451 0.415686 1
92 |
93 |
94 | 0.2 0.2 0.2 1
95 |
96 |
97 | 0.5
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | ID13
108 |
109 |
110 |
111 |
112 | ID14
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 | 1 1 1 1
122 |
123 |
124 | 0.88
125 |
126 |
127 | 1
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 | -32.0367 -60 32.0367 32.0367 -60 32.0367 32.0367 -60 -32.0367 -32.0367 -60 -32.0367 -32.0367 -57.6676 37.6676 32.0367 -57.6676 37.6676 36.0183 -57.6676 36.0183 37.6676 -57.6676 32.0367 37.6676 -57.6676 -32.0367 36.0183 -57.6676 -36.0183 32.0367 -57.6676 -37.6676 -32.0367 -57.6676 -37.6676 -36.0183 -57.6676 -36.0183 -37.6676 -57.6676 -32.0367 -37.6676 -57.6676 32.0367 -36.0183 -57.6676 36.0183 -32.0367 -52.0367 40 32.0367 -52.0367 40 37.6676 -52.0367 37.6676 40 -52.0367 32.0367 40 -52.0367 -32.0367 37.6676 -52.0367 -37.6676 32.0367 -52.0367 -40 -32.0367 -52.0367 -40 -37.6676 -52.0367 -37.6676 -40 -52.0367 -32.0367 -40 -52.0367 32.0367 -37.6676 -52.0367 37.6676 -32.0367 52.0367 40 32.0367 52.0367 40 37.6676 52.0367 37.6676 40 52.0367 32.0367 40 52.0367 -32.0367 37.6676 52.0367 -37.6676 32.0367 52.0367 -40 -32.0367 52.0367 -40 -37.6676 52.0367 -37.6676 -40 52.0367 -32.0367 -40 52.0367 32.0367 -37.6676 52.0367 37.6676 -32.0367 57.6676 37.6676 32.0367 57.6676 37.6676 36.0183 57.6676 36.0183 37.6676 57.6676 32.0367 37.6676 57.6676 -32.0367 36.0183 57.6676 -36.0183 32.0367 57.6676 -37.6676 -32.0367 57.6676 -37.6676 -36.0183 57.6676 -36.0183 -37.6676 57.6676 -32.0367 -37.6676 57.6676 32.0367 -36.0183 57.6676 36.0183 -32.0367 60 32.0367 32.0367 60 32.0367 32.0367 60 -32.0367 -32.0367 60 -32.0367
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 | -0.0785213 -0.921027 0.381502 0.0785213 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785213 0.921027 0.381502 0.0785213 0.921027 0.381502 0.156558 -0.912487 0.377964 0.357407 -0.357407 0.862856 0.382683 0 0.92388 0.357406 0.357407 0.862856 0.156558 0.912487 0.377964 0.381502 -0.921027 0.0785213 0.377964 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.92388 0 0.382683 0.862856 0.357407 0.357407 0.377964 0.912487 0.156558 0.381502 0.921027 0.0785213 0.381502 -0.921027 -0.0785213 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785213 0.377964 -0.912487 -0.156558 0.862856 -0.357407 -0.357407 0.92388 0 -0.382683 0.862856 0.357407 -0.357407 0.377964 0.912487 -0.156558 0.0785213 -0.921027 -0.381502 0.156558 -0.912487 -0.377964 0.357406 -0.357407 -0.862856 0.382683 0 -0.92388 0.357407 0.357407 -0.862856 0.156558 0.912487 -0.377964 0.0785213 0.921027 -0.381502 -0.0785213 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785213 0.921027 -0.381502 -0.156558 -0.912487 -0.377964 -0.357407 -0.357407 -0.862856 -0.382683 0 -0.92388 -0.357406 0.357407 -0.862856 -0.156558 0.912487 -0.377964 -0.381502 -0.921027 -0.0785213 -0.377964 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.92388 0 -0.382683 -0.862856 0.357407 -0.357407 -0.377964 0.912487 -0.156558 -0.381502 0.921027 -0.0785213 -0.381502 -0.921027 0.0785213 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785213 -0.377964 -0.912487 0.156558 -0.862856 -0.357407 0.357407 -0.92388 0 0.382683 -0.862856 0.357407 0.357407 -0.377964 0.912487 0.156558 -0.156558 -0.912487 0.377964 -0.357406 -0.357407 0.862856 -0.382683 0 0.92388 -0.357407 0.357407 0.862856 -0.156558 0.912487 0.377964 0 1 -0 0 -1 -0
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 | 0 0 0 0.0484494 0.836663 0.0484494 0.836663 0 0 0.0968987 0.836663 0.0968987 0 0.903101 0.836663 0.903101 0 0.951551 0.836663 0.951551 0 1 0.836663 1 0.877497 0 0.918331 0.0484494 0.918331 0.0968987 0.918331 0.903101 0.918331 0.951551 0.877497 1 0.959166 0 1 0.0484494 1 0.0968987 1 0.903101 1 0.951551 0.959166 1 1 1 1 0
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 | 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4
194 | 1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 3 8 19 2 7 12 1 1 12 0 8 20 2 20 20 5 19 20 4 7 20 1 20 21 5 32 21 7 31 21 6 19 21 4 32 22 7 44 22 9 43 22 8 31 22 6 44 23 9 54 23 11 53 18 10 43 18 8 9 24 13 8 19 2 2 19 12 9 25 13 21 25 14 20 25 5 8 25 2 21 26 14 33 26 15 32 26 7 20 26 5 33 27 15 45 27 16 44 27 9 32 27 7 45 28 16 54 23 17 44 23 9 10 29 19 9 30 13 2 29 18 10 31 19 22 31 20 21 31 14 9 31 13 22 32 20 34 32 21 33 32 15 21 32 14 34 33 21 46 33 22 45 33 16 33 33 15 46 35 22 54 35 23 45 34 16 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 3 14 53 2 13 46 1 3 46 0 14 54 2 26 54 5 25 54 4 13 54 1 26 55 5 38 55 7 37 55 6 25 55 4 38 56 7 50 56 9 49 56 8 37 56 6 50 57 9 52 57 11 55 52 10 49 52 8 15 58 13 14 53 2 0 53 12 15 59 13 27 59 14 26 59 5 14 59 2 27 60 14 39 60 15 38 60 7 26 60 5 39 61 15 51 61 16 50 61 9 38 61 7 51 62 16 52 57 17 50 57 9 4 0 19 15 63 13 0 0 18 4 64 19 16 64 20 27 64 14 15 64 13 16 65 20 28 65 21 39 65 15 27 65 14 28 66 21 40 66 22 51 66 16 39 66 15 40 5 22 52 5 23 51 67 16 53 68 25 54 68 24 55 68 10 52 68 0 3 69 0 2 69 25 1 69 24 0 69 10
195 |
196 |
197 |
198 |
199 |
200 |
201 | -18.4211 -34.5 62.1092 18.4211 -34.5 62.1092 18.4211 -34.5 -62.1092 -18.4211 -34.5 -62.1092 -18.4211 -33.1589 65.3469 18.4211 -33.1589 65.3469 20.7105 -33.1589 64.3986 21.6589 -33.1589 62.1092 21.6589 -33.1589 -62.1092 20.7105 -33.1589 -64.3986 18.4211 -33.1589 -65.3469 -18.4211 -33.1589 -65.3469 -20.7105 -33.1589 -64.3986 -21.6589 -33.1589 -62.1092 -21.6589 -33.1589 62.1092 -20.7105 -33.1589 64.3986 -18.4211 -29.9211 66.6881 18.4211 -29.9211 66.6881 21.6589 -29.9211 65.3469 23 -29.9211 62.1092 23 -29.9211 -62.1092 21.6589 -29.9211 -65.3469 18.4211 -29.9211 -66.6881 -18.4211 -29.9211 -66.6881 -21.6589 -29.9211 -65.3469 -23 -29.9211 -62.1092 -23 -29.9211 62.1092 -21.6589 -29.9211 65.3469 -18.4211 29.9211 66.6881 18.4211 29.9211 66.6881 21.6589 29.9211 65.3469 23 29.9211 62.1092 23 29.9211 -62.1092 21.6589 29.9211 -65.3469 18.4211 29.9211 -66.6881 -18.4211 29.9211 -66.6881 -21.6589 29.9211 -65.3469 -23 29.9211 -62.1092 -23 29.9211 62.1092 -21.6589 29.9211 65.3469 -18.4211 33.1589 65.3469 18.4211 33.1589 65.3469 20.7105 33.1589 64.3986 21.6589 33.1589 62.1092 21.6589 33.1589 -62.1092 20.7105 33.1589 -64.3986 18.4211 33.1589 -65.3469 -18.4211 33.1589 -65.3469 -20.7105 33.1589 -64.3986 -21.6589 33.1589 -62.1092 -21.6589 33.1589 62.1092 -20.7105 33.1589 64.3986 -18.4211 34.5 62.1092 18.4211 34.5 62.1092 18.4211 34.5 -62.1092 -18.4211 34.5 -62.1092
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 | -0.0785212 -0.921027 0.381502 0.0785212 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785212 0.921027 0.381502 0.0785212 0.921027 0.381502 0.156558 -0.912487 0.377965 0.357406 -0.357406 0.862857 0.382683 0 0.92388 0.357406 0.357406 0.862857 0.156558 0.912487 0.377965 0.381502 -0.921027 0.0785213 0.377965 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.923879 0 0.382684 0.862856 0.357406 0.357407 0.377965 0.912487 0.156558 0.381502 0.921027 0.0785213 0.381502 -0.921027 -0.0785213 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785213 0.377965 -0.912487 -0.156558 0.862856 -0.357406 -0.357407 0.923879 0 -0.382684 0.862856 0.357407 -0.357407 0.377965 0.912487 -0.156558 0.0785212 -0.921027 -0.381502 0.156558 -0.912487 -0.377965 0.357406 -0.357406 -0.862857 0.382683 0 -0.92388 0.357406 0.357406 -0.862857 0.156558 0.912487 -0.377965 0.0785212 0.921027 -0.381502 -0.0785212 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785212 0.921027 -0.381502 -0.156558 -0.912487 -0.377965 -0.357406 -0.357406 -0.862857 -0.382683 0 -0.92388 -0.357406 0.357406 -0.862857 -0.156558 0.912487 -0.377965 -0.381502 -0.921027 -0.0785213 -0.377965 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.923879 0 -0.382684 -0.862856 0.357406 -0.357407 -0.377965 0.912487 -0.156558 -0.381502 0.921027 -0.0785213 -0.381502 -0.921027 0.0785213 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785213 -0.377965 -0.912487 0.156558 -0.862856 -0.357406 0.357407 -0.923879 0 0.382684 -0.862856 0.357407 0.357407 -0.377965 0.912487 0.156558 -0.156558 -0.912487 0.377965 -0.357406 -0.357406 0.862857 -0.382683 0 0.92388 -0.357406 0.357406 0.862857 -0.156558 0.912487 0.377965 0 1 -0 0 -1 -0
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 | 0 0 0 0.0484494 0.836663 0.0484494 0.836663 0 0 0.0968987 0.836663 0.0968987 0 0.903101 0.836663 0.903101 0 0.951551 0.836663 0.951551 0 1 0.836663 1 0.877497 0 0.918331 0.0484494 0.918331 0.0968987 0.918331 0.903101 0.918331 0.951551 0.877497 1 0.959166 0 1 0.0484494 1 0.0968987 1 0.903101 1 0.951551 0.959166 1 0.945267 0.0484494 0.945267 0 0.945267 0.0968987 0.945267 0.903101 0.945267 0.951551 0.945267 1 0.95895 0 0.972633 0.0484494 0.972633 0.0968987 0.972633 0.903101 0.972633 0.951551 0.95895 1 0.986317 0 0.986317 1 1 1 1 0
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 | 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4
237 | 1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 25 8 19 24 7 12 1 1 12 0 8 20 24 20 20 26 19 20 4 7 20 1 20 21 26 32 21 27 31 21 6 19 21 4 32 22 27 44 22 28 43 22 8 31 22 6 44 23 28 54 23 29 53 18 10 43 18 8 9 24 31 8 19 24 2 19 30 9 25 31 21 25 32 20 25 26 8 25 24 21 26 32 33 26 33 32 26 27 20 26 26 33 27 33 45 27 34 44 27 28 32 27 27 45 28 34 54 23 35 44 23 28 10 29 19 9 30 31 2 29 36 10 31 19 22 31 20 21 31 32 9 31 31 22 32 20 34 32 21 33 32 33 21 32 32 34 33 21 46 33 22 45 33 34 33 33 33 46 35 22 54 35 37 45 34 34 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 25 14 53 24 13 46 1 3 46 0 14 54 24 26 54 26 25 54 4 13 54 1 26 55 26 38 55 27 37 55 6 25 55 4 38 56 27 50 56 28 49 56 8 37 56 6 50 57 28 52 57 29 55 52 10 49 52 8 15 58 31 14 53 24 0 53 30 15 59 31 27 59 32 26 59 26 14 59 24 27 60 32 39 60 33 38 60 27 26 60 26 39 61 33 51 61 34 50 61 28 38 61 27 51 62 34 52 57 35 50 57 28 4 0 19 15 63 31 0 0 36 4 64 19 16 64 20 27 64 32 15 64 31 16 65 20 28 65 21 39 65 33 27 65 32 28 66 21 40 66 22 51 66 34 39 66 33 40 5 22 52 5 37 51 67 34 53 68 39 54 68 38 55 68 10 52 68 0 3 69 0 2 69 39 1 69 38 0 69 10
238 |
239 |
240 |
241 |
242 |
243 |
244 | -40 -80.5 40 40 -80.5 40 40 -80.5 -40 -40 -80.5 -40 -40 -77.5711 47.0711 40 -77.5711 47.0711 45 -77.5711 45 47.0711 -77.5711 40 47.0711 -77.5711 -40 45 -77.5711 -45 40 -77.5711 -47.0711 -40 -77.5711 -47.0711 -45 -77.5711 -45 -47.0711 -77.5711 -40 -47.0711 -77.5711 40 -45 -77.5711 45 -40 -70.5 50 40 -70.5 50 47.0711 -70.5 47.0711 50 -70.5 40 50 -70.5 -40 47.0711 -70.5 -47.0711 40 -70.5 -50 -40 -70.5 -50 -47.0711 -70.5 -47.0711 -50 -70.5 -40 -50 -70.5 40 -47.0711 -70.5 47.0711 -40 70.5 50 40 70.5 50 47.0711 70.5 47.0711 50 70.5 40 50 70.5 -40 47.0711 70.5 -47.0711 40 70.5 -50 -40 70.5 -50 -47.0711 70.5 -47.0711 -50 70.5 -40 -50 70.5 40 -47.0711 70.5 47.0711 -40 77.5711 47.0711 40 77.5711 47.0711 45 77.5711 45 47.0711 77.5711 40 47.0711 77.5711 -40 45 77.5711 -45 40 77.5711 -47.0711 -40 77.5711 -47.0711 -45 77.5711 -45 -47.0711 77.5711 -40 -47.0711 77.5711 40 -45 77.5711 45 -40 80.5 40 40 80.5 40 40 80.5 -40 -40 80.5 -40
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 | -0.0785214 -0.921027 0.381502 0.0785214 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785214 0.921027 0.381502 0.0785214 0.921027 0.381502 0.156558 -0.912487 0.377964 0.357407 -0.357407 0.862856 0.382683 0 0.92388 0.357407 0.357407 0.862856 0.156558 0.912487 0.377964 0.381502 -0.921027 0.0785214 0.377964 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.92388 0 0.382683 0.862856 0.357407 0.357407 0.377964 0.912487 0.156558 0.381502 0.921027 0.0785214 0.381502 -0.921027 -0.0785214 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785214 0.377964 -0.912487 -0.156558 0.862856 -0.357407 -0.357407 0.92388 0 -0.382683 0.862856 0.357407 -0.357407 0.377964 0.912487 -0.156558 0.0785214 -0.921027 -0.381502 0.156558 -0.912487 -0.377964 0.357407 -0.357407 -0.862856 0.382683 0 -0.92388 0.357407 0.357407 -0.862856 0.156558 0.912487 -0.377964 0.0785214 0.921027 -0.381502 -0.0785214 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785214 0.921027 -0.381502 -0.156558 -0.912487 -0.377964 -0.357407 -0.357407 -0.862856 -0.382683 0 -0.92388 -0.357407 0.357407 -0.862856 -0.156558 0.912487 -0.377964 -0.381502 -0.921027 -0.0785214 -0.377964 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.92388 0 -0.382683 -0.862856 0.357407 -0.357407 -0.377964 0.912487 -0.156558 -0.381502 0.921027 -0.0785214 -0.381502 -0.921027 0.0785214 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785214 -0.377964 -0.912487 0.156558 -0.862856 -0.357407 0.357407 -0.92388 0 0.382683 -0.862856 0.357407 0.357407 -0.377964 0.912487 0.156558 -0.156558 -0.912487 0.377964 -0.357407 -0.357407 0.862856 -0.382683 0 0.92388 -0.357407 0.357407 0.862856 -0.156558 0.912487 0.377964 0 1 -0 0 -1 -0
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 | 0 0 0 0.0455526 0.835876 0.0455526 0.835876 0 0 0.0911051 0.835876 0.0911051 0 0.908895 0.835876 0.908895 0 0.954447 0.835876 0.954447 0 1 0.835876 1 0.876907 0 0.917938 0.0455526 0.917938 0.0911051 0.917938 0.908895 0.917938 0.954447 0.876907 1 0.958969 0 1 0.0455526 1 0.0911051 1 0.908895 1 0.954447 0.958969 1 1 1 1 0
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 | 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4
280 | 1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 3 8 19 2 7 12 1 1 12 0 8 20 2 20 20 5 19 20 4 7 20 1 20 21 5 32 21 7 31 21 6 19 21 4 32 22 7 44 22 9 43 22 8 31 22 6 44 23 9 54 23 11 53 18 10 43 18 8 9 24 13 8 19 2 2 19 12 9 25 13 21 25 14 20 25 5 8 25 2 21 26 14 33 26 15 32 26 7 20 26 5 33 27 15 45 27 16 44 27 9 32 27 7 45 28 16 54 23 17 44 23 9 10 29 19 9 30 13 2 29 18 10 31 19 22 31 20 21 31 14 9 31 13 22 32 20 34 32 21 33 32 15 21 32 14 34 33 21 46 33 22 45 33 16 33 33 15 46 35 22 54 35 23 45 34 16 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 3 14 53 2 13 46 1 3 46 0 14 54 2 26 54 5 25 54 4 13 54 1 26 55 5 38 55 7 37 55 6 25 55 4 38 56 7 50 56 9 49 56 8 37 56 6 50 57 9 52 57 11 55 52 10 49 52 8 15 58 13 14 53 2 0 53 12 15 59 13 27 59 14 26 59 5 14 59 2 27 60 14 39 60 15 38 60 7 26 60 5 39 61 15 51 61 16 50 61 9 38 61 7 51 62 16 52 57 17 50 57 9 4 0 19 15 63 13 0 0 18 4 64 19 16 64 20 27 64 14 15 64 13 16 65 20 28 65 21 39 65 15 27 65 14 28 66 21 40 66 22 51 66 16 39 66 15 40 5 22 52 5 23 51 67 16 53 68 25 54 68 24 55 68 10 52 68 0 3 69 0 2 69 25 1 69 24 0 69 10
281 |
282 |
283 |
284 |
285 |
286 |
287 | 0 -50 0 0 50 0 10 -50 -0 10 -50 -0 10 50 -0 10 50 -0 7.07107 -50 -7.07107 7.07107 -50 -7.07107 7.07107 50 -7.07107 7.07107 50 -7.07107 6.12323e-16 -50 -10 6.12323e-16 -50 -10 6.12323e-16 50 -10 6.12323e-16 50 -10 -7.07107 -50 -7.07107 -7.07107 -50 -7.07107 -7.07107 50 -7.07107 -7.07107 50 -7.07107 -10 -50 -1.22465e-15 -10 -50 -1.22465e-15 -10 50 -1.22465e-15 -10 50 -1.22465e-15 -7.07107 -50 7.07107 -7.07107 -50 7.07107 -7.07107 50 7.07107 -7.07107 50 7.07107 -1.83697e-15 -50 10 -1.83697e-15 -50 10 -1.83697e-15 50 10 -1.83697e-15 50 10 7.07107 -50 7.07107 7.07107 -50 7.07107 7.07107 50 7.07107 7.07107 50 7.07107
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 | 0 -1 -0 1 0 -0 0.707107 0 -0.707107 0 1 -0 0 0 -1 -0.707107 0 -0.707107 -1 0 -0 -0.707107 0 0.707107 0 0 1 0.707107 0 0.707107
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 | 0.5 0.5 0 0.5 0.146447 0.853553 0 0 0 1 0.125 1 0.125 0 1 0.5 0.853553 0.853553 0.5 1 0.25 1 0.25 0 0.375 1 0.375 0 0.5 0 0.853553 0.146447 0.625 1 0.625 0 0.146447 0.146447 0.75 1 0.75 0 0.875 1 0.875 0 1 1 1 0
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 | 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3
323 | 6 0 2 2 0 1 0 0 0 7 2 6 8 2 5 4 1 4 3 1 3 9 3 8 1 3 0 5 3 7 10 0 9 6 0 2 0 0 0 11 4 11 12 4 10 8 2 5 7 2 6 13 3 9 1 3 0 9 3 8 14 0 8 10 0 9 0 0 0 15 5 13 16 5 12 12 4 10 11 4 11 17 3 2 1 3 0 13 3 9 18 0 7 14 0 8 0 0 0 19 6 14 20 6 9 16 5 12 15 5 13 21 3 1 1 3 0 17 3 2 22 0 15 18 0 7 0 0 0 23 7 17 24 7 16 20 6 9 19 6 14 25 3 18 1 3 0 21 3 1 26 0 14 22 0 15 0 0 0 27 8 20 28 8 19 24 7 16 23 7 17 29 3 14 1 3 0 25 3 18 30 0 18 26 0 14 0 0 0 31 9 22 32 9 21 28 8 19 27 8 20 33 3 15 1 3 0 29 3 14 2 0 1 30 0 18 0 0 0 3 1 24 4 1 23 32 9 21 31 9 22 5 3 7 1 3 0 33 3 15
324 |
325 |
326 |
327 |
328 |
329 |
330 | -50 0 50 50 0 50 -50 0 -50 50 0 -50
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 | 0 1 -0
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 | 0 0 0 1 1 1 1 0
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 | 4
366 | 1 0 3 3 0 2 2 0 1 0 0 0
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 | -23.7123 210.709 24.9106
375 | 0 1 0 -0
376 | 1 0 0 0
377 | 0 0 1 -0
378 | 1 1 1
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 | 3.20043 174.503 2.82738
391 | 0 1 0 -0
392 | 1 0 0 0
393 | 0 0 1 -0
394 | 1 1 1
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 | 0 180 -0
407 | 0 1 0 -0
408 | 1 0 0 0
409 | 0 0 1 -0
410 | 1 1 1
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 | 0 50 -0
423 | 0 1 0 -0
424 | 1 0 0 0
425 | 0 0 1 -0
426 | 1 1 1
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 | 0 0 -0
439 | 0 1 0 -0
440 | 1 0 0 0
441 | 0 0 1 -0
442 | 1 1 1
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
--------------------------------------------------------------------------------
/dist/aframe-proxy-controls.min.js:
--------------------------------------------------------------------------------
1 | !function e(t,n,r){function i(s,a){if(!n[s]){if(!t[s]){var c="function"==typeof require&&require;if(!a&&c)return c(s,!0);if(o)return o(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var f=n[s]={exports:{}};t[s][0].call(f.exports,function(e){var n=t[s][1][e];return i(n?n:e)},f,f.exports,e,t,n,r)}return n[s].exports}for(var o="function"==typeof require&&require,s=0;s1?arguments[1]:"utf8"):c(this,e)):arguments.length>1?new o(e,arguments[1]):new o(e)}function s(e,t){if(e=g(e,0>t?0:0|y(t)),!o.TYPED_ARRAY_SUPPORT)for(var n=0;t>n;n++)e[n]=0;return e}function a(e,t,n){("string"!=typeof n||""===n)&&(n="utf8");var r=0|b(t,n);return e=g(e,r),e.write(t,n),e}function c(e,t){if(o.isBuffer(t))return u(e,t);if(V(t))return f(e,t);if(null==t)throw new TypeError("must start with number, buffer, array or string");if("undefined"!=typeof ArrayBuffer){if(t.buffer instanceof ArrayBuffer)return l(e,t);if(t instanceof ArrayBuffer)return h(e,t)}return t.length?d(e,t):p(e,t)}function u(e,t){var n=0|y(t.length);return e=g(e,n),t.copy(e,0,0,n),e}function f(e,t){var n=0|y(t.length);e=g(e,n);for(var r=0;n>r;r+=1)e[r]=255&t[r];return e}function l(e,t){var n=0|y(t.length);e=g(e,n);for(var r=0;n>r;r+=1)e[r]=255&t[r];return e}function h(e,t){return o.TYPED_ARRAY_SUPPORT?(t.byteLength,e=o._augment(new Uint8Array(t))):e=l(e,new Uint8Array(t)),e}function d(e,t){var n=0|y(t.length);e=g(e,n);for(var r=0;n>r;r+=1)e[r]=255&t[r];return e}function p(e,t){var n,r=0;"Buffer"===t.type&&V(t.data)&&(n=t.data,r=0|y(n.length)),e=g(e,r);for(var i=0;r>i;i+=1)e[i]=255&n[i];return e}function g(e,t){o.TYPED_ARRAY_SUPPORT?(e=o._augment(new Uint8Array(t)),e.__proto__=o.prototype):(e.length=t,e._isBuffer=!0);var n=0!==t&&t<=o.poolSize>>>1;return n&&(e.parent=K),e}function y(e){if(e>=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function m(e,t){if(!(this instanceof m))return new m(e,t);var n=new o(e,t);return delete n.parent,n}function b(e,t){"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"binary":case"raw":case"raws":return n;case"utf8":case"utf-8":return W(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return J(e).length;default:if(r)return W(e).length;t=(""+t).toLowerCase(),r=!0}}function v(e,t,n){var r=!1;if(t=0|t,n=void 0===n||n===1/0?this.length:0|n,e||(e="utf8"),0>t&&(t=0),n>this.length&&(n=this.length),t>=n)return"";for(;;)switch(e){case"hex":return B(this,t,n);case"utf8":case"utf-8":return S(this,t,n);case"ascii":return T(this,t,n);case"binary":return L(this,t,n);case"base64":return x(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function w(e,t,n,r){n=Number(n)||0;var i=e.length-n;r?(r=Number(r),r>i&&(r=i)):r=i;var o=t.length;if(o%2!==0)throw new Error("Invalid hex string");r>o/2&&(r=o/2);for(var s=0;r>s;s++){var a=parseInt(t.substr(2*s,2),16);if(isNaN(a))throw new Error("Invalid hex string");e[n+s]=a}return s}function _(e,t,n,r){return G(W(t,e.length-n),e,n,r)}function E(e,t,n,r){return G(z(t),e,n,r)}function R(e,t,n,r){return E(e,t,n,r)}function A(e,t,n,r){return G(J(t),e,n,r)}function C(e,t,n,r){return G(H(t,e.length-n),e,n,r)}function x(e,t,n){return 0===t&&n===e.length?X.fromByteArray(e):X.fromByteArray(e.slice(t,n))}function S(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;n>i;){var o=e[i],s=null,a=o>239?4:o>223?3:o>191?2:1;if(n>=i+a){var c,u,f,l;switch(a){case 1:128>o&&(s=o);break;case 2:c=e[i+1],128===(192&c)&&(l=(31&o)<<6|63&c,l>127&&(s=l));break;case 3:c=e[i+1],u=e[i+2],128===(192&c)&&128===(192&u)&&(l=(15&o)<<12|(63&c)<<6|63&u,l>2047&&(55296>l||l>57343)&&(s=l));break;case 4:c=e[i+1],u=e[i+2],f=e[i+3],128===(192&c)&&128===(192&u)&&128===(192&f)&&(l=(15&o)<<18|(63&c)<<12|(63&u)<<6|63&f,l>65535&&1114112>l&&(s=l))}}null===s?(s=65533,a=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=a}return k(r)}function k(e){var t=e.length;if(Z>=t)return String.fromCharCode.apply(String,e);for(var n="",r=0;t>r;)n+=String.fromCharCode.apply(String,e.slice(r,r+=Z));return n}function T(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;n>i;i++)r+=String.fromCharCode(127&e[i]);return r}function L(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;n>i;i++)r+=String.fromCharCode(e[i]);return r}function B(e,t,n){var r=e.length;(!t||0>t)&&(t=0),(!n||0>n||n>r)&&(n=r);for(var i="",o=t;n>o;o++)i+=q(e[o]);return i}function I(e,t,n){for(var r=e.slice(t,n),i="",o=0;oe)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function j(e,t,n,r,i,s){if(!o.isBuffer(e))throw new TypeError("buffer must be a Buffer instance");if(t>i||s>t)throw new RangeError("value is out of bounds");if(n+r>e.length)throw new RangeError("index out of range")}function M(e,t,n,r){0>t&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-n,2);o>i;i++)e[n+i]=(t&255<<8*(r?i:1-i))>>>8*(r?i:1-i)}function P(e,t,n,r){0>t&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-n,4);o>i;i++)e[n+i]=t>>>8*(r?i:3-i)&255}function O(e,t,n,r,i,o){if(t>i||o>t)throw new RangeError("value is out of bounds");if(n+r>e.length)throw new RangeError("index out of range");if(0>n)throw new RangeError("index out of range")}function D(e,t,n,r,i){return i||O(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),$.write(e,t,n,r,23,4),n+4}function F(e,t,n,r,i){return i||O(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),$.write(e,t,n,r,52,8),n+8}function N(e){if(e=Y(e).replace(ee,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function Y(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function q(e){return 16>e?"0"+e.toString(16):e.toString(16)}function W(e,t){t=t||1/0;for(var n,r=e.length,i=null,o=[],s=0;r>s;s++){if(n=e.charCodeAt(s),n>55295&&57344>n){if(!i){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&o.push(239,191,189);continue}i=n;continue}if(56320>n){(t-=3)>-1&&o.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,128>n){if((t-=1)<0)break;o.push(n)}else if(2048>n){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(65536>n){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(1114112>n))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function z(e){for(var t=[],n=0;n>8,i=n%256,o.push(i),o.push(r);return o}function J(e){return X.toByteArray(N(e))}function G(e,t,n,r){for(var i=0;r>i&&!(i+n>=t.length||i>=e.length);i++)t[i+n]=e[i];return i}var X=e("base64-js"),$=e("ieee754"),V=e("isarray");n.Buffer=o,n.SlowBuffer=m,n.INSPECT_MAX_BYTES=50,o.poolSize=8192;var K={};o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:r(),o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array),o.isBuffer=function(e){return!(null==e||!e._isBuffer)},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,s=Math.min(n,r);s>i&&e[i]===t[i];)++i;return i!==s&&(n=e[i],r=t[i]),r>n?-1:n>r?1:0},o.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"raw":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},o.concat=function(e,t){if(!V(e))throw new TypeError("list argument must be an Array of Buffers.");if(0===e.length)return new o(0);var n;if(void 0===t)for(t=0,n=0;n0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?0:o.compare(this,e)},o.prototype.indexOf=function(e,t){function n(e,t,n){for(var r=-1,i=0;n+i2147483647?t=2147483647:-2147483648>t&&(t=-2147483648),t>>=0,0===this.length)return-1;if(t>=this.length)return-1;if(0>t&&(t=Math.max(this.length+t,0)),"string"==typeof e)return 0===e.length?-1:String.prototype.indexOf.call(this,e,t);if(o.isBuffer(e))return n(this,e,t);if("number"==typeof e)return o.TYPED_ARRAY_SUPPORT&&"function"===Uint8Array.prototype.indexOf?Uint8Array.prototype.indexOf.call(this,e,t):n(this,[e],t);throw new TypeError("val must be string, number or Buffer")},o.prototype.get=function(e){return console.log(".get() is deprecated. Access using array indexes instead."),this.readUInt8(e)},o.prototype.set=function(e,t){return console.log(".set() is deprecated. Access using array indexes instead."),this.writeUInt8(e,t)},o.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else if(isFinite(t))t=0|t,isFinite(n)?(n=0|n,void 0===r&&(r="utf8")):(r=n,n=void 0);else{var i=r;r=t,t=0|n,n=i}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(0>n||0>t)||t>this.length)throw new RangeError("attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return w(this,e,t,n);case"utf8":case"utf-8":return _(this,e,t,n);case"ascii":return E(this,e,t,n);case"binary":return R(this,e,t,n);case"base64":return A(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Z=4096;o.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,0>e?(e+=n,0>e&&(e=0)):e>n&&(e=n),0>t?(t+=n,0>t&&(t=0)):t>n&&(t=n),e>t&&(t=e);var r;if(o.TYPED_ARRAY_SUPPORT)r=o._augment(this.subarray(e,t));else{var i=t-e;r=new o(i,void 0);for(var s=0;i>s;s++)r[s]=this[s+e]}return r.length&&(r.parent=this.parent||this),r},o.prototype.readUIntLE=function(e,t,n){e=0|e,t=0|t,n||U(e,t,this.length);for(var r=this[e],i=1,o=0;++o0&&(i*=256);)r+=this[e+--t]*i;return r},o.prototype.readUInt8=function(e,t){return t||U(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return t||U(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return t||U(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return t||U(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return t||U(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,n){e=0|e,t=0|t,n||U(e,t,this.length);for(var r=this[e],i=1,o=0;++o=i&&(r-=Math.pow(2,8*t)),r},o.prototype.readIntBE=function(e,t,n){e=0|e,t=0|t,n||U(e,t,this.length);for(var r=t,i=1,o=this[e+--r];r>0&&(i*=256);)o+=this[e+--r]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},o.prototype.readInt8=function(e,t){return t||U(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},o.prototype.readInt16LE=function(e,t){t||U(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(e,t){t||U(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(e,t){return t||U(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return t||U(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return t||U(e,4,this.length),$.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return t||U(e,4,this.length),$.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return t||U(e,8,this.length),$.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return t||U(e,8,this.length),$.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,n,r){e=+e,t=0|t,n=0|n,r||j(this,e,t,n,Math.pow(2,8*n),0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+n},o.prototype.writeUInt8=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,1,255,0),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):M(this,e,t,!0),t+2},o.prototype.writeUInt16BE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):M(this,e,t,!1),t+2},o.prototype.writeUInt32LE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):P(this,e,t,!0),t+4},o.prototype.writeUInt32BE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},o.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t=0|t,!r){var i=Math.pow(2,8*n-1);j(this,e,t,n,i-1,-i)}var o=0,s=1,a=0>e?1:0;for(this[t]=255&e;++o>0)-a&255;return t+n},o.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t=0|t,!r){var i=Math.pow(2,8*n-1);j(this,e,t,n,i-1,-i)}var o=n-1,s=1,a=0>e?1:0;for(this[t+o]=255&e;--o>=0&&(s*=256);)this[t+o]=(e/s>>0)-a&255;return t+n},o.prototype.writeInt8=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,1,127,-128),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),0>e&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):M(this,e,t,!0),t+2},o.prototype.writeInt16BE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):M(this,e,t,!1),t+2},o.prototype.writeInt32LE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):P(this,e,t,!0),t+4},o.prototype.writeInt32BE=function(e,t,n){return e=+e,t=0|t,n||j(this,e,t,4,2147483647,-2147483648),0>e&&(e=4294967295+e+1),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):P(this,e,t,!1),t+4},o.prototype.writeFloatLE=function(e,t,n){return D(this,e,t,!0,n)},o.prototype.writeFloatBE=function(e,t,n){return D(this,e,t,!1,n)},o.prototype.writeDoubleLE=function(e,t,n){return F(this,e,t,!0,n)},o.prototype.writeDoubleBE=function(e,t,n){return F(this,e,t,!1,n)},o.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&n>r&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(0>t)throw new RangeError("targetStart out of bounds");if(0>n||n>=this.length)throw new RangeError("sourceStart out of bounds");if(0>r)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-tn&&r>t)for(i=s-1;i>=0;i--)e[i+t]=this[i+n];else if(1e3>s||!o.TYPED_ARRAY_SUPPORT)for(i=0;s>i;i++)e[i+t]=this[i+n];else e._set(this.subarray(n,n+s),t);return s},o.prototype.fill=function(e,t,n){if(e||(e=0),t||(t=0),n||(n=this.length),t>n)throw new RangeError("end < start");if(n!==t&&0!==this.length){if(0>t||t>=this.length)throw new RangeError("start out of bounds");if(0>n||n>this.length)throw new RangeError("end out of bounds");var r;if("number"==typeof e)for(r=t;n>r;r++)this[r]=e;else{var i=W(e.toString()),o=i.length;for(r=t;n>r;r++)this[r]=i[r%o]}return this}},o.prototype.toArrayBuffer=function(){if("undefined"!=typeof Uint8Array){if(o.TYPED_ARRAY_SUPPORT)return new o(this).buffer;for(var e=new Uint8Array(this.length),t=0,n=e.length;n>t;t+=1)e[t]=this[t];return e.buffer}throw new TypeError("Buffer.toArrayBuffer not supported in this browser")};var Q=o.prototype;o._augment=function(e){return e.constructor=o,e._isBuffer=!0,e._set=e.set,e.get=Q.get,e.set=Q.set,e.write=Q.write,e.toString=Q.toString,e.toLocaleString=Q.toString,e.toJSON=Q.toJSON,e.equals=Q.equals,e.compare=Q.compare,e.indexOf=Q.indexOf,e.copy=Q.copy,e.slice=Q.slice,e.readUIntLE=Q.readUIntLE,e.readUIntBE=Q.readUIntBE,e.readUInt8=Q.readUInt8,e.readUInt16LE=Q.readUInt16LE,e.readUInt16BE=Q.readUInt16BE,e.readUInt32LE=Q.readUInt32LE,e.readUInt32BE=Q.readUInt32BE,e.readIntLE=Q.readIntLE,e.readIntBE=Q.readIntBE,e.readInt8=Q.readInt8,e.readInt16LE=Q.readInt16LE,e.readInt16BE=Q.readInt16BE,e.readInt32LE=Q.readInt32LE,e.readInt32BE=Q.readInt32BE,e.readFloatLE=Q.readFloatLE,e.readFloatBE=Q.readFloatBE,e.readDoubleLE=Q.readDoubleLE,e.readDoubleBE=Q.readDoubleBE,e.writeUInt8=Q.writeUInt8,e.writeUIntLE=Q.writeUIntLE,e.writeUIntBE=Q.writeUIntBE,e.writeUInt16LE=Q.writeUInt16LE,e.writeUInt16BE=Q.writeUInt16BE,e.writeUInt32LE=Q.writeUInt32LE,e.writeUInt32BE=Q.writeUInt32BE,e.writeIntLE=Q.writeIntLE,e.writeIntBE=Q.writeIntBE,e.writeInt8=Q.writeInt8,e.writeInt16LE=Q.writeInt16LE,e.writeInt16BE=Q.writeInt16BE,e.writeInt32LE=Q.writeInt32LE,e.writeInt32BE=Q.writeInt32BE,e.writeFloatLE=Q.writeFloatLE,e.writeFloatBE=Q.writeFloatBE,e.writeDoubleLE=Q.writeDoubleLE,e.writeDoubleBE=Q.writeDoubleBE,e.fill=Q.fill,e.inspect=Q.inspect,e.toArrayBuffer=Q.toArrayBuffer,e};var ee=/[^+\/0-9A-Za-z-_]/g}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"base64-js":6,ieee754:7,isarray:8}],6:[function(e,t,n){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";!function(e){"use strict";function t(e){var t=e.charCodeAt(0);return t===s||t===l?62:t===a||t===h?63:c>t?-1:c+10>t?t-c+26+26:f+26>t?t-f:u+26>t?t-u+26:void 0}function n(e){function n(e){u[l++]=e}var r,i,s,a,c,u;if(e.length%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var f=e.length;c="="===e.charAt(f-2)?2:"="===e.charAt(f-1)?1:0,u=new o(3*e.length/4-c),s=c>0?e.length-4:e.length;var l=0;for(r=0,i=0;s>r;r+=4,i+=3)a=t(e.charAt(r))<<18|t(e.charAt(r+1))<<12|t(e.charAt(r+2))<<6|t(e.charAt(r+3)),n((16711680&a)>>16),n((65280&a)>>8),n(255&a);return 2===c?(a=t(e.charAt(r))<<2|t(e.charAt(r+1))>>4,n(255&a)):1===c&&(a=t(e.charAt(r))<<10|t(e.charAt(r+1))<<4|t(e.charAt(r+2))>>2,n(a>>8&255),n(255&a)),u}function i(e){function t(e){return r.charAt(e)}function n(e){return t(e>>18&63)+t(e>>12&63)+t(e>>6&63)+t(63&e)}var i,o,s,a=e.length%3,c="";for(i=0,s=e.length-a;s>i;i+=3)o=(e[i]<<16)+(e[i+1]<<8)+e[i+2],c+=n(o);switch(a){case 1:o=e[e.length-1],c+=t(o>>2),c+=t(o<<4&63),c+="==";break;case 2:o=(e[e.length-2]<<8)+e[e.length-1],c+=t(o>>10),c+=t(o>>4&63),c+=t(o<<2&63),c+="="}return c}var o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="+".charCodeAt(0),a="/".charCodeAt(0),c="0".charCodeAt(0),u="a".charCodeAt(0),f="A".charCodeAt(0),l="-".charCodeAt(0),h="_".charCodeAt(0);e.toByteArray=n,e.fromByteArray=i}("undefined"==typeof n?this.base64js={}:n)},{}],7:[function(e,t,n){n.read=function(e,t,n,r,i){var o,s,a=8*i-r-1,c=(1<>1,f=-7,l=n?i-1:0,h=n?-1:1,d=e[t+l];for(l+=h,o=d&(1<<-f)-1,d>>=-f,f+=a;f>0;o=256*o+e[t+l],l+=h,f-=8);for(s=o&(1<<-f)-1,o>>=-f,f+=r;f>0;s=256*s+e[t+l],l+=h,f-=8);if(0===o)o=1-u;else{if(o===c)return s?NaN:(d?-1:1)*(1/0);s+=Math.pow(2,r),o-=u}return(d?-1:1)*s*Math.pow(2,o-r)},n.write=function(e,t,n,r,i,o){var s,a,c,u=8*o-i-1,f=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,d=r?0:o-1,p=r?1:-1,g=0>t||0===t&&0>1/t?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=f):(s=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-s))<1&&(s--,c*=2),t+=s+l>=1?h/c:h*Math.pow(2,1-l),t*c>=2&&(s++,c/=2),s+l>=f?(a=0,s=f):s+l>=1?(a=(t*c-1)*Math.pow(2,i),s+=l):(a=t*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;e[n+d]=255&a,d+=p,a/=256,i-=8);for(s=s<0;e[n+d]=255&s,d+=p,s/=256,u-=8);e[n+d-p]|=128*g}},{}],8:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],9:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function o(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function a(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!o(e)||0>e||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,o,c,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;throw TypeError('Uncaught, unspecified "error" event.')}if(n=this._events[e],a(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:o=Array.prototype.slice.call(arguments,1),n.apply(this,o)}else if(s(n))for(o=Array.prototype.slice.call(arguments,1),u=n.slice(),r=u.length,c=0;r>c;c++)u[c].apply(this,o);return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?s(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,s(this._events[e])&&!this._events[e].warned&&(n=a(this._maxListeners)?r.defaultMaxListeners:this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,o,a;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],o=n.length,r=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(n)){for(a=o;a-- >0;)if(n[a]===t||n[a].listener&&n[a].listener===t){r=a;break}if(0>r)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],i(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],10:[function(e,t,n){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},{}],11:[function(e,t,n){t.exports=function(e){return!(null==e||!(e._isBuffer||e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)))}},{}],12:[function(e,t,n){t.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},{}],13:[function(e,t,n){function r(){f=!1,a.length?u=a.concat(u):l=-1,u.length&&i()}function i(){if(!f){var e=setTimeout(r);f=!0;for(var t=u.length;t;){for(a=u,u=[];++l1)for(var n=1;n0)if(t.ended&&!i){var a=new Error("stream.push() after EOF");
2 | e.emit("error",a)}else if(t.endEmitted&&i){var a=new Error("stream.unshift() after end event");e.emit("error",a)}else!t.decoder||i||r||(n=t.decoder.write(n)),i||(t.reading=!1),t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,i?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&l(e)),d(e,t);else i||(t.reading=!1);return s(t)}function s(e){return!e.ended&&(e.needReadable||e.length=M?e=M:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function c(e,t){return 0===t.length&&t.ended?0:t.objectMode?0===e?0:1:null===e||isNaN(e)?t.flowing&&t.buffer.length?t.buffer[0].length:t.length:0>=e?0:(e>t.highWaterMark&&(t.highWaterMark=a(e)),e>t.length?t.ended?t.length:(t.needReadable=!0,0):e)}function u(e,t){var n=null;return S.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function f(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,l(e)}}function l(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(B("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?C(h,e):h(e))}function h(e){B("emit readable"),e.emit("readable"),v(e)}function d(e,t){t.readingMore||(t.readingMore=!0,C(p,e,t))}function p(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=i)n=o?r.join(""):1===r.length?r[0]:S.concat(r,i),r.length=0;else if(eu&&e>c;u++){var a=r[0],l=Math.min(e-c,a.length);o?n+=a.slice(0,l):a.copy(n,c,0,l),l0)throw new Error("endReadable called on non-empty stream");t.endEmitted||(t.ended=!0,C(E,t,e))}function E(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function R(e,t){for(var n=0,r=e.length;r>n;n++)t(e[n],n)}function A(e,t){for(var n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}t.exports=i;var C=e("process-nextick-args"),x=e("isarray"),S=e("buffer").Buffer;i.ReadableState=r;var k,T=(e("events"),function(e,t){return e.listeners(t).length});!function(){try{k=e("stream")}catch(e){}finally{k||(k=e("events").EventEmitter)}}();var S=e("buffer").Buffer,L=e("core-util-is");L.inherits=e("inherits");var B,I=e("util");B=I&&I.debuglog?I.debuglog("stream"):function(){};var U;L.inherits(i,k);var j,j;i.prototype.push=function(e,t){var n=this._readableState;return n.objectMode||"string"!=typeof e||(t=t||n.defaultEncoding,t!==n.encoding&&(e=new S(e,t),t="")),o(this,n,e,t,!1)},i.prototype.unshift=function(e){var t=this._readableState;return o(this,t,e,"",!0)},i.prototype.isPaused=function(){return this._readableState.flowing===!1},i.prototype.setEncoding=function(t){return U||(U=e("string_decoder/").StringDecoder),this._readableState.decoder=new U(t),this._readableState.encoding=t,this};var M=8388608;i.prototype.read=function(e){B("read",e);var t=this._readableState,n=e;if(("number"!=typeof e||e>0)&&(t.emittedReadable=!1),0===e&&t.needReadable&&(t.length>=t.highWaterMark||t.ended))return B("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?_(this):l(this),null;if(e=c(e,t),0===e&&t.ended)return 0===t.length&&_(this),null;var r=t.needReadable;B("need readable",r),(0===t.length||t.length-e0?w(e,t):null,null===i&&(t.needReadable=!0,e=0),t.length-=e,0!==t.length||t.ended||(t.needReadable=!0),n!==e&&t.ended&&0===t.length&&_(this),null!==i&&this.emit("data",i),i},i.prototype._read=function(e){this.emit("error",new Error("not implemented"))},i.prototype.pipe=function(e,t){function r(e){B("onunpipe"),e===l&&o()}function i(){B("onend"),e.end()}function o(){B("cleanup"),e.removeListener("close",c),e.removeListener("finish",u),e.removeListener("drain",y),e.removeListener("error",a),e.removeListener("unpipe",r),l.removeListener("end",i),l.removeListener("end",o),l.removeListener("data",s),m=!0,!h.awaitDrain||e._writableState&&!e._writableState.needDrain||y()}function s(t){B("ondata");var n=e.write(t);!1===n&&(1!==h.pipesCount||h.pipes[0]!==e||1!==l.listenerCount("data")||m||(B("false write response, pause",l._readableState.awaitDrain),l._readableState.awaitDrain++),l.pause())}function a(t){B("onerror",t),f(),e.removeListener("error",a),0===T(e,"error")&&e.emit("error",t)}function c(){e.removeListener("finish",u),f()}function u(){B("onfinish"),e.removeListener("close",c),f()}function f(){B("unpipe"),l.unpipe(e)}var l=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=e;break;case 1:h.pipes=[h.pipes,e];break;default:h.pipes.push(e)}h.pipesCount+=1,B("pipe count=%d opts=%j",h.pipesCount,t);var d=(!t||t.end!==!1)&&e!==n.stdout&&e!==n.stderr,p=d?i:o;h.endEmitted?C(p):l.once("end",p),e.on("unpipe",r);var y=g(l);e.on("drain",y);var m=!1;return l.on("data",s),e._events&&e._events.error?x(e._events.error)?e._events.error.unshift(a):e._events.error=[a,e._events.error]:e.on("error",a),e.once("close",c),e.once("finish",u),e.emit("pipe",l),h.flowing||(B("pipe resume"),l.resume()),e},i.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var n=t.pipes,r=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;r>i;i++)n[i].emit("unpipe",this);return this}var i=A(t.pipes,e);return-1===i?this:(t.pipes.splice(i,1),t.pipesCount-=1,1===t.pipesCount&&(t.pipes=t.pipes[0]),e.emit("unpipe",this),this)},i.prototype.on=function(e,t){var n=k.prototype.on.call(this,e,t);if("data"===e&&!1!==this._readableState.flowing&&this.resume(),"readable"===e&&this.readable){var r=this._readableState;r.readableListening||(r.readableListening=!0,r.emittedReadable=!1,r.needReadable=!0,r.reading?r.length&&l(this,r):C(y,this))}return n},i.prototype.addListener=i.prototype.on,i.prototype.resume=function(){var e=this._readableState;return e.flowing||(B("resume"),e.flowing=!0,m(this,e)),this},i.prototype.pause=function(){return B("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(B("pause"),this._readableState.flowing=!1,this.emit("pause")),this},i.prototype.wrap=function(e){var t=this._readableState,n=!1,r=this;e.on("end",function(){if(B("wrapped end"),t.decoder&&!t.ended){var e=t.decoder.end();e&&e.length&&r.push(e)}r.push(null)}),e.on("data",function(i){if(B("wrapped data"),t.decoder&&(i=t.decoder.write(i)),(!t.objectMode||null!==i&&void 0!==i)&&(t.objectMode||i&&i.length)){var o=r.push(i);o||(n=!0,e.pause())}});for(var i in e)void 0===this[i]&&"function"==typeof e[i]&&(this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i));var o=["error","close","destroy","pause","resume"];return R(o,function(t){e.on(t,r.emit.bind(r,t))}),r._read=function(t){B("wrapped _read",t),n&&(n=!1,e.resume())},r},i._fromList=w}).call(this,e("_process"))},{"./_stream_duplex":15,_process:13,buffer:5,"core-util-is":20,events:9,inherits:10,isarray:12,"process-nextick-args":21,"string_decoder/":28,util:4}],18:[function(e,t,n){"use strict";function r(e){this.afterTransform=function(t,n){return i(e,t,n)},this.needTransform=!1,this.transforming=!1,this.writecb=null,this.writechunk=null}function i(e,t,n){var r=e._transformState;r.transforming=!1;var i=r.writecb;if(!i)return e.emit("error",new Error("no writecb in Transform class"));r.writechunk=null,r.writecb=null,null!==n&&void 0!==n&&e.push(n),i&&i(t);var o=e._readableState;o.reading=!1,(o.needReadable||o.length-1))throw new TypeError("Unknown encoding: "+e);this._writableState.defaultEncoding=e},s.prototype._write=function(e,t,n){n(new Error("not implemented"))},s.prototype._writev=null,s.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!==e&&void 0!==e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||_(this,r,n)}},{"./_stream_duplex":15,buffer:5,"core-util-is":20,events:9,inherits:10,"process-nextick-args":21,"util-deprecate":22}],20:[function(e,t,n){(function(e){function t(e){return Array.isArray?Array.isArray(e):"[object Array]"===y(e)}function r(e){return"boolean"==typeof e}function i(e){return null===e}function o(e){return null==e}function s(e){return"number"==typeof e}function a(e){return"string"==typeof e}function c(e){return"symbol"==typeof e}function u(e){return void 0===e}function f(e){return"[object RegExp]"===y(e)}function l(e){return"object"==typeof e&&null!==e}function h(e){return"[object Date]"===y(e)}function d(e){return"[object Error]"===y(e)||e instanceof Error}function p(e){return"function"==typeof e}function g(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function y(e){return Object.prototype.toString.call(e)}n.isArray=t,n.isBoolean=r,n.isNull=i,n.isNullOrUndefined=o,n.isNumber=s,n.isString=a,n.isSymbol=c,n.isUndefined=u,n.isRegExp=f,n.isObject=l,n.isDate=h,n.isError=d,n.isFunction=p,n.isPrimitive=g,n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../../../insert-module-globals/node_modules/is-buffer/index.js")})},{"../../../../insert-module-globals/node_modules/is-buffer/index.js":11}],21:[function(e,t,n){(function(e){"use strict";function n(t){for(var n=new Array(arguments.length-1),r=0;r=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived=55296&&56319>=r)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var i=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,i),i-=this.charReceived),t+=e.toString(this.encoding,0,i);var i=t.length-1,r=t.charCodeAt(i);if(r>=55296&&56319>=r){var o=this.surrogateSize;return this.charLength+=o,this.charReceived+=o,this.charBuffer.copy(this.charBuffer,o,0,o),e.copy(this.charBuffer,0,0,o),t.substring(0,i)}return t},u.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var n=e[e.length-t];if(1==t&&n>>5==6){this.charLength=2;break}if(2>=t&&n>>4==14){this.charLength=3;break}if(3>=t&&n>>3==30){this.charLength=4;break}}this.charReceived=t},u.prototype.end=function(e){var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var n=this.charReceived,r=this.charBuffer,i=this.encoding;t+=r.slice(0,n).toString(i)}return t}},{buffer:5}],29:[function(e,t,n){function r(){return"WebkitAppearance"in document.documentElement.style||window.console&&(console.firebug||console.exception&&console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31}function i(){var e=arguments,t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+n.humanize(this.diff),!t)return e;var r="color: "+this.color;e=[e[0],r,"color: inherit"].concat(Array.prototype.slice.call(e,1));var i=0,o=0;return e[0].replace(/%[a-z%]/g,function(e){"%%"!==e&&(i++,"%c"===e&&(o=i))}),e.splice(o,0,r),e}function o(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function s(e){try{null==e?n.storage.removeItem("debug"):n.storage.debug=e}catch(e){}}function a(){var e;try{e=n.storage.debug}catch(e){}return e}function c(){try{return window.localStorage}catch(e){}}n=t.exports=e("./debug"),n.log=o,n.formatArgs=i,n.save=s,n.load=a,n.useColors=r,n.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:c(),n.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],n.formatters.j=function(e){return JSON.stringify(e)},n.enable(a())},{"./debug":30}],30:[function(e,t,n){function r(){return n.colors[f++%n.colors.length]}function i(e){function t(){}function i(){var e=i,t=+new Date,o=t-(u||t);e.diff=o,e.prev=u,e.curr=t,u=t,null==e.useColors&&(e.useColors=n.useColors()),null==e.color&&e.useColors&&(e.color=r());var s=Array.prototype.slice.call(arguments);s[0]=n.coerce(s[0]),"string"!=typeof s[0]&&(s=["%o"].concat(s));var a=0;s[0]=s[0].replace(/%([a-z%])/g,function(t,r){if("%%"===t)return t;a++;var i=n.formatters[r];if("function"==typeof i){var o=s[a];t=i.call(e,o),s.splice(a,1),a--}return t}),"function"==typeof n.formatArgs&&(s=n.formatArgs.apply(e,s));var c=i.log||n.log||console.log.bind(console);c.apply(e,s)}t.enabled=!1,i.enabled=!0;var o=n.enabled(e)?i:t;return o.namespace=e,o}function o(e){n.save(e);for(var t=(e||"").split(/[\s,]+/),r=t.length,i=0;r>i;i++)t[i]&&(e=t[i].replace(/\*/g,".*?"),"-"===e[0]?n.skips.push(new RegExp("^"+e.substr(1)+"$")):n.names.push(new RegExp("^"+e+"$")))}function s(){n.enable("")}function a(e){var t,r;for(t=0,r=n.skips.length;r>t;t++)if(n.skips[t].test(e))return!1;for(t=0,r=n.names.length;r>t;t++)if(n.names[t].test(e))return!0;return!1}function c(e){return e instanceof Error?e.stack||e.message:e}n=t.exports=i,n.coerce=c,n.disable=s,n.enable=o,n.enabled=a,n.humanize=e("ms"),n.names=[],n.skips=[],n.formatters={};var u,f=0},{ms:34}],31:[function(e,t,n){var r=t.exports=function(e,t){if(t||(t=16),void 0===e&&(e=128),0>=e)return"0";for(var n=Math.log(Math.pow(2,e))/Math.log(t),i=2;n===1/0;i*=2)n=Math.log(Math.pow(2,e/i))/Math.log(t)*i;for(var o=n-Math.floor(n),s="",i=0;i=Math.pow(2,e)?r(e,t):s};r.rack=function(e,t,n){var i=function(i){var s=0;do{if(s++>10){if(!n)throw new Error("too many ID collisions, use more bits");e+=n}var a=r(e,t)}while(Object.hasOwnProperty.call(o,a));return o[a]=i,a},o=i.hats={};return i.get=function(e){return i.hats[e]},i.set=function(e,t){return i.hats[e]=t,i},i.bits=e||128,i.base=t||16,i}},{}],32:[function(e,t,n){arguments[4][10][0].apply(n,arguments)},{dup:10}],33:[function(e,t,n){function r(e){return i(e)||o(e)}function i(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function o(e){return a[s.call(e)]}t.exports=r,r.strict=i,r.loose=o;var s=Object.prototype.toString,a={"[object Int8Array]":!0,"[object Int16Array]":!0,"[object Int32Array]":!0,"[object Uint8Array]":!0,"[object Uint16Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0}},{}],34:[function(e,t,n){function r(e){if(e=""+e,!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*l;case"days":case"day":case"d":return n*f;case"hours":case"hour":case"hrs":case"hr":case"h":return n*u;case"minutes":case"minute":case"mins":case"min":case"m":return n*c;case"seconds":case"second":case"secs":case"sec":case"s":return n*a;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n}}}}function i(e){return e>=f?Math.round(e/f)+"d":e>=u?Math.round(e/u)+"h":e>=c?Math.round(e/c)+"m":e>=a?Math.round(e/a)+"s":e+"ms"}function o(e){return s(e,f,"day")||s(e,u,"hour")||s(e,c,"minute")||s(e,a,"second")||e+" ms"}function s(e,t,n){return t>e?void 0:1.5*t>e?Math.floor(e/t)+" "+n:Math.ceil(e/t)+" "+n+"s"}var a=1e3,c=60*a,u=60*c,f=24*u,l=365.25*f;t.exports=function(e,t){return t=t||{},"string"==typeof e?r(e):t.long?o(e):i(e)}},{}],35:[function(e,t,n){function r(e){var t=function(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}var i=e("wrappy");t.exports=i(r),r.proto=r(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return r(this)},configurable:!0})})},{wrappy:41}],36:[function(e,t,n){(function(n){function r(e){var t=this;if(!(t instanceof r))return new r(e);if(e||(e={}),e.allowHalfOpen=!1,d.Duplex.call(t,e),c(t,{initiator:!1,stream:!1,config:r.config,constraints:r.constraints,channelName:e&&e.initiator?u(160):null,trickle:!0},e),"function"!=typeof g)throw"undefined"==typeof window?new Error("Missing WebRTC support - was `wrtc` dependency installed?"):new Error("Missing WebRTC support - is this a supported browser?");t._debug("new peer (initiator: %s)",t.initiator),t.destroyed=!1,t.connected=!1,t._pcReady=!1,t._channelReady=!1,t._iceComplete=!1,t._channel=null,t._buffer=[],t._pc=new g(t.config,t.constraints),t._pc.oniceconnectionstatechange=t._onIceConnectionStateChange.bind(t),t._pc.onsignalingstatechange=t._onSignalingStateChange.bind(t),t._pc.onicecandidate=t._onIceCandidate.bind(t),t.stream&&t._setupVideo(t.stream),t._pc.onaddstream=t._onAddStream.bind(t),t.initiator?(t._setupData({channel:t._pc.createDataChannel(t.channelName)}),t._pc.onnegotiationneeded=h(t._createOffer.bind(t)),"undefined"!=typeof window&&window.webkitRTCPeerConnection||t._pc.onnegotiationneeded()):t._pc.ondatachannel=t._setupData.bind(t),t.on("finish",function(){t.connected?setTimeout(function(){t._destroy()},100):t.once("connect",function(){setTimeout(function(){t._destroy()},100)})})}function i(e){var t=e.sdp.split("b=AS:30");t.length>1&&(e.sdp=t[0]+"b=AS:1638400"+t[1])}function o(){}t.exports=r;var s,a=e("debug")("simple-peer"),c=e("xtend/mutable"),u=e("hat"),f=e("inherits"),l=e("is-typedarray"),h=e("once"),d=e("stream"),p=e("typedarray-to-buffer");try{s=e("wrtc")}catch(e){s={}}var g="undefined"!=typeof window?window.mozRTCPeerConnection||window.RTCPeerConnection||window.webkitRTCPeerConnection:s.RTCPeerConnection,y="undefined"!=typeof window?window.mozRTCSessionDescription||window.RTCSessionDescription||window.webkitRTCSessionDescription:s.RTCSessionDescription,m="undefined"!=typeof window?window.mozRTCIceCandidate||window.RTCIceCandidate||window.webkitRTCIceCandidate:s.RTCIceCandidate;f(r,d.Duplex),r.config={iceServers:[{url:"stun:23.21.150.121",urls:"stun:23.21.150.121"}]},r.constraints={},r.prototype.send=function(e,t){var n=this;t||(t=o),n._write(e,void 0,t)},r.prototype.signal=function(e){var t=this;if(t.destroyed)throw new Error("cannot signal after peer is destroyed");if("string"==typeof e)try{e=JSON.parse(e)}catch(t){e={}}if(t._debug("signal"),e.sdp&&t._pc.setRemoteDescription(new y(e),function(){"offer"===t._pc.remoteDescription.type&&t._createAnswer()},t._onError.bind(t)),e.candidate)try{t._pc.addIceCandidate(new m(e.candidate),o,t._onError.bind(t))}catch(e){t._destroy(new Error("error adding candidate: "+e.message))}e.sdp||e.candidate||t._destroy(new Error("signal() called with invalid signal data"))},r.prototype.destroy=function(e){var t=this;t._destroy(null,e)},r.prototype._destroy=function(e,t){var n=this;if(!n.destroyed){if(t&&n.once("close",t),n._debug("destroy (error: %s)",e&&e.message),n.destroyed=!0,n.connected=!1,n._pcReady=!1,n._channelReady=!1,n._pc){try{n._pc.close()}catch(e){}n._pc.oniceconnectionstatechange=null,n._pc.onsignalingstatechange=null,n._pc.onicecandidate=null}if(n._channel){try{n._channel.close()}catch(e){}n._channel.onmessage=null,n._channel.onopen=null,n._channel.onclose=null}n._pc=null,n._channel=null,this.readable=this.writable=!1,n._readableState.ended||n.push(null),n._writableState.finished||n.end(),e&&n.emit("error",e),n.emit("close")}},r.prototype._setupData=function(e){var t=this;t._channel=e.channel,t.channelName=t._channel.label,t._channel.binaryType="arraybuffer",t._channel.onmessage=t._onChannelMessage.bind(t),t._channel.onopen=t._onChannelOpen.bind(t),t._channel.onclose=t._onChannelClose.bind(t)},r.prototype._setupVideo=function(e){var t=this;t._pc.addStream(e)},r.prototype._read=function(){},r.prototype._write=function(e,t,r){var i=this;if(i.destroyed)return r(new Error("cannot write after peer is destroyed"));var o=e.length||e.byteLength||e.size;return i.connected?(i._debug("_write: length %d",o),l.strict(e)||e instanceof ArrayBuffer||"string"==typeof e||"undefined"!=typeof Blob&&e instanceof Blob?i._channel.send(e):n.isBuffer(e)?i._channel.send(new Uint8Array(e)):i._channel.send(JSON.stringify(e)),void r(null)):(i._debug("_write before ready: length %d",o),i._buffer.push(e),void r(null))},r.prototype._createOffer=function(){var e=this;e.destroyed||e._pc.createOffer(function(t){if(!e.destroyed){i(t),e._pc.setLocalDescription(t,o,e._onError.bind(e));var n=function(){e.emit("signal",e._pc.localDescription||t)};e.trickle||e._iceComplete?n():e.once("_iceComplete",n)}},e._onError.bind(e),e.offerConstraints);
3 | },r.prototype._createAnswer=function(){var e=this;e.destroyed||e._pc.createAnswer(function(t){if(!e.destroyed){i(t),e._pc.setLocalDescription(t,o,e._onError.bind(e));var n=function(){e.emit("signal",e._pc.localDescription||t)};e.trickle||e._iceComplete?n():e.once("_iceComplete",n)}},e._onError.bind(e),e.answerConstraints)},r.prototype._onIceConnectionStateChange=function(){var e=this;if(!e.destroyed){var t=e._pc.iceGatheringState,n=e._pc.iceConnectionState;e.emit("iceConnectionStateChange",t,n),e._debug("iceConnectionStateChange %s %s",t,n),("connected"===n||"completed"===n)&&(e._pcReady=!0,e._maybeReady()),("disconnected"===n||"closed"===n)&&e._destroy()}},r.prototype._maybeReady=function(){var e=this;e._debug("maybeReady pc %s channel %s",e._pcReady,e._channelReady),!e.connected&&e._pcReady&&e._channelReady&&(e.connected=!0,e._buffer.forEach(function(t){e.send(t)}),e._buffer=[],e._debug("connect"),e.emit("connect"))},r.prototype._onSignalingStateChange=function(){var e=this;e.destroyed||(e.emit("signalingStateChange",e._pc.signalingState),e._debug("signalingStateChange %s",e._pc.signalingState))},r.prototype._onIceCandidate=function(e){var t=this;t.destroyed||(e.candidate&&t.trickle?t.emit("signal",{candidate:e.candidate}):e.candidate||(t._iceComplete=!0,t.emit("_iceComplete")))},r.prototype._onChannelMessage=function(e){var t=this;if(!t.destroyed){var n=e.data;if(t._debug("on channel message: length %d",n.byteLength||n.length),n instanceof ArrayBuffer)n=p(new Uint8Array(n)),t.push(n);else{try{n=JSON.parse(n)}catch(e){}t.emit("data",n)}}},r.prototype._onChannelOpen=function(){var e=this;e.connected||e.destroyed||(e._debug("on channel open"),e._channelReady=!0,e._maybeReady())},r.prototype._onChannelClose=function(){var e=this;e.destroyed||(e._debug("on channel close"),e._destroy())},r.prototype._onAddStream=function(e){var t=this;t.destroyed||(t._debug("on add stream"),t.emit("stream",e.stream))},r.prototype._onError=function(e){var t=this;t.destroyed||(t._debug("error %s",e.message||e),t._destroy(e))},r.prototype._debug=function(){var e=this,t=[].slice.call(arguments),n=e.channelName&&e.channelName.substring(0,7);t[0]="["+n+"] "+t[0],a.apply(null,t)}}).call(this,{isBuffer:e("../browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js")})},{"../browserify/node_modules/insert-module-globals/node_modules/is-buffer/index.js":11,debug:29,hat:31,inherits:32,"is-typedarray":33,once:35,stream:27,"typedarray-to-buffer":38,wrtc:4,"xtend/mutable":42}],37:[function(e,t,n){function r(e){var t=this;return t instanceof r?(e=e||{},c.call(t),t._connections={socket:{success:0,error:0,attempt:0},rtc:{success:0,error:0,attempt:0}},t.peer=null,t.peerConnected=!1,t.rtcConnected=!1,t.socketConnected=!1,s(t,{pairCode:"pairCode"in e?e.pairCode:null,socketFallback:"socketFallback"in e?e.socketFallback:!0,socket:"socket"in e?e.socket:null,url:"url"in e?e.url:"http://localhost",reconnect:"reconnect"in e?e.reconnect:!0,reconnectDelay:"reconnectDelay"in e?e.reconnectDelay:1e3,timeout:"timeout"in e?e.timeout:0,autoconnect:"autoconnect"in e?e.autoconnect:!0,debug:"debug"in e?e.debug:!1},e),t._debug("New peer"),t.on("peer.found",function(e){t.peerConnected=!0,t.socketConnected=!0,clearTimeout(t._socketConnectTimeout),clearTimeout(t._socketReconnectDelayTimeout),t._connections.socket.attempt=0,t._connections.socket.success++,t.emit("connect"),t._connections.socket.success>0&&t.emit("reconnect"),t.initiator=e.initiator,e.initiator&&(t._send("rtc.connect"),t._rtcInit())}),t.on("peer.lost",function(){t.peerConnected=!1,t.emit("disconnect")}),t.on("rtc.signal",t._rtcSignal),t.on("rtc.connect",function(){t._rtcInit()}),t.on("busy",function(){t._socketError(new Error('Pair code "'+t.pairCode+'" already in use')),t.socket.close()}),void(t.autoconnect&&setTimeout(function(){t.connect()},0))):new r(e)}var i=e("events"),o=e("inherits"),s=e("xtend/mutable"),a=e("simple-peer"),c=i.EventEmitter;o(r,c),r.prototype.pair=function(e){var t=this;"undefined"!=typeof e&&(t.pairCode=e),t._send("pair",t.pairCode)},r.prototype.connect=function(){var e=this;return e._connections.socket.attempt++,e.socketConnected?void console.warn("Socket already connected"):(e.timeout&&(e._socketConnectTimeout=setTimeout(function(){e.socket.close();var t=new Error("Connection timeout after "+e.timeout+" ms");e.emit("connect_timeout",t),e._socketError(t)},e.timeout)),e.socket=new WebSocket(e.url.replace(/^http/,"ws")),e.socket.onopen=function(){e.pair()},e.socket.onerror=function(t){e._socketError(new Error(t.data||"Unexpected WebSocket error"))},e.socket.onmessage=function(t){var n={};try{n=JSON.parse(t.data)}catch(t){e.emit(new Error("Expected JSON-formatted WebSocket message"))}"data"===n.type?e.emit("data",n.data):e.emit(n.type,n.data)},e.socket.onclose=function(){if(e.peerConnected=!1,e.socketConnected=!1,e._debug("close"),e.emit("disconnect"),e.reconnect){var t=e._calcReconnectTimeout(e._connections.socket.attempt);clearTimeout(e._socketReconnectDelayTimeout),e._socketReconnectDelayTimeout=setTimeout(function(){e.connect()},t)}},e.emit("connect_attempt"),void(e._connections.socket.success>0&&e.emit("reconnect_attempt")))},r.prototype._socketError=function(e){var t=this;t._connections.socket.error++,t.emit("error",e),t.emit("connect_error",e),t._connections.socket.success>0&&t.emit("reconnect_error")},r.prototype._calcReconnectTimeout=function(e){var t=this;return Math.min(Math.pow(2,e)*t.reconnectDelay,3e4)},r.prototype._rtcInit=function(){var e=this;return e.rtcConnected?void console.warn("WebRTC peer already connected"):(e.peer=new a({initiator:e.initiator}),e.peer.on("connect",function(){clearTimeout(e._rtcReconnectTimeout),e._connections.rtc.success++,e._connections.rtc.attempt=0,e.rtcConnected=!0,e.emit("upgrade")}),e.peer.on("error",function(t){e._connections.rtc.error++,e.emit("upgrade_error",t),e.emit("error",t)}),e.peer.on("signal",function(t){e.rtcConnected||e._send("rtc.signal",t)}),e.peer.on("data",function(t){e.emit("data",t)}),e.peer.on("close",function(t){if(e.destroyPeer(),e.socketConnected){if(e.reconnect&&e.initiator){var n=e._calcReconnectTimeout(e._connections.rtc.attempt);clearTimeout(e._rtcReconnectTimeout),e._rtcReconnectTimeout=setTimeout(function(){e._send("rtc.connect"),e._rtcInit()},n)}}else e.peerConnected=!1,e.emit("disconnect");e.emit("downgrade")}),e._connections.rtc.attempt++,void e.emit("upgrade_attempt"))},r.prototype._rtcSignal=function(e){var t=this;t.rtcConnected||!t.peer||t.peer.destroyed||t.peer.signal(e)},r.prototype._send=function(e,t){var n=this;return n.socket?(t=JSON.stringify({type:e,data:t}),n._debug("_send",t),void n.socket.send(t)):void console.warn("Attempted to send message when socket was closed: %s",e)},r.prototype.send=function(e){var t=this;t.rtcConnected?t.peer.send(e):t._send("data",e)},r.prototype.close=function(){var e=this;e.destroyPeer(),e.socket&&e.socket.close()},r.prototype.destroy=function(){var e=this;e.reconnect=!1,e.close(),e.peer=null,e.socket=null,e.socketConnected=!1,e.rtcConnected=!1,clearTimeout(e._socketConnectTimeout),clearTimeout(e._socketReconnectDelayTimeout),clearTimeout(e._rtcReconnectTimeout)},r.prototype.destroyPeer=function(){var e=this;e.peer&&e.peer.destroy(),e.peer=null,e.rtcConnected=!1},r.prototype._debug=function(){var e=this;if(e.debug){var t=Array.prototype.slice.call(arguments);t[0]="["+e.pairCode+"] "+t[0],console.log.apply(console,t)}},t.exports=r},{events:9,inherits:32,"simple-peer":36,"xtend/mutable":42}],38:[function(e,t,n){(function(n){var r=e("is-typedarray").strict;t.exports=function(e){if(r(e)){var t=new n(e.buffer);return e.byteLength!==e.buffer.byteLength&&(t=t.slice(e.byteOffset,e.byteOffset+e.byteLength)),t}return new n(e)}}).call(this,e("buffer").Buffer)},{buffer:5,"is-typedarray":39}],39:[function(e,t,n){function r(e){return i(e)||o(e)}function i(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function o(e){return a[s.call(e)]}t.exports=r,r.strict=i,r.loose=o;var s=Object.prototype.toString,a={"[object Int8Array]":!0,"[object Int16Array]":!0,"[object Int32Array]":!0,"[object Uint8Array]":!0,"[object Uint8ClampedArray]":!0,"[object Uint16Array]":!0,"[object Uint32Array]":!0,"[object Float32Array]":!0,"[object Float64Array]":!0}},{}],40:[function(e,t,n){!function(e){"use strict";function t(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function n(e){return"string"!=typeof e&&(e=String(e)),e}function r(e){this.map={},e instanceof r?e.forEach(function(e,t){this.append(t,e)},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function i(e){return e.bodyUsed?Promise.reject(new TypeError("Already read")):void(e.bodyUsed=!0)}function o(e){return new Promise(function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}})}function s(e){var t=new FileReader;return t.readAsArrayBuffer(e),o(t)}function a(e){var t=new FileReader;return t.readAsText(e),o(t)}function c(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,"string"==typeof e)this._bodyText=e;else if(p.blob&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(p.formData&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(e){if(!p.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(e))throw new Error("unsupported BodyInit type")}else this._bodyText="";this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type&&this.headers.set("content-type",this._bodyBlob.type))},p.blob?(this.blob=function(){var e=i(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this.blob().then(s)},this.text=function(){var e=i(this);if(e)return e;if(this._bodyBlob)return a(this._bodyBlob);if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)}):this.text=function(){var e=i(this);return e?e:Promise.resolve(this._bodyText)},p.formData&&(this.formData=function(){return this.text().then(l)}),this.json=function(){return this.text().then(JSON.parse)},this}function u(e){var t=e.toUpperCase();return g.indexOf(t)>-1?t:e}function f(e,t){t=t||{};var n=t.body;if(f.prototype.isPrototypeOf(e)){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new r(e.headers)),this.method=e.method,this.mode=e.mode,n||(n=e._bodyInit,e.bodyUsed=!0)}else this.url=e;if(this.credentials=t.credentials||this.credentials||"omit",(t.headers||!this.headers)&&(this.headers=new r(t.headers)),this.method=u(t.method||this.method||"GET"),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&n)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(n)}function l(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var n=e.split("="),r=n.shift().replace(/\+/g," "),i=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(r),decodeURIComponent(i))}}),t}function h(e){var t=new r,n=e.getAllResponseHeaders().trim().split("\n");return n.forEach(function(e){var n=e.trim().split(":"),r=n.shift().trim(),i=n.join(":").trim();t.append(r,i)}),t}function d(e,t){t||(t={}),this.type="default",this.status=t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText,this.headers=t.headers instanceof r?t.headers:new r(t.headers),this.url=t.url||"",this._initBody(e)}if(!e.fetch){r.prototype.append=function(e,r){e=t(e),r=n(r);var i=this.map[e];i||(i=[],this.map[e]=i),i.push(r)},r.prototype.delete=function(e){delete this.map[t(e)]},r.prototype.get=function(e){var n=this.map[t(e)];return n?n[0]:null},r.prototype.getAll=function(e){return this.map[t(e)]||[]},r.prototype.has=function(e){return this.map.hasOwnProperty(t(e))},r.prototype.set=function(e,r){this.map[t(e)]=[n(r)]},r.prototype.forEach=function(e,t){Object.getOwnPropertyNames(this.map).forEach(function(n){this.map[n].forEach(function(r){e.call(t,r,n,this)},this)},this)};var p={blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e},g=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];f.prototype.clone=function(){return new f(this)},c.call(f.prototype),c.call(d.prototype),d.prototype.clone=function(){return new d(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new r(this.headers),url:this.url})},d.error=function(){var e=new d(null,{status:0,statusText:""});return e.type="error",e};var y=[301,302,303,307,308];d.redirect=function(e,t){if(-1===y.indexOf(t))throw new RangeError("Invalid status code");return new d(null,{status:t,headers:{location:e}})},e.Headers=r,e.Request=f,e.Response=d,e.fetch=function(e,t){return new Promise(function(n,r){function i(){return"responseURL"in s?s.responseURL:/^X-Request-URL:/m.test(s.getAllResponseHeaders())?s.getResponseHeader("X-Request-URL"):void 0}var o;o=f.prototype.isPrototypeOf(e)&&!t?e:new f(e,t);var s=new XMLHttpRequest;s.onload=function(){var e=1223===s.status?204:s.status;if(100>e||e>599)return void r(new TypeError("Network request failed"));var t={status:e,statusText:s.statusText,headers:h(s),url:i()},o="response"in s?s.response:s.responseText;n(new d(o,t))},s.onerror=function(){r(new TypeError("Network request failed"))},s.open(o.method,o.url,!0),"include"===o.credentials&&(s.withCredentials=!0),"responseType"in s&&p.blob&&(s.responseType="blob"),o.headers.forEach(function(e,t){s.setRequestHeader(t,e)}),s.send("undefined"==typeof o._bodyInit?null:o._bodyInit)})},e.fetch.polyfill=!0}}("undefined"!=typeof self?self:this)},{}],41:[function(e,t,n){function r(e,t){function n(){for(var t=new Array(arguments.length),n=0;n