From ea9ef1741995bea5b76dfa01ae557ef5bafa87da Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Tue, 30 Oct 2018 14:06:14 +0100 Subject: [PATCH] feat: code split, catch webgl2 not supported bug fixes #91 --- package.json | 2 + src/atlasViewer/atlasViewer.component.ts | 7 +- .../atlasViewer.constantService.service.ts | 1 + .../nehubaViewer/nehubaViewer.component.ts | 54 +++- third_party/export_nehuba/main.bundle.js | 245 +++++++++--------- webpack.aot.js | 2 +- webpack.common.js | 2 +- 7 files changed, 172 insertions(+), 141 deletions(-) diff --git a/package.json b/package.json index 3a13f82bb..5851bfecd 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,8 @@ "dev-plugin": "PLUGINDEV=http://localhost:10080/allPluginmanifests npm run dev-server & npm run plugin-server", "plugin-server": "node ./src/plugin_examples/server.js", "dev-server": "webpack-dev-server --config webpack.dev.js --mode development", + "dev-server-aot":"webpack-dev-server --config webpack.aot.js", + "dev-server-all-interfaces": "webpack-dev-server --config webpack.dev.js --mode development --hot --host 0.0.0.0 --host bs-local.com", "serve-plugins": "node src/plugin_examples/server.js", "test": "karma start spec/karma.conf.js" }, diff --git a/src/atlasViewer/atlasViewer.component.ts b/src/atlasViewer/atlasViewer.component.ts index 91de4e44f..e59b5cd98 100644 --- a/src/atlasViewer/atlasViewer.component.ts +++ b/src/atlasViewer/atlasViewer.component.ts @@ -2,7 +2,7 @@ import { Component, HostBinding, ViewChild, ViewContainerRef, ComponentFactoryRe import { Store, select } from "@ngrx/store"; import { ViewerStateInterface, isDefined, FETCHED_SPATIAL_DATA, UPDATE_SPATIAL_DATA, TOGGLE_SIDE_PANEL, safeFilter } from "../services/stateStore.service"; import { Observable, Subscription, combineLatest } from "rxjs"; -import { map, filter, distinctUntilChanged, delay } from "rxjs/operators"; +import { map, filter, distinctUntilChanged, delay, concatMap } from "rxjs/operators"; import { AtlasViewerDataService } from "./atlasViewer.dataService.service"; import { WidgetServices } from "./widgetUnit/widgetService.service"; import { LayoutMainSide } from "../layouts/mainside/mainside.component"; @@ -287,7 +287,9 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { ) this.subscriptions.push( - this.ngLayerNames$.subscribe(() => { + this.ngLayerNames$.pipe( + concatMap(data => this.constantsService.loadExportNehubaPromise.then(data)) + ).subscribe(() => { this.ngLayersChangeHandler() this.disposeHandler = window['viewer'].layerManager.layersChanged.add(() => this.ngLayersChangeHandler()) window['viewer'].registerDisposer(this.disposeHandler) @@ -438,7 +440,6 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { } ngLayersChangeHandler(){ - this.ngLayers = (window['viewer'].layerManager.managedLayers as any[]) // .filter(obj => obj.sourceUrl && /precomputed|nifti/.test(obj.sourceUrl)) .map(obj => ({ diff --git a/src/atlasViewer/atlasViewer.constantService.service.ts b/src/atlasViewer/atlasViewer.constantService.service.ts index d3e7a63ed..84a5de3a9 100644 --- a/src/atlasViewer/atlasViewer.constantService.service.ts +++ b/src/atlasViewer/atlasViewer.constantService.service.ts @@ -10,6 +10,7 @@ import { ViewerStateInterface, Property, FETCHED_METADATA } from "../services/st export class AtlasViewerConstantsServices{ public mobile: boolean + public loadExportNehubaPromise : Promise<boolean> public ngLandmarkLayerName = 'spatial landmark layer' public ngUserLandmarkLayerName = 'user landmark layer' diff --git a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts index dce915947..d9218a945 100644 --- a/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts +++ b/src/ui/nehubaContainer/nehubaViewer/nehubaViewer.component.ts @@ -1,6 +1,5 @@ -import { Component, AfterViewInit, OnDestroy, Output, EventEmitter, ElementRef, NgZone } from "@angular/core"; -import * as export_nehuba from 'third_party/export_nehuba/main.bundle.js' - +import { Component, OnDestroy, Output, EventEmitter, ElementRef, NgZone, Renderer2 } from "@angular/core"; +import 'third_party/export_nehuba/main.bundle.js' import 'third_party/export_nehuba/chunk_worker.bundle.js' import { fromEvent, interval, Observable } from 'rxjs' import { AtlasWorkerService } from "../../../atlasViewer/atlasViewer.workerService.service"; @@ -15,12 +14,13 @@ import { takeOnePipe, identifySrcElement } from "../nehubaContainer.component"; ] }) -export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ +export class NehubaViewerUnit implements OnDestroy{ @Output() debouncedViewerPositionChange : EventEmitter<any> = new EventEmitter() @Output() mouseoverSegmentEmitter : EventEmitter<any | number | null> = new EventEmitter() @Output() mouseoverLandmarkEmitter : EventEmitter<number | null> = new EventEmitter() @Output() regionSelectionEmitter : EventEmitter<any> = new EventEmitter() + @Output() errorEmitter : EventEmitter<any> = new EventEmitter() /* only used to set initial navigation state */ initNav : any @@ -56,12 +56,29 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ touchStart$ : Observable<any> constructor( + private rd: Renderer2, public elementRef:ElementRef, private workerService : AtlasWorkerService, private zone : NgZone, private constantService : AtlasViewerConstantsServices ){ - this.patchNG() + + if(!this.constantService.loadExportNehubaPromise){ + this.constantService.loadExportNehubaPromise = new Promise((resolve, reject) => { + const scriptEl = this.rd.createElement('script') + scriptEl.src = 'main.bundle.js' + scriptEl.onload = () => resolve(true) + scriptEl.onerror = (e) => reject(e) + this.rd.appendChild(window.document.head, scriptEl) + }) + } + + this.constantService.loadExportNehubaPromise + .then(() => { + this.patchNG() + this.loadNehuba() + }) + .catch(e => this.errorEmitter.emit(e)) this.ondestroySubscriptions.push( fromEvent(this.workerService.worker, 'message').pipe( @@ -266,10 +283,12 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ private viewportToDatas : [any, any, any] = [null, null, null] - public getNgHash : () => string = export_nehuba.getNgHash + public getNgHash : () => string = () => window['export_nehuba'] + ? window['export_nehuba'].getNgHash() + : null - ngAfterViewInit(){ - this.nehubaViewer = export_nehuba.createNehubaViewer(this.config, (err)=>{ + loadNehuba(){ + this.nehubaViewer = window['export_nehuba'].createNehubaViewer(this.config, (err)=>{ /* print in debug mode */ }) @@ -289,6 +308,8 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ window['nehubaViewer'] = this.nehubaViewer + this.onDestroyCb.push(() => window['nehubaViewer'] = null) + this.ondestroySubscriptions.push( fromEvent(this.elementRef.nativeElement, 'viewportToData').pipe( ...takeOnePipe @@ -349,8 +370,8 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ if(elementId === 0 || elementId === 1 || elementId === 2){ const {position} = this.nehubaViewer.ngviewer.navigationState const pos = position.spatialCoordinates - export_nehuba.vec3.set(pos, deltaX, deltaY, 0) - export_nehuba.vec3.transformMat4(pos, pos, this.viewportToDatas[elementId]) + window['export_nehuba'].vec3.set(pos, deltaX, deltaY, 0) + window['export_nehuba'].vec3.transformMat4(pos, pos, this.viewportToDatas[elementId]) position.changed.dispatch() }else if(elementId === 3){ const {perspectiveNavigationState} = this.nehubaViewer.ngviewer @@ -386,12 +407,17 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ if(_s$) _s$.unsubscribe() }) this.ondestroySubscriptions.forEach(s => s.unsubscribe()) + while(this.onDestroyCb.length > 0){ + this.onDestroyCb.pop()() + } this.nehubaViewer.dispose() } + private onDestroyCb : (()=>void)[] = [] + private patchNG(){ - const { LayerManager, UrlHashBinding } = export_nehuba.getNgPatchableObj() + const { LayerManager, UrlHashBinding } = window['export_nehuba'].getNgPatchableObj() UrlHashBinding.prototype.setUrlHash = () => { // console.log('seturl hash') @@ -409,6 +435,8 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ this.regionSelectionEmitter.emit(region) } } + + this.onDestroyCb.push(() => LayerManager.prototype.invokeAction = (arg) => {}) } private filterLayers(l:any,layerObj:any):boolean{ @@ -527,8 +555,8 @@ export class NehubaViewerUnit implements AfterViewInit,OnDestroy{ })) } - public vec3(pos:[number,number,number]){ - return export_nehuba.vec3.fromValues(...pos) + private vec3(pos:[number,number,number]){ + return window['export_nehuba'].vec3.fromValues(...pos) } public setNavigationState(newViewerState:Partial<ViewerState>){ diff --git a/third_party/export_nehuba/main.bundle.js b/third_party/export_nehuba/main.bundle.js index c94f0d78a..389df5d32 100644 --- a/third_party/export_nehuba/main.bundle.js +++ b/third_party/export_nehuba/main.bundle.js @@ -73,120 +73,119 @@ b){d=a;g=b});this.callWhenSettled_(c(a,d),c(b,g));return l};p.prototype.catch=fu c){for(var e=$jscomp.makeIterator(d),g=e.next();!g.done;g=e.next())a(g.value).callWhenSettled_(b,c)})};p.all=function(d){var b=$jscomp.makeIterator(d),c=b.next();return c.done?a([]):new p(function(d,g){function e(a){return function(b){k[a]=b;t--;0==t&&d(k)}}var k=[],t=0;do k.push(void 0),t++,a(c.value).callWhenSettled_(e(k.length-1),g),c=b.next();while(!c.done)})};return p},"es6","es3"); $jscomp.polyfill("Math.sign",function(h){return h?h:function(f){f=Number(f);return 0===f||isNaN(f)?f:0<f?1:-1}},"es6","es3");$jscomp.polyfill("Array.prototype.entries",function(h){return h?h:function(){return $jscomp.iteratorFromArray(this,function(f,a){return[f,a]})}},"es6","es3");$jscomp.polyfill("Array.prototype.findIndex",function(h){return h?h:function(f,a){return $jscomp.findInternal(this,f,a).i}},"es6","es3"); $jscomp.polyfill("Array.prototype.fill",function(h){return h?h:function(f,a,h){var p=this.length||0;0>a&&(a=Math.max(0,p+a));if(null==h||h>p)h=p;h=Number(h);0>h&&(h=Math.max(0,p+h));for(a=Number(a||0);a<h;a++)this[a]=f;return this}},"es6","es3"); -(function(h,f){"object"===typeof exports&&"object"===typeof module?module.exports=f():"function"===typeof define&&define.amd?define([],f):"object"===typeof exports?exports.exportNehuba=f():h.exportNehuba=f()})("undefined"!==typeof self?self:this,function(){return function(h){function f(q){if(a[q])return a[q].exports;var p=a[q]={i:q,l:!1,exports:{}};h[q].call(p.exports,p,p.exports,f);p.l=!0;return p.exports}var a={};f.m=h;f.c=a;f.d=function(a,h,n){f.o(a,h)||Object.defineProperty(a,h,{configurable:!1, -enumerable:!0,get:n})};f.n=function(a){var h=a&&a.__esModule?function(){return a["default"]}:function(){return a};f.d(h,"a",h);return h};f.o=function(a,f){return Object.prototype.hasOwnProperty.call(a,f)};f.p="";return f(f.s=226)}([function(h,f,a){var q=a(16),p=a(365),n=a(87);h=function(){function a(a){this._isScalar=!1;a&&(this._subscribe=a)}a.prototype.lift=function(b){var c=new a;c.source=this;c.operator=b;return c};a.prototype.subscribe=function(a,c,d){var b=this.operator;a=p.toSubscriber(a,c, -d);b?b.call(a,this.source):a.add(this.source?this._subscribe(a):this._trySubscribe(a));if(a.syncErrorThrowable&&(a.syncErrorThrowable=!1,a.syncErrorThrown))throw a.syncErrorValue;return a};a.prototype._trySubscribe=function(a){try{return this._subscribe(a)}catch(c){a.syncErrorThrown=!0,a.syncErrorValue=c,a.error(c)}};a.prototype.forEach=function(a,c){var b=this;c||(q.root.Rx&&q.root.Rx.config&&q.root.Rx.config.Promise?c=q.root.Rx.config.Promise:q.root.Promise&&(c=q.root.Promise));if(!c)throw Error("no Promise impl found"); -return new c(function(c,d){var e=b.subscribe(function(b){if(e)try{a(b)}catch(m){d(m),e.unsubscribe()}else a(b)},d,c)})};a.prototype._subscribe=function(a){return this.source.subscribe(a)};a.prototype[n.observable]=function(){return this};a.create=function(b){return new a(b)};return a}();f.Observable=h},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype, -{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function p(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}function n(a,b,c,d){a.addEventListener(b,c,d);return function(){return a.removeEventListener(b,c,d)}}a.d(f,"c",function(){return n});a.d(f,"a",function(){return b});a.d(f,"b",function(){return c});var d=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable= -d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),b=function(){function a(){p(this,a);this.refCount=1}d(a,[{key:"addRef",value:function(){++this.refCount;return this}},{key:"dispose",value:function(){0===--this.refCount&&this.refCountReachedZero()}},{key:"refCountReachedZero",value:function(){this.disposed();var a=this.disposers;if(null!=a){for(var b=a.length;0<b;--b){var c=a[b-1];"object"=== -typeof c?c.dispose():c.call(this)}this.disposers=void 0}this.wasDisposed=!0}},{key:"disposed",value:function(){}},{key:"registerDisposer",value:function(a){var b=this.disposers;null==b?this.disposers=[a]:b.push(a);return a}},{key:"unregisterDisposer",value:function(a){var b=this.disposers;if(null!=b){var c=b.indexOf(a);-1!==c&&b.splice(c,1)}return a}},{key:"registerEventListener",value:function(a,b,c,d){this.registerDisposer(n(a,b,c,d))}},{key:"registerCancellable",value:function(a){this.registerDisposer(function(){a.cancel()}); -return a}}]);return a}(),c=function(a){function b(a){p(this,b);var c=(b.__proto__||Object.getPrototypeOf(b)).call(this);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");c=!c||"object"!==typeof c&&"function"!==typeof c?this:c;c.value=a;return c}q(b,a);return b}(b)},function(h,f,a){function q(a,b){var c=Math.abs(a[b]),d=Math.abs(a[b+1]),g=Math.abs(a[b+2]),l=Math.max(c,d,g);1E-4>c/l&&(a[b]=0);1E-4>d/l&&(a[b+1]=0);1E-4>g/l&&(a[b+2]=0)}a.d(f,"b",function(){return n}); -f.l=function(a){return a[0]*a[1]*a[2]};f.t=function(a){return a[0]+","+a[1]+","+a[2]};f.o=function(a){q(a,0);q(a,4);q(a,8)};f.p=function(a,b,c){var d=b[0],g=b[1];b=b[2];a[0]=c[0]*d+c[4]*g+c[8]*b;a[1]=c[1]*d+c[5]*g+c[9]*b;a[2]=c[2]*d+c[6]*g+c[10]*b;return a};f.c=function(a,b){var c=b[0],d=b[1],g=b[2],l=b[4],k=b[5],t=b[6],m=b[8],r=b[9];b=b[10];a[0]=Math.sqrt(c*c+d*d+g*g);a[1]=Math.sqrt(l*l+k*k+t*t);a[2]=Math.sqrt(m*m+r*r+b*b);return a};f.q=function(a,b,c,e,g){a[0]=e[0];a[1]=e[1];a[2]=e[2]*g;return p.b.fromRotationTranslationScale(a, -c,b,a)};f.m=function(a,b,c,e){for(var d=p.e.squaredDistance(b,c),l=0,k=0;3>k;++k){var t=b[k];l-=(t-e[k])*(c[k]-t)}e=l/Math.max(d,1E-6);e=Math.max(0,Math.min(1,e));for(d=0;3>d;++d)l=b[d],a[d]=l+e*(c[d]-l);return a};f.j=function(a,b){var c=b[1],d=b[2],g=b[4],l=b[5],k=b[6],t=b[8],m=b[9],r=b[10];a[0]=b[0];a[1]=c;a[2]=d;a[3]=g;a[4]=l;a[5]=k;a[6]=t;a[7]=m;a[8]=r;return a};var p=a(132);h=a(14);a.d(f,"i",function(){return p.a});a.d(f,"k",function(){return p.b});a.d(f,"n",function(){return p.c});a.d(f,"r", -function(){return p.d});a.d(f,"s",function(){return p.e});a.d(f,"u",function(){return p.f});a=p.b.create();f.d=a;f.a=["x","y","z"];var n=function b(a,e){if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");this.lower=a;this.upper=e};a=[p.e.fromValues(1,0,0),p.e.fromValues(0,1,0),p.e.fromValues(0,0,1)];f.e=a;a=p.e.fromValues(0,0,0);f.h=a;a=p.e.fromValues(1,1,1);f.g=a;a=p.e.fromValues(Infinity,Infinity,Infinity);f.f=a;p.c.create();new h.a(1227133513,306783378);new h.a(3272356035, -818089008);new h.a(251719695,4027515120);new h.a(4278190335,16711680);new h.a(65535,16711680);new h.a(2097151,0)},function(h,f,a){var q=this&&this.__extends||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,new c)},p=a(85);h=a(11);var n=a(197),d=a(86);a=function(a){function c(d,e,k){a.call(this);this.syncErrorValue=null;this.isStopped=this.syncErrorThrowable=this.syncErrorThrown=!1;switch(arguments.length){case 0:this.destination= -n.empty;break;case 1:if(!d){this.destination=n.empty;break}if("object"===typeof d){d instanceof c?(this.destination=d,this.destination.add(this)):(this.syncErrorThrowable=!0,this.destination=new b(this,d));break}default:this.syncErrorThrowable=!0,this.destination=new b(this,d,e,k)}}q(c,a);c.prototype[d.rxSubscriber]=function(){return this};c.create=function(a,b,d){a=new c(a,b,d);a.syncErrorThrowable=!1;return a};c.prototype.next=function(a){this.isStopped||this._next(a)};c.prototype.error=function(a){this.isStopped|| -(this.isStopped=!0,this._error(a))};c.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())};c.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,a.prototype.unsubscribe.call(this))};c.prototype._next=function(a){this.destination.next(a)};c.prototype._error=function(a){this.destination.error(a);this.unsubscribe()};c.prototype._complete=function(){this.destination.complete();this.unsubscribe()};c.prototype._unsubscribeAndRecycle=function(){var a=this._parent, -b=this._parents;this._parents=this._parent=null;this.unsubscribe();this.isStopped=this.closed=!1;this._parent=a;this._parents=b;return this};return c}(h.Subscription);f.Subscriber=a;var b=function(a){function b(b,c,d,e){a.call(this);this._parentSubscriber=b;b=this;if(p.isFunction(c))var g=c;else c&&(g=c.next,d=c.error,e=c.complete,c!==n.empty&&(b=Object.create(c),p.isFunction(b.unsubscribe)&&this.add(b.unsubscribe.bind(b)),b.unsubscribe=this.unsubscribe.bind(this)));this._context=b;this._next=g;this._error= -d;this._complete=e}q(b,a);b.prototype.next=function(a){if(!this.isStopped&&this._next){var b=this._parentSubscriber;b.syncErrorThrowable?this.__tryOrSetError(b,this._next,a)&&this.unsubscribe():this.__tryOrUnsub(this._next,a)}};b.prototype.error=function(a){if(!this.isStopped){var b=this._parentSubscriber;if(this._error)b.syncErrorThrowable?this.__tryOrSetError(b,this._error,a):this.__tryOrUnsub(this._error,a),this.unsubscribe();else if(b.syncErrorThrowable)b.syncErrorValue=a,b.syncErrorThrown=!0, -this.unsubscribe();else throw this.unsubscribe(),a;}};b.prototype.complete=function(){var a=this;if(!this.isStopped){var b=this._parentSubscriber;if(this._complete){var c=function(){return a._complete.call(a._context)};b.syncErrorThrowable?this.__tryOrSetError(b,c):this.__tryOrUnsub(c)}this.unsubscribe()}};b.prototype.__tryOrUnsub=function(a,b){try{a.call(this._context,b)}catch(k){throw this.unsubscribe(),k;}};b.prototype.__tryOrSetError=function(a,b,c){try{b.call(this._context,c)}catch(t){return a.syncErrorValue= -t,a.syncErrorThrown=!0}return!1};b.prototype._unsubscribe=function(){var a=this._parentSubscriber;this._parentSubscriber=this._context=null;a.unsubscribe()};return b}(a)},function(h,f,a){function q(a){var b=typeof a;if("number"===b||"string"===b)if(b=parseFloat(""+a),!Number.isNaN(b))return b;throw Error("Expected floating-point number, but received: "+JSON.stringify(a)+".");}function p(a){a=q(a);if(Number.isFinite(a))return a;throw Error("Expected finite floating-point number, but received: "+a+ -".");}function n(a){a=p(a);if(0<a)return a;throw Error("Expected positive finite floating-point number, but received: "+a+".");}function d(a){if("object"===typeof a){if(null===a)return"null";if(Array.isArray(a)){var b="[",c=a.length,e=0;if(e<c)for(b+=d(a[e]);++e<c;)b+=",",b+=d(a[e]);return b+"]"}b="{";c=Object.keys(a).sort();e=0;var g=c.length;if(e<g){var k=c[e];b+=JSON.stringify(k);for(b=b+":"+d(a[k]);++e<g;)b+=",",k=c[e],b+=JSON.stringify(k),b+=":",b+=d(a[k])}return b+"}"}return JSON.stringify(a)} -function b(a,b,c){var d=/[&_,]/g;if('"'===c){var e="'";var g=v;var k=r}else e='"',g=w,k=u;for(var m="";0<a.length;){var l=a.match(k);if(null===l){var t=a;l=a=""}else{t=a.substr(0,l.index);a=a.substr(l.index+l[0].length);var f=l[1];if(void 0!==f){var h=f;l=e;f=c;var x=g;if(2<=h.length&&h.charAt(0)===l&&h.charAt(h.length-1)===l){h=h.substr(1,h.length-2);for(var n=f;0<h.length;){var y=h.match(x);if(null===y){n+=h;break}n+=y[1];y[2]===f?(n+="\\",n+=f):n+=l;h=h.substr(y.index+y[0].length)}l=n+f}else l= -h}else l=l[2]}m+=t.replace(d,b);m+=l}return m}function c(a){return JSON.parse(b(a,",",'"'))}function e(a,b,c){var d=a.length;if(!Array.isArray(b)||b.length!==d)throw Error("Expected length "+d+" array, but received: "+JSON.stringify(b)+".");for(var e=0;e<d;++e)a[e]=c(b[e],e);return a}function g(a){if("object"!==typeof a||null==a||Array.isArray(a))throw Error("Expected JSON object, but received: "+JSON.stringify(a)+".");return a}function l(a){var b=parseInt(a,10);if(!Number.isInteger(b))throw Error("Expected integer, but received: "+ -JSON.stringify(a)+".");return b}function k(a){a=l(a);if(0>=a)throw Error("Expected positive integer, but received: "+a+".");return a}function t(a){if("string"!==typeof a)throw Error("Expected string, but received: "+JSON.stringify(a)+".");return a}f.p=q;f.n=p;f.o=n;f.f=function(a,b,c){c=void 0===c?q:c;g(b);a[0]=a[1]=a[2]=0;for(var d=$jscomp.makeIterator(Object.keys(b)),e=d.next();!e.done;e=d.next())switch(e=e.value,e){case "x":a[0]=c(b[e]);break;case "y":a[1]=c(b[e]);break;case "z":a[2]=c(b[e]);break; -default:throw Error("Expected object to have keys ['x', 'y', 'z'], but received: "+JSON.stringify(b)+".");}return a};f.b=function(a,b){var c=a.length;if(!Array.isArray(b)||b.length!==c)throw Error("Incompatible sizes");for(var d=0;d<c;++d)if(!Number.isFinite(parseFloat(b[d])))throw Error("Non-finite value.");for(d=0;d<c;++d)a[d]=parseFloat(b[d]);return a};f.d=function(a,b){var c=a.length;if(!Array.isArray(b)||b.length!==c)throw Error("Incompatible sizes.");for(var d=0;d<c;++d){var e=parseInt(b[d], -void 0);if(!Number.isInteger(e))throw Error("Non-integer value.");}for(d=0;d<c;++d)a[d]=parseInt(b[d],void 0);return a};f.g=d;f.h=c;f.a=function(a,b){if(!Array.isArray(a))throw Error("Expected array, but received: "+JSON.stringify(a)+".");return a.map(b)};f.c=e;f.t=g;f.r=l;f.z=k;f.s=function(a,b){var c=b.get(a);if(void 0===c)throw Error("Expected one of "+JSON.stringify(Array.from(b.keys()))+", "+("but received: "+JSON.stringify(a)+"."));return c};f.A=t;f.y=function(a){if(void 0!==a)return t(a)}; -f.x=function(a){if(void 0!==a)return l(a)};f.w=function(a){if(void 0!==a){if("boolean"===typeof a)return a;if("true"===a)return!0;if("false"===a)return!1;throw Error("Expected string or boolean but received: "+JSON.stringify(a));}};f.v=function(a,b,c){a=a.hasOwnProperty(b)?a[b]:void 0;try{return c(a)}catch(z){throw Error("Error parsing "+JSON.stringify(b)+" property: "+z.message);}};f.u=function(a,b){g(a);for(var c=new Map,d=$jscomp.makeIterator(Object.keys(a)),e=d.next();!e.done;e=d.next()){e=e.value; -try{c.set(e,b(a[e]))}catch(E){throw Error("Error parsing value associated with key "+JSON.stringify(e)+": "+E.message);}}return c};f.q=function(a){if("number"!==typeof a||!Number.isFinite(a)||0>a||1<a)throw Error("Expected floating point number in [0,1], but received: "+JSON.stringify(a)+".");return a};f.e=function(a){if(""===a)return{};if(a.startsWith("{"))return c(a);var b={};a=a.split(/[&;]/);a=$jscomp.makeIterator(a);for(var d=a.next();!d.done;d=a.next()){d=d.value;var e=d.match(/^([^=&;]+)=([^&;]*)$/); -if(null===e)throw Error("Invalid query string part: "+JSON.stringify(d)+".");b[e[1]]=decodeURIComponent(e[2])}return b};f.m=function(a,b){if("string"===typeof a&&null!==a.match(/^[a-zA-Z]/)&&(a=a.toUpperCase(),b.hasOwnProperty(a)))return b[a];throw Error("Invalid enum value: "+JSON.stringify(a)+".");};f.k=function(a){return e(m.s.create(),a,p)};f.j=function(a){return e(m.s.create(),a,n)};f.i=function(a){return e(m.s.create(),a,k)};f.l=function(a){if("boolean"!==typeof a)throw Error("Expected boolean, received: "+ -JSON.stringify(a));return a};var m=a(2);h=/('(?:[^'\\]|(?:\\.))*')/;f=/("(?:[^'\\]|(?:\\.))*")/;var r=new RegExp(h.source+"|"+f.source),u=new RegExp(f.source+"|"+h.source),v=/^((?:[^"'\\]|(?:\\[^']))*)("|\\')/,w=/^((?:[^"'\\]|(?:\\.))*)'/},function(h,f,a){var q=this&&this.__extends||function(a,f){function d(){this.constructor=a}for(var b in f)f.hasOwnProperty(b)&&(a[b]=f[b]);a.prototype=null===f?Object.create(f):(d.prototype=f.prototype,new d)};h=function(a){function f(){a.apply(this,arguments)}q(f, -a);f.prototype.notifyNext=function(a,b,c,e,g){this.destination.next(b)};f.prototype.notifyError=function(a,b){this.destination.error(a)};f.prototype.notifyComplete=function(a){this.destination.complete()};return f}(a(3).Subscriber);f.OuterSubscriber=h},function(h,f,a){var q=a(16),p=a(199),n=a(200),d=a(195),b=a(0),c=a(68),e=a(374),g=a(87);f.subscribeToResult=function(a,k,t,m){var l=new e.InnerSubscriber(a,t,m);if(l.closed)return null;if(k instanceof b.Observable)if(k._isScalar)l.next(k.value),l.complete(); -else return k.subscribe(l);else if(p.isArrayLike(k)){a=0;for(t=k.length;a<t&&!l.closed;a++)l.next(k[a]);l.closed||l.complete()}else{if(n.isPromise(k))return k.then(function(a){l.closed||(l.next(a),l.complete())},function(a){return l.error(a)}).then(null,function(a){q.root.setTimeout(function(){throw a;})}),l;if(k&&"function"===typeof k[c.iterator]){k=k[c.iterator]();do{a=k.next();if(a.done){l.complete();break}l.next(a.value);if(l.closed)break}while(1)}else if(k&&"function"===typeof k[g.observable])if(k= -k[g.observable](),"function"!==typeof k.subscribe)l.error(new TypeError("Provided object does not correctly implement Symbol.observable"));else return k.subscribe(new e.InnerSubscriber(a,t,m));else k=d.isObject(k)?"an invalid object":"'"+k+"'",l.error(new TypeError("You provided "+k+" where a stream was expected. You can provide an Observable, Promise, Array, or Iterable."))}return null}},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+ -typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function p(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}a.d(f,"b",function(){return d});a.d(f,"a",function(){return b});var n=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a, -d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),d=function(){function a(){p(this,a);this.handlers=new Set;this.count=0;var b=this;this.dispatch=function(){var a=this,c=arguments;++b.count;b.handlers.forEach(function(b){b.apply(a,c)})}}n(a,[{key:"add",value:function(a){var b=this;this.handlers.add(a);return function(){return b.remove(a)}}},{key:"remove",value:function(a){return this.handlers.delete(a)}},{key:"dispose",value:function(){this.handlers=void 0}}]);return a}(), -b=function(a){function b(){p(this,b);var a=(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!a||"object"!==typeof a&&"function"!==typeof a?this:a}q(b,a);return b}(d)},function(h,f,a){f.a=function(a){for(;;){var f=a.firstElementChild;if(!f)break;a.removeChild(f)}};f.b=function(a){var f=a.parentElement;return f?(f.removeChild(a),!0):!1}},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); -return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function n(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}a.d(f,"f",function(){return l});a.d(f, -"c",function(){return k});f.g=function(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];return new t(a,c)};a.d(f,"a",function(){return m});a.d(f,"d",function(){return r});a.d(f,"b",function(){return u});a.d(f,"e",function(){return v});f.h=function(a,c){function e(){g=a.value;k=new b.a;c(k,g)}var g,k,m=d()(function(){a.value!==g&&(k.dispose(),e())},0),l=a.changed.add(m);e();return function(){m.cancel();l();k.dispose()}};h=a(10);var d=a.n(h),b=a(1),c=a(7),e=function y(a,b,c){null=== -a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return y(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),l=function(){function a(b){n(this,a); -this.value_=b;this.changed=new c.a}g(a,[{key:"value",get:function(){return this.value_},set:function(a){a!==this.value_&&(this.value_=a,this.changed.dispatch())}}]);return a}(),k=function(a){function b(a,c,d){d=void 0===d?a:d;n(this,b);a=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a));a.validator=c;a.defaultValue=d;return a}p(b,a);g(b,[{key:"toJSON",value:function(){if(this.value_!==this.defaultValue)return this.value_}},{key:"reset",value:function(){this.value=this.defaultValue}},{key:"restoreState", -value:function(a){if(void 0!==a){var b=this.validator;try{this.value=b(a);return}catch(D){}}this.value=this.defaultValue}}]);return b}(l),t=function(a){function b(a,d){n(this,b);var e=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));e.changed=new c.a;e.f=a;e.ws=d;a=$jscomp.makeIterator(d);for(d=a.next();!d.done;d=a.next())e.registerDisposer(d.value.changed.add(e.changed.dispatch));return e}p(b,a);g(b,[{key:"value",get:function(){return this.f.apply(this,[].concat($jscomp.arrayFromIterable(this.ws.map(function(a){return a.value}))))}}]); -return b}(b.a),m=function(a){function b(a,d){for(var e=[],g=1;g<arguments.length;++g)e[g-1]=arguments[g];n(this,b);g=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));g.f=a;g.changed=new c.a;e=$jscomp.makeIterator(e);for(var k=e.next();!k.done;k=e.next())g.registerDisposer(k.value.add(g.changed.dispatch));return g}p(b,a);g(b,[{key:"value",get:function(){return this.f()}}]);return b}(b.a),r=function(a){function b(){n(this,b);var a=q(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this, -arguments));a.changed=new c.a;return a}p(b,a);g(b,[{key:"reset",value:function(){this.value=void 0}},{key:"disposed",value:function(){void 0!==this.value_&&this.value_.dispose();this.value_=void 0;e(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"value",get:function(){return this.value_},set:function(a){var b=this,c=this.value_;this.value_=a;void 0!==c&&(c.dispose(),this.valueHandler=void 0);if(void 0!==a){var d=this.valueHandler=function(){b.value_=== -a&&(b.value_=void 0,b.changed.dispatch())};a.registerDisposer(d)}a!==c&&this.changed.dispatch()}}]);return b}(b.a),u=function(a){function b(a,c){n(this,b);var d=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));d.validator=a;d.jsonConverter=c;return d}p(b,a);g(b,[{key:"toJSON",value:function(){var a=this.value;return a&&this.jsonConverter(a)}},{key:"restoreState",value:function(a){this.value=this.validator(a)}}]);return b}(r),v=function(){function a(b){n(this,a);this.changed=new c.a;this.values= -void 0===b?new Set:new Set(b)}$jscomp.initSymbol();$jscomp.initSymbolIterator();g(a,[{key:"add",value:function(a){var b=this.values;b.has(a)||(b.add(a),this.changed.dispatch());return this}},{key:"delete",value:function(a){return this.values.delete(a)?(this.changed.dispatch(),!0):!1}},{key:"has",value:function(a){return this.values.has(a)}},{key:Symbol.iterator,value:function(){$jscomp.initSymbol();$jscomp.initSymbolIterator();return this.values[Symbol.iterator]()}},{key:"clear",value:function(){var a= -this.values;0<a.size&&(a.clear(),this.changed.dispatch())}},{key:"size",get:function(){return this.values.size}}]);return a}()},function(h,f,a){var q=a(96),p=a(235),n=a(237),d=Math.max,b=Math.min;h.exports=function(a,e,g){function c(b){var c=u,d=v;u=v=void 0;A=b;return f=a.apply(d,c)}function k(a){var b=a-x;a-=A;return void 0===x||b>=e||0>b||D&&a>=G}function t(){var a=p();if(k(a))return m(a);var c=setTimeout;var d=a-A;a=e-(a-x);d=D?b(a,G-d):a;h=c(t,d)}function m(a){h=void 0;if(E&&u)return c(a);u= -v=void 0;return f}function r(){var a=p(),b=k(a);u=arguments;v=this;x=a;if(b){if(void 0===h)return A=a=x,h=setTimeout(t,e),z?c(a):f;if(D)return h=setTimeout(t,e),c(x)}void 0===h&&(h=setTimeout(t,e));return f}var u,v,f,h,x,A=0,z=!1,D=!1,E=!0;if("function"!=typeof a)throw new TypeError("Expected a function");e=n(e)||0;if(q(g)){z=!!g.leading;var G=(D="maxWait"in g)?d(n(g.maxWait)||0,e):G;E="trailing"in g?!!g.trailing:E}r.cancel=function(){void 0!==h&&clearTimeout(h);A=0;u=x=v=h=void 0};r.flush=function(){return void 0=== -h?f:m(p())};return r}},function(h,f,a){function q(a){return a.reduce(function(a,b){return a.concat(b instanceof e.UnsubscriptionError?b.errors:b)},[])}var p=a(36),n=a(195),d=a(85),b=a(17),c=a(13),e=a(196);h=function(){function a(a){this.closed=!1;this._subscriptions=this._parents=this._parent=null;a&&(this._unsubscribe=a)}a.prototype.unsubscribe=function(){var a=!1;if(!this.closed){var g=this._parent;var t=this._parents,m=this._unsubscribe,r=this._subscriptions;this.closed=!0;this._subscriptions= -this._parents=this._parent=null;for(var u=-1,v=t?t.length:0;g;)g.remove(this),g=++u<v&&t[u]||null;if(d.isFunction(m)&&(g=b.tryCatch(m).call(this),g===c.errorObject)){a=!0;var f=f||(c.errorObject.e instanceof e.UnsubscriptionError?q(c.errorObject.e.errors):[c.errorObject.e])}if(p.isArray(r))for(u=-1,v=r.length;++u<v;)g=r[u],n.isObject(g)&&(g=b.tryCatch(g.unsubscribe).call(g),g===c.errorObject&&(a=!0,f=f||[],g=c.errorObject.e,g instanceof e.UnsubscriptionError?f=f.concat(q(g.errors)):f.push(g)));if(a)throw new e.UnsubscriptionError(f); -}};a.prototype.add=function(b){if(!b||b===a.EMPTY)return a.EMPTY;if(b===this)return this;var c=b;switch(typeof b){case "function":c=new a(b);case "object":if(c.closed||"function"!==typeof c.unsubscribe)return c;if(this.closed)return c.unsubscribe(),c;"function"!==typeof c._addParent&&(b=c,c=new a,c._subscriptions=[b]);break;default:throw Error("unrecognized teardown "+b+" added to Subscription.");}(this._subscriptions||(this._subscriptions=[])).push(c);c._addParent(this);return c};a.prototype.remove= -function(a){var b=this._subscriptions;b&&(a=b.indexOf(a),-1!==a&&b.splice(a,1))};a.prototype._addParent=function(a){var b=this._parent,c=this._parents;b&&b!==a?c?-1===c.indexOf(a)&&c.push(a):this._parents=[a]:this._parent=a};a.EMPTY=function(a){a.closed=!0;return a}(new a);return a}();f.Subscription=h},function(h,f,a){var q=this&&this.__extends||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype, -new c)},p=a(0);h=a(3);var n=a(11),d=a(88),b=a(198),c=a(86),e=function(a){function b(b){a.call(this,b);this.destination=b}q(b,a);return b}(h.Subscriber);f.SubjectSubscriber=e;a=function(a){function k(){a.call(this);this.observers=[];this.hasError=this.isStopped=this.closed=!1;this.thrownError=null}q(k,a);k.prototype[c.rxSubscriber]=function(){return new e(this)};k.prototype.lift=function(a){var b=new g(this,this);b.operator=a;return b};k.prototype.next=function(a){if(this.closed)throw new d.ObjectUnsubscribedError; -if(!this.isStopped){var b=this.observers,c=b.length;b=b.slice();for(var e=0;e<c;e++)b[e].next(a)}};k.prototype.error=function(a){if(this.closed)throw new d.ObjectUnsubscribedError;this.hasError=!0;this.thrownError=a;this.isStopped=!0;var b=this.observers,c=b.length;b=b.slice();for(var e=0;e<c;e++)b[e].error(a);this.observers.length=0};k.prototype.complete=function(){if(this.closed)throw new d.ObjectUnsubscribedError;this.isStopped=!0;var a=this.observers,b=a.length;a=a.slice();for(var c=0;c<b;c++)a[c].complete(); -this.observers.length=0};k.prototype.unsubscribe=function(){this.closed=this.isStopped=!0;this.observers=null};k.prototype._trySubscribe=function(b){if(this.closed)throw new d.ObjectUnsubscribedError;return a.prototype._trySubscribe.call(this,b)};k.prototype._subscribe=function(a){if(this.closed)throw new d.ObjectUnsubscribedError;if(this.hasError)return a.error(this.thrownError),n.Subscription.EMPTY;if(this.isStopped)return a.complete(),n.Subscription.EMPTY;this.observers.push(a);return new b.SubjectSubscription(this, -a)};k.prototype.asObservable=function(){var a=new p.Observable;a.source=this;return a};k.create=function(a,b){return new g(a,b)};return k}(p.Observable);f.Subject=a;var g=function(a){function b(b,c){a.call(this);this.destination=b;this.source=c}q(b,a);b.prototype.next=function(a){var b=this.destination;b&&b.next&&b.next(a)};b.prototype.error=function(a){var b=this.destination;b&&b.error&&this.destination.error(a)};b.prototype.complete=function(){var a=this.destination;a&&a.complete&&this.destination.complete()}; -b.prototype._subscribe=function(a){return this.source?this.source.subscribe(a):n.Subscription.EMPTY};return b}(a);f.AnonymousSubject=g},function(h,f,a){f.errorObject={e:{}}},function(h,f,a){a.d(f,"a",function(){return e});var q=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),p=new Uint32Array(2),n=[];for(h= -2;36>=h;++h){f=Math.floor(32/Math.log2(h));a=Math.pow(h,f);var d=Math.floor(f/2),b=Math.pow(h,d);d=Math.pow(h,f-d);var c="^[0-"+String.fromCharCode(48+Math.min(9,h-1));10<h&&(c+="a-"+String.fromCharCode(97+h-11),c+="A-"+String.fromCharCode(65+h-11));c+="]{1,"+Math.ceil(64/Math.log2(h))+"}$";n[h]={lowDigits:f,lowBase:a,lowBase1:b,lowBase2:d,pattern:new RegExp(c)}}var e=function(){function a(b,c){b=void 0===b?0:b;c=void 0===c?0:c;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function"); -this.low=b;this.high=c}q(a,[{key:"clone",value:function(){return new a(this.low,this.high)}},{key:"assign",value:function(a){this.low=a.low;this.high=a.high}},{key:"toString",value:function(a){a=void 0===a?10:a;var b=this.low,c=this.high;if(0===c)return b.toString(a);c*=4294967296;var d=n[a],e=d.lowBase;d=d.lowDigits;var g=c%e;c=Math.floor(c/e);b+=g;c+=Math.floor(b/e);b=(b%e).toString(a);return c.toString(a)+"0".repeat(d-b.length)+b}},{key:"tryParseString",value:function(a,b){b=void 0===b?10:b;var c= -n[b],d=c.lowDigits,e=c.lowBase,g=c.lowBase1,k=c.lowBase2;if(!c.pattern.test(a))return!1;if(a.length<=d)return this.low=parseInt(a,b),this.high=0,!0;d=a.length-d;c=parseInt(a.substr(d),b);a=parseInt(a.substr(0,d),b);e=Math.floor(a*e/4294967296);g=c+a%4294967296*g%4294967296*k%4294967296;4294967296<=g&&(++e,g-=4294967296);if(g>>>0!==g||e>>>0!==e)return!1;this.low=g;this.high=e;return!0}},{key:"parseString",value:function(a,b){if(!this.tryParseString(a,void 0===b?10:b))throw Error("Failed to parse string as uint64 value: "+ -JSON.stringify(a)+".");return this}},{key:"valid",value:function(){var a=this.low,b=this.high;return a>>>0===a&&b>>>0===b}},{key:"toJSON",value:function(){return this.toString()}},{key:"lshift",value:function(b){b&=63;if(0==b)return this.clone();var c=this.low,d=this.high;return 32>b?new a(c<<b,d<<b|c>>>32-b):new a(0,c<<b-32)}},{key:"rshift",value:function(b){b&=63;if(0==b)return this.clone();var c=this.low,d=this.high;return 32>b?new a(c>>>b|d<<32-b,d>>b):new a(d>>b-32,0<=d?0:-1)}},{key:"or",value:function(b){return new a(this.low| -b.low,this.high|b.high)}},{key:"xor",value:function(b){return new a(this.low^b.low,this.high^b.high)}},{key:"and",value:function(b){return new a(this.low&b.low,this.high&b.high)}}],[{key:"less",value:function(a,b){return a.high<b.high||a.high===b.high&&a.low<b.low}},{key:"compare",value:function(a,b){return a.high-b.high||a.low-b.low}},{key:"equal",value:function(a,b){return a.low===b.low&&a.high===b.high}},{key:"min",value:function(b,c){return a.less(b,c)?b:c}},{key:"random",value:function(){crypto.getRandomValues(p); -return new a(p[0],p[1])}},{key:"parseString",value:function(b,c){c=void 0===c?10:c;return(new a).parseString(b,c)}}]);return a}();e.ZERO=new e(0,0)},function(h,f,a){function q(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}function p(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function n(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+ -typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function d(a,b){l.set(a,b)}f.e=d;f.d=function(a,c){d(a,function(a){var d=this,e=a.id,g=new b.b;a=c.call(this,a,g);this.set(e,{promise:a,cancellationToken:g});a.then(function(a){var b=a.value;a=a.transfers;d.delete(e);d.invoke("rpc.promise.response",{id:e,value:b},a)},function(a){d.delete(e);d.invoke("rpc.promise.response", -{id:e,error:a.message,errorName:a.name})})})};a.d(f,"a",function(){return m});a.d(f,"b",function(){return r});a.d(f,"c",function(){return u});f.g=function(a){return function(b){b.prototype.RPC_TYPE_ID=a}};f.f=function(a){return function(b){if(void 0!==a)b.prototype.RPC_TYPE_ID=a;else if(a=b.prototype.RPC_TYPE_ID,void 0===a)throw Error("RPC_TYPE_ID should have already been defined");v.set(a,b)}};var b=a(32);h=a(1);var c=function y(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a, -b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return y(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),g=!("undefined"!==typeof Window&&self instanceof Window),l=new Map,k=function(a){function b(a,c){q(this, -b);var d=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,c));d.name=a;d.message=c;return d}n(b,a);return b}(Error);d("rpc.promise.cancel",function(a){this.get(a.id).cancellationToken.cancel()});d("rpc.promise.response",function(a){var c=a.id,d=this.get(c),e=d.resolve;d=d.reject;this.delete(c);a.hasOwnProperty("value")?e(a.value):a.errorName===b.a.name?d(b.a):d(new k(a.errorName,a.error))});var t=g?-1:0,m=function(){function a(b){var c=this;q(this,a);this.target=b;this.objects=new Map;this.nextId= -t;b.onmessage=function(a){a=a.data;l.get(a.functionName).call(c,a)}}e(a,[{key:"set",value:function(a,b){this.objects.set(a,b)}},{key:"delete",value:function(a){this.objects.delete(a)}},{key:"get",value:function(a){return this.objects.get(a)}},{key:"getRef",value:function(a){var b=this.get(a.id);b.referencedGeneration=a.gen;b.addRef();return b}},{key:"invoke",value:function(a,b,c){b.functionName=a;this.target.postMessage(b,c)}},{key:"promiseInvoke",value:function(a,c,d,e){var g=this;d=void 0===d?b.e: -d;return Object(b.d)(d,function(b,d,m){var k=c.id=g.newId();g.set(k,{resolve:b,reject:d});g.invoke(a,c,e);m.add(function(){g.invoke("rpc.promise.cancel",{id:k})})})}},{key:"newId",value:function(){return g?this.nextId--:this.nextId++}},{key:"numObjects",get:function(){return this.objects.size}}]);return a}(),r=function(a){function b(){q(this,b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments));a.rpc=null;a.rpcId=null;return a}n(b,a);e(b,[{key:"initializeSharedObject",value:function(a, -b){b=void 0===b?a.newId():b;this.rpc=a;this.rpcId=b;this.isOwner=!1;a.set(b,this)}},{key:"initializeCounterpart",value:function(a,b){b=void 0===b?{}:b;this.initializeSharedObject(a);this.referencedGeneration=this.unreferencedGeneration=0;this.isOwner=!0;b.id=this.rpcId;b.type=this.RPC_TYPE_ID;a.invoke("SharedObject.new",b)}},{key:"dispose",value:function(){c(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"dispose",this).call(this)}},{key:"addCounterpartRef",value:function(){return{id:this.rpcId, -gen:++this.referencedGeneration}}},{key:"refCountReachedZero",value:function(){!0===this.isOwner?this.referencedGeneration===this.unreferencedGeneration&&this.ownerDispose():!1===this.isOwner?this.rpc.invoke("SharedObject.refCountReachedZero",{id:this.rpcId,gen:this.referencedGeneration}):c(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"refCountReachedZero",this).call(this)}},{key:"ownerDispose",value:function(){var a=this.rpc,d=this.rpcId;c(b.prototype.__proto__||Object.getPrototypeOf(b.prototype), -"refCountReachedZero",this).call(this);a.delete(d);a.invoke("SharedObject.dispose",{id:d})}},{key:"counterpartRefCountReachedZero",value:function(a){this.unreferencedGeneration=a;0===this.refCount&&a===this.referencedGeneration&&this.ownerDispose()}}]);return b}(h.a),u=function(a){function b(a,c){c=void 0===c?{}:c;q(this,b);var d=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));c=void 0===c?{}:c;null!=a&&d.initializeSharedObject(a,c.id);return d}n(b,a);return b}(r);d("SharedObject.dispose", -function(a){a=this.get(a.id);if(0!==a.refCount)throw Error("Attempted to dispose object with non-zero reference count.");a.disposed();this.delete(a.rpcId);a.rpcId=null;a.rpc=null});d("SharedObject.refCountReachedZero",function(a){this.get(a.id).counterpartRefCountReachedZero(a.gen)});var v=new Map;d("SharedObject.new",function(a){--(new (v.get(a.type))(this,a)).refCount})},function(h,f,a){h=a(74);a="undefined"!==typeof self&&"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&& -self;h="undefined"!==typeof window&&window||"undefined"!==typeof h&&h||a;f.root=h;if(!h)throw Error("RxJS could not find any global context (window, self, global)");},function(h,f,a){function q(){try{return n.apply(this,arguments)}catch(d){return p.errorObject.e=d,p.errorObject}}var p=a(13),n;f.tryCatch=function(a){n=a;return q}},function(h,f,a){function q(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}function p(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); -return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function n(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"g",function(){return y});f.k=function(){return new c.e([y.DATA,y.ANNOTATION,y.DEFAULT_ANNOTATION])};a.d(f,"f",function(){return x}); -a.d(f,"j",function(){return A});a.d(f,"i",function(){return z});a.d(f,"d",function(){return D});a.d(f,"a",function(){return E});a.d(f,"e",function(){return G});a.d(f,"c",function(){return C});f.l=function(a,b,c,d,e){return d.registerDisposer(new B(a,b,c,function(a){var b=a.redrawNeeded.add(function(){return d.scheduleRedraw()}),c=e&&e(a);d.scheduleRedraw();return function(){void 0!==c&&c();b();d.scheduleRedraw()}},d.visibility))};a.d(f,"h",function(){return F});a.d(f,"b",function(){return L});h=a(10); -var d=a.n(h);h=a(243);var b=a.n(h),c=a(9),e=a(139);h=a(1);var g=a(2),l=a(4),k=a(7),t=a(244),m=a(14),r=a(29),u=a(40),v=function O(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return O(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},w=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable= -!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),y;(function(a){a[a.DATA=0]="DATA";a[a.ANNOTATION=1]="ANNOTATION";a[a.DEFAULT_ANNOTATION=2]="DEFAULT_ANNOTATION"})(y||(y={}));var x=function(a){function b(){q(this,b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments));a.ready=!1;a.role=y.DATA;a.layerChanged=new k.a;a.redrawNeeded=new k.a;a.readyStateChanged=new k.a;a.voxelSize=null;a.boundingBox=null;return a}n(b,a);w(b, -[{key:"setReady",value:function(a){this.ready=a;this.readyStateChanged.dispatch();this.layerChanged.dispatch()}},{key:"handleAction",value:function(a){}},{key:"getValueAt",value:function(a){}},{key:"transformPickedValue",value:function(a,b){return a}},{key:"updateMouseState",value:function(a,b,c,d){}}]);return b}(h.a),A=function(a){function b(){q(this,b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments));a.visibility=new r.a;return a}n(b,a);return b}(x),z=function(a){function b(a, -d){q(this,b);var g=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));g.manager=a;g.layersChanged=new k.a;g.readyStateChanged=new k.a;g.specificationChanged=new k.a;g.renderLayers=[];g.isReady=!1;g.tabs=g.registerDisposer(new u.c);g.tool=g.registerDisposer(new c.b(function(a){return Object(e.c)(g,a)},function(a){return a.toJSON()}));d;g.tabs.changed.add(g.specificationChanged.dispatch);g.tool.changed.add(g.specificationChanged.dispatch);return g}n(b,a);w(b,[{key:"restoreState",value:function(a){this.tool.restoreState(a.tool); -this.tabs.restoreState(a.tab)}},{key:"addRenderLayer",value:function(a){this.renderLayers.push(a);var b=this.layersChanged,c=this.readyStateChanged;a.layerChanged.add(b.dispatch);a.readyStateChanged.add(c.dispatch);c.dispatch();b.dispatch()}},{key:"removeRenderLayer",value:function(a){var b=this.renderLayers,c=this.layersChanged,d=this.readyStateChanged,e=b.indexOf(a);if(-1===e)throw Error("Attempted to remove invalid RenderLayer");b.splice(e,1);a.layerChanged.remove(c.dispatch);a.readyStateChanged.remove(d.dispatch); -a.dispose();d.dispatch();c.dispatch()}},{key:"disposed",value:function(){for(var a=this.layersChanged,c=this.readyStateChanged,d=$jscomp.makeIterator(this.renderLayers),e=d.next();!e.done;e=d.next())e=e.value,e.layerChanged.remove(a.dispatch),e.readyStateChanged.remove(c.dispatch),e.dispose();v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"getValueAt",value:function(a,b){var c=this.renderLayers,d=b.pickedRenderLayer;if(null!==d&&-1!==c.indexOf(d)){var e= -d.transformPickedValue(b.pickedValue,b.pickedOffset);return this.transformPickedValue(e)}b=$jscomp.makeIterator(c);for(c=b.next();!c.done&&(c=c.value,!c.ready||(e=c.getValueAt(a),void 0===e));c=b.next());return this.transformPickedValue(e)}},{key:"transformPickedValue",value:function(a){return a}},{key:"toJSON",value:function(){var a={};return a.tab=this.tabs.toJSON(),a.tool=this.tool.toJSON(),a}},{key:"handleAction",value:function(a){}}]);return b}(h.a),D=function(a){function b(a,c,d){c=void 0=== -c?null:c;d=void 0===d?!0:d;q(this,b);var e=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));e.visible=d;e.readyStateChanged=new k.a;e.layerChanged=new k.a;e.specificationChanged=new k.a;e.wasDisposed=!1;e.layer_=null;e.name_=a;e.layer=c;return e}n(b,a);w(b,[{key:"isReady",value:function(){var a=this.layer;return null!==a&&a.isReady}},{key:"handleLayerChanged",value:function(){this.visible&&this.layerChanged.dispatch()}},{key:"setVisible",value:function(a){a!==this.visible&&(this.visible= -a,this.layerChanged.dispatch())}},{key:"disposed",value:function(){this.wasDisposed=!0;this.layer=null;v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"layer",get:function(){return this.layer_},set:function(a){var b=this,c=this.layer_;null!=c&&(this.unregisterUserLayer(),c.dispose());this.layer_=a;if(null!=a){var d=[a.layersChanged.add(function(){return b.handleLayerChanged()}),a.readyStateChanged.add(this.readyStateChanged.dispatch),a.specificationChanged.add(this.specificationChanged.dispatch)]; -this.unregisterUserLayer=function(){d.forEach(function(a){return a()})};this.readyStateChanged.dispatch();this.handleLayerChanged()}}},{key:"name",get:function(){return this.name_},set:function(a){a!==this.name_&&(this.name_=a,this.layerChanged.dispatch())}}]);return b}(h.a),E=function(a){function b(){q(this,b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));a.managedLayers=[];a.layerSet=new Set;a.layersChanged=new k.a;a.readyStateChanged=new k.a;a.specificationChanged=new k.a;a.boundPositions= -new WeakSet;a.numDirectUsers=0;a.renderLayerToManagedLayerMapGeneration=-1;a.renderLayerToManagedLayerMap_=new Map;a.scheduleRemoveLayersWithSingleRef=a.registerCancellable(d()(function(){return a.removeLayersWithSingleRef()},0));a.layersChanged.add(a.scheduleRemoveLayersWithSingleRef);return a}n(b,a);w(b,[{key:"filter",value:function(a){var b=this,c=!1;this.managedLayers=this.managedLayers.filter(function(d){return a(d)?!0:(b.unbindManagedLayer(d),b.layerSet.delete(d),c=!0,!1)});c&&this.layersChanged.dispatch()}}, -{key:"removeLayersWithSingleRef",value:function(){0<this.numDirectUsers||this.filter(function(a){return 1!==a.refCount})}},{key:"updateSignalBindings",value:function(a,b){b(a.layerChanged,this.layersChanged.dispatch);b(a.readyStateChanged,this.readyStateChanged.dispatch);b(a.specificationChanged,this.specificationChanged.dispatch)}},{key:"useDirectly",value:function(){var a=this;1===++this.numDirectUsers&&this.layersChanged.remove(this.scheduleRemoveLayersWithSingleRef);return function(){0===--a.numDirectUsers&& -(a.layersChanged.add(a.scheduleRemoveLayersWithSingleRef),a.scheduleRemoveLayersWithSingleRef())}}},{key:"addManagedLayer",value:function(a,b){this.updateSignalBindings(a,t.a);this.layerSet.add(a);void 0===b&&(b=this.managedLayers.length);this.managedLayers.splice(b,0,a);this.layersChanged.dispatch();this.readyStateChanged.dispatch();return a}},{key:"addUserLayer",value:function(a,b,c){a=new D(a,b,c);return this.addManagedLayer(a)}},{key:"readyRenderLayers",value:function(){function a(a,l){for(;;)switch(b){case 0:m= -$jscomp.makeIterator(r.managedLayers),k=m.next();case 1:if(k.done){b=3;break}g=k.value;if(g.visible&&g.layer){b=4;break}b=2;break;case 4:e=$jscomp.makeIterator(g.layer.renderLayers),d=e.next();case 5:if(d.done){b=7;break}c=d.value;if(c.ready){b=8;break}b=6;break;case 8:return b=9,{value:c,done:!1};case 9:if(void 0===l){b=10;break}b=-1;throw l;case 10:case 6:d=e.next();b=5;break;case 7:case 2:k=m.next();b=1;break;case 3:b=-1;default:return{value:void 0,done:!0}}}var b=0,c,d,e,g,k,m,r=this,l={next:function(b){return a(b, -void 0)},throw:function(b){return a(void 0,b)},return:function(a){throw Error("Not yet implemented");}};$jscomp.initSymbolIterator();l[Symbol.iterator]=function(){return this};return l}},{key:"unbindManagedLayer",value:function(a){this.updateSignalBindings(a,t.b);a.dispose()}},{key:"clear",value:function(){for(var a=$jscomp.makeIterator(this.managedLayers),b=a.next();!b.done;b=a.next())this.unbindManagedLayer(b.value);this.managedLayers.length=0;this.layerSet.clear();this.layersChanged.dispatch()}}, -{key:"remove",value:function(a){var b=this.managedLayers[a];this.unbindManagedLayer(b);this.managedLayers.splice(a,1);this.layerSet.delete(b);this.layersChanged.dispatch()}},{key:"removeManagedLayer",value:function(a){a=this.managedLayers.indexOf(a);if(-1===a)throw Error("Internal error: invalid managed layer.");this.remove(a)}},{key:"reorderManagedLayer",value:function(a,b){var c=this.managedLayers.length;a===b||0>a||a>=c||0>b||b>=c||(a=$jscomp.makeIterator(this.managedLayers.splice(a,1)).next().value, -this.managedLayers.splice(b,0,a),this.layersChanged.dispatch())}},{key:"disposed",value:function(){this.clear();v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"getLayerByName",value:function(a){return this.managedLayers.find(function(b){return b.name===a})}},{key:"getUniqueLayerName",value:function(a){for(var b=a,c=0;void 0!==this.getLayerByName(b);)b=a+ ++c;return b}},{key:"has",value:function(a){return this.layerSet.has(a)}},{key:"initializePosition", -value:function(a){var b=this,c=this.boundPositions;c.has(a)||(c.add(a),c=d()(function(){b.updatePositionFromLayers(a)}),this.readyStateChanged.add(c),a.changed.add(c),this.updatePositionFromLayers(a))}},{key:"updatePositionFromLayers",value:function(a){if(!a.valid)for(var b=$jscomp.makeIterator(this.managedLayers),c=b.next();!c.done;c=b.next())if(c=c.value.layer,null!=c){c=$jscomp.makeIterator(c.renderLayers);for(var d=c.next();!d.done;d=c.next())if(d=d.value,d.ready&&(a.voxelSize.valid||null==d.voxelSize|| -(g.s.copy(a.voxelSize.size,d.voxelSize),a.voxelSize.setValid()),!a.spatialCoordinatesValid&&!a.voxelCoordinatesValid&&null!=d.boundingBox)){d=d.boundingBox;var e=a.spatialCoordinates;g.s.add(e,d.lower,d.upper);g.s.scale(e,e,.5);a.spatialCoordinatesValid=!0;a.changed.dispatch()}}}},{key:"invokeAction",value:function(a){for(var b=$jscomp.makeIterator(this.managedLayers),c=b.next();!c.done;c=b.next())if(c=c.value,null!==c.layer&&c.visible){c=c.layer;c.handleAction(a);c=$jscomp.makeIterator(c.renderLayers); -for(var d=c.next();!d.done;d=c.next())d=d.value,d.ready&&d.handleAction(a)}}},{key:"renderLayerToManagedLayerMap",get:function(){var a=this.layersChanged.count,b=this.renderLayerToManagedLayerMap_;if(this.renderLayerToManagedLayerMapGeneration!==a){this.renderLayerToManagedLayerMapGeneration=a;b.clear();a=$jscomp.makeIterator(this.managedLayers);for(var c=a.next();!c.done;c=a.next()){c=c.value;var d=c.layer;if(null!==d){d=$jscomp.makeIterator(d.renderLayers);for(var e=d.next();!e.done;e=d.next())b.set(e.value, -c)}}}return b}},{key:"renderLayers",get:function(){var a=this;$jscomp.initSymbol();$jscomp.initSymbolIterator();var b={};return b[Symbol.iterator]=function(){function b(b,l){for(;;)switch(c){case 0:r=$jscomp.makeIterator(a.managedLayers),m=r.next();case 1:if(m.done){c=3;break}k=m.value;if(null!==k.layer){c=4;break}c=2;break;case 4:g=$jscomp.makeIterator(k.layer.renderLayers),e=g.next();case 5:if(e.done){c=7;break}d=e.value;c=8;return{value:d,done:!1};case 8:if(void 0===l){c=9;break}c=-1;throw l;case 9:case 6:e= -g.next();c=5;break;case 7:case 2:m=r.next();c=1;break;case 3:c=-1;default:return{value:void 0,done:!0}}}var c=0,d,e,g,k,m,r,l={next:function(a){return b(a,void 0)},throw:function(a){return b(void 0,a)},return:function(a){throw Error("Not yet implemented");}};$jscomp.initSymbolIterator();l[Symbol.iterator]=function(){return this};return l},b}},{key:"visibleRenderLayers",get:function(){var a=this;$jscomp.initSymbol();$jscomp.initSymbolIterator();var b={};return b[Symbol.iterator]=function(){function b(b, -l){for(;;)switch(c){case 0:r=$jscomp.makeIterator(a.managedLayers),m=r.next();case 1:if(m.done){c=3;break}k=m.value;if(null!==k.layer&&k.visible){c=4;break}c=2;break;case 4:g=$jscomp.makeIterator(k.layer.renderLayers),e=g.next();case 5:if(e.done){c=7;break}d=e.value;c=8;return{value:d,done:!1};case 8:if(void 0===l){c=9;break}c=-1;throw l;case 9:case 6:e=g.next();c=5;break;case 7:case 2:m=r.next();c=1;break;case 3:c=-1;default:return{value:void 0,done:!0}}}var c=0,d,e,g,k,m,r,l={next:function(a){return b(a, -void 0)},throw:function(a){return b(void 0,a)},return:function(a){throw Error("Not yet implemented");}};$jscomp.initSymbolIterator();l[Symbol.iterator]=function(){return this};return l},b}}]);return b}(h.a),G=function(){function a(){var c=this;q(this,a);this.changed=new k.a;this.position=g.s.create();this.active=!1;this.pickedRenderLayer=null;this.pickedValue=new m.a(0,0);this.pickedOffset=0;this.updater=this.pickedAnnotationId=this.pickedAnnotationLayer=void 0;this.stale=!1;this.triggerUpdate=b()(function(){c.update()}, -50,{leading:!0,trailing:!0})}w(a,[{key:"updateUnconditionally",value:function(){this.triggerUpdate.cancel();this.update();return this.active}},{key:"updateIfStale",value:function(){this.stale&&this.update()}},{key:"update",value:function(){var a=this.updater;this.stale=!1;a?this.setActive(a(this)):this.setActive(!1)}},{key:"setActive",value:function(a){this.stale=!1;if(this.active!==a||!0===a)this.active=a,this.changed.dispatch()}}]);return a}(),C=function(a){function b(a,c){q(this,b);var d=p(this, -(b.__proto__||Object.getPrototypeOf(b)).call(this));d.layerManager=a;d.mouseState=c;d.values=new Map;d.changed=new k.a;d.needsUpdate=!0;d.registerDisposer(c.changed.add(function(){d.handleChange()}));d.registerDisposer(a.layersChanged.add(function(){d.handleLayerChange()}));return d}n(b,a);w(b,[{key:"handleLayerChange",value:function(){this.mouseState.active&&this.handleChange()}},{key:"handleChange",value:function(){this.needsUpdate=!0;this.changed.dispatch()}},{key:"update",value:function(){if(this.needsUpdate){this.needsUpdate= -!1;var a=this.values,b=this.mouseState;a.clear();if(b.active)for(var c=b.position,d=$jscomp.makeIterator(this.layerManager.managedLayers),e=d.next();!e.done;e=d.next()){e=e.value;var g=e.layer;e.visible&&g&&a.set(g,g.getValueAt(c,b))}}}},{key:"get",value:function(a){this.update();return this.values.get(a)}},{key:"toJSON",value:function(){this.update();for(var a={},b=this.values,c=$jscomp.makeIterator(this.layerManager.managedLayers),d=c.next();!d.done;d=c.next()){d=d.value;var e=d.layer;e&&(e=b.get(e), -void 0!==e&&(e instanceof m.a&&(e={t:"u64",v:e}),a[d.name]=e))}return a}}]);return b}(h.a),B=function(a){function b(a,c,e,g,k){q(this,b);var m=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));m.layerManager=a;m.renderLayerType=c;m.roles=e;m.layerAdded=g;m.visibility=k;m.visibleLayers=new Map;m.newVisibleLayers=new Set;m.debouncedUpdateVisibleLayers=m.registerCancellable(d()(function(){return m.updateVisibleLayers()},0));m.registerDisposer(a.layersChanged.add(m.debouncedUpdateVisibleLayers)); -m.registerDisposer(e.changed.add(m.debouncedUpdateVisibleLayers));m.updateVisibleLayers();return m}n(b,a);w(b,[{key:"disposed",value:function(){this.visibleLayers.forEach(function(a){return a()});this.visibleLayers.clear();v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"updateVisibleLayers",value:function(){for(var a=this.visibleLayers,b=this.newVisibleLayers,c=this.renderLayerType,d=this.layerAdded,e=this.roles,g={},m=$jscomp.makeIterator(this.layerManager.readyRenderLayers()), -k=m.next();!k.done;g={disposer:g.disposer,visibilityDisposer:g.visibilityDisposer,typedLayer:g.typedLayer},k=m.next())k=k.value,k instanceof c&&e.has(k.role)&&(g.typedLayer=k,b.add(g.typedLayer),a.has(g.typedLayer)||(g.visibilityDisposer=g.typedLayer.visibility.add(this.visibility),g.disposer=d(g.typedLayer),a.set(g.typedLayer.addRef(),function(a){return function(){a.disposer();a.visibilityDisposer();a.typedLayer.dispose()}}(g))));c=$jscomp.makeIterator(a);for(d=c.next();!d.done;d=c.next())e=$jscomp.makeIterator(d.value), -d=e.next().value,e=e.next().value,b.has(d)||(a.delete(d),e());b.clear()}},{key:"getVisibleLayers",value:function(){this.debouncedUpdateVisibleLayers.flush();return[].concat($jscomp.arrayFromIterable(this.visibleLayers.keys()))}}]);return b}(h.a),F=function(a){function b(a){q(this,b);var c=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));c.layerManager=a;c.changed=new k.a;c.visible_=!1;c.registerDisposer(a);return c}n(b,a);w(b,[{key:"toJSON",value:function(){if(void 0!==this.layer)return{layer:this.layer.name, -visible:!0===this.visible?!0:void 0}}},{key:"restoreState",value:function(a){if(void 0===a)this.reset();else{Object(l.t)(a);var b=Object(l.v)(a,"layer",l.y);this.layer=void 0!==b?this.layerManager.getLayerByName(b):void 0;this.visible=Object(l.v)(a,"visible",l.w)?!0:!1}}},{key:"reset",value:function(){this.layer=void 0}},{key:"layer",get:function(){return this.layer_},set:function(a){var b=this;if(a!==this.layer_){void 0!==this.layer_&&(this.existingLayerDisposer(),this.existingLayerDisposer=void 0); -this.layer_=a;if(void 0!==a){var c=function(){b.layer_=void 0;b.visible=!1;b.existingLayerDisposer=void 0;b.changed.dispatch()};a.registerDisposer(c);var d=a.specificationChanged.add(function(){b.changed.dispatch()});this.existingLayerDisposer=function(){var b=a.layer;null!==b&&(b=b.tool.value,void 0!==b&&b.deactivate());a.unregisterDisposer(c);d()}}else this.visible_=!1;this.changed.dispatch()}}},{key:"visible",get:function(){return this.visible_},set:function(a){void 0===this.layer_&&(a=!1);this.visible_!== -a&&(this.visible_=a,this.changed.dispatch())}}]);return b}(h.a),L=function(a){function b(a,c){q(this,b);var e=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));e.layerManager=a;e.filter=c;e.changed=new k.a;e.validate=d()(function(){var a=e.layerName_;void 0!==a&&(a=e.layerManager.getLayerByName(a),void 0!==a&&e.filter(a)?e.layer_=a:(e.layer_=void 0,e.layerName_=void 0),e.changed.dispatch())},0);e.registerDisposer(a);e.registerDisposer(a.specificationChanged.add(function(){var a=e.layer_; -void 0!==a&&(e.layerManager.layerSet.has(a)&&e.filter(a)?(a=a.name,a!==e.layerName_&&(e.layerName_=a,e.changed.dispatch())):(e.layer_=void 0,e.layerName_=void 0,e.changed.dispatch()))}));return e}n(b,a);w(b,[{key:"restoreState",value:function(a){this.layerName=Object(l.y)(a)}},{key:"toJSON",value:function(){var a=this.layer_;return void 0!==a?a.name:this.layerName_}},{key:"reset",value:function(){this.layer_=this.layerName_=void 0;this.changed.dispatch()}},{key:"layer",get:function(){return this.layer_}, -set:function(a){this.layer_!==a&&(void 0!==a&&this.layerManager.layerSet.has(a)&&this.filter(a)?(this.layer_=a,this.layerName_=a.name):this.layerName_=this.layer_=void 0,this.changed.dispatch())}},{key:"layerName",get:function(){return this.layerName_},set:function(a){a!==this.layerName_&&(this.layer_=void 0,this.layerName_=a,this.changed.dispatch(),this.validate())}}]);return b}(h.a)},function(h,f,a){h=a(70);a=a(71);f.async=new a.AsyncScheduler(h.AsyncAction)},function(h,f,a){a.d(f,"a",function(){return b}); -f.b=function(a,d,g,l){for(var c=[],e=3;e<arguments.length;++e)c[e-3]=arguments[e];return a.memoize.get(Object(p.g)({id:"getMemoizedBuffer",getter:Object(n.a)(g),args:c}),function(){var e=new q.b(b.fromData(a,g.apply(null,[].concat($jscomp.arrayFromIterable(c))),d,WebGL2RenderingContext.STATIC_DRAW));e.registerDisposer(e.value);return e})};var q=a(1),p=a(4),n=a(23),d=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable= -!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),b=function(){function a(b,c){c=void 0===c?WebGL2RenderingContext.ARRAY_BUFFER:c;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function");this.gl=b;this.bufferType=c;this.gl=b;this.buffer=b.createBuffer()}d(a,[{key:"bind",value:function(){this.gl.bindBuffer(this.bufferType,this.buffer)}},{key:"bindToVertexAttrib",value:function(a,b,c,d,t,m){c=void 0===c?WebGL2RenderingContext.FLOAT: -c;d=void 0===d?!1:d;t=void 0===t?0:t;m=void 0===m?0:m;this.bind();this.gl.enableVertexAttribArray(a);this.gl.vertexAttribPointer(a,b,c,d,t,m)}},{key:"setData",value:function(a,b){b=void 0===b?WebGL2RenderingContext.STATIC_DRAW:b;var c=this.gl;this.bind();c.bufferData(this.bufferType,a,b)}},{key:"dispose",value:function(){this.gl.deleteBuffer(this.buffer);this.gl=this.buffer=void 0}}],[{key:"fromData",value:function(b,c,d,k){b=new a(b,d);b.setData(c,k);return b}}]);return a}()},function(h,f,a){a.d(f, -"k",function(){return n});f.s=function(a){return(a[3]+1/256*a[2]+1/65536*a[1]+1/16777216*a[0])/256};a.d(f,"h",function(){return d});a.d(f,"g",function(){return e});a.d(f,"i",function(){return g});a.d(f,"e",function(){return l});f.r=function(a,b){for(var c=0;4>c;++c)a[c]=(b>>8*c&255)/255;return a};f.a=function(a,b){b=void 0===b?1:b;switch(a){case q.b.FLOAT32:if(1===b)return"float";if(1<b&&4>b)return"vec"+b;break;case q.b.UINT8:if(1===b)return"uint8_t";if(1<b&&4>b)return"uint8x"+b+"_t";break;case q.b.UINT16:if(1=== -b)return"uint16_t";if(2===b)return"uint16x2_t";break;case q.b.UINT32:if(1===b)return"uint32_t";break;case q.b.UINT64:if(1===b)return"uint64_t"}throw Error("No shader type for "+q.b[a]+"["+b+"].");};var q=a(50),p=a(246),n="\nvec4 packFloat01ToFixedPoint(const float value) {\n const vec4 shift = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0);\n const vec4 mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\n vec4 result = fract(value * shift);\n result -= result.xxyz * mask;\n return result * 256.0 / 255.0;\n}\n", +window.export_nehuba=function(h){function f(q){if(a[q])return a[q].exports;var p=a[q]={i:q,l:!1,exports:{}};h[q].call(p.exports,p,p.exports,f);p.l=!0;return p.exports}var a={};f.m=h;f.c=a;f.d=function(a,h,n){f.o(a,h)||Object.defineProperty(a,h,{configurable:!1,enumerable:!0,get:n})};f.n=function(a){var h=a&&a.__esModule?function(){return a["default"]}:function(){return a};f.d(h,"a",h);return h};f.o=function(a,f){return Object.prototype.hasOwnProperty.call(a,f)};f.p="";return f(f.s=226)}([function(h, +f,a){var q=a(16),p=a(365),n=a(87);h=function(){function a(a){this._isScalar=!1;a&&(this._subscribe=a)}a.prototype.lift=function(b){var c=new a;c.source=this;c.operator=b;return c};a.prototype.subscribe=function(a,c,d){var b=this.operator;a=p.toSubscriber(a,c,d);b?b.call(a,this.source):a.add(this.source?this._subscribe(a):this._trySubscribe(a));if(a.syncErrorThrowable&&(a.syncErrorThrowable=!1,a.syncErrorThrown))throw a.syncErrorValue;return a};a.prototype._trySubscribe=function(a){try{return this._subscribe(a)}catch(c){a.syncErrorThrown= +!0,a.syncErrorValue=c,a.error(c)}};a.prototype.forEach=function(a,c){var b=this;c||(q.root.Rx&&q.root.Rx.config&&q.root.Rx.config.Promise?c=q.root.Rx.config.Promise:q.root.Promise&&(c=q.root.Promise));if(!c)throw Error("no Promise impl found");return new c(function(c,d){var e=b.subscribe(function(b){if(e)try{a(b)}catch(m){d(m),e.unsubscribe()}else a(b)},d,c)})};a.prototype._subscribe=function(a){return this.source.subscribe(a)};a.prototype[n.observable]=function(){return this};a.create=function(b){return new a(b)}; +return a}();f.Observable=h},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function p(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}function n(a,b,c,d){a.addEventListener(b,c,d); +return function(){return a.removeEventListener(b,c,d)}}a.d(f,"c",function(){return n});a.d(f,"a",function(){return b});a.d(f,"b",function(){return c});var d=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),b=function(){function a(){p(this,a);this.refCount=1}d(a,[{key:"addRef",value:function(){++this.refCount; +return this}},{key:"dispose",value:function(){0===--this.refCount&&this.refCountReachedZero()}},{key:"refCountReachedZero",value:function(){this.disposed();var a=this.disposers;if(null!=a){for(var b=a.length;0<b;--b){var c=a[b-1];"object"===typeof c?c.dispose():c.call(this)}this.disposers=void 0}this.wasDisposed=!0}},{key:"disposed",value:function(){}},{key:"registerDisposer",value:function(a){var b=this.disposers;null==b?this.disposers=[a]:b.push(a);return a}},{key:"unregisterDisposer",value:function(a){var b= +this.disposers;if(null!=b){var c=b.indexOf(a);-1!==c&&b.splice(c,1)}return a}},{key:"registerEventListener",value:function(a,b,c,d){this.registerDisposer(n(a,b,c,d))}},{key:"registerCancellable",value:function(a){this.registerDisposer(function(){a.cancel()});return a}}]);return a}(),c=function(a){function b(a){p(this,b);var c=(b.__proto__||Object.getPrototypeOf(b)).call(this);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");c=!c||"object"!==typeof c&& +"function"!==typeof c?this:c;c.value=a;return c}q(b,a);return b}(b)},function(h,f,a){function q(a,b){var c=Math.abs(a[b]),d=Math.abs(a[b+1]),g=Math.abs(a[b+2]),l=Math.max(c,d,g);1E-4>c/l&&(a[b]=0);1E-4>d/l&&(a[b+1]=0);1E-4>g/l&&(a[b+2]=0)}a.d(f,"b",function(){return n});f.l=function(a){return a[0]*a[1]*a[2]};f.t=function(a){return a[0]+","+a[1]+","+a[2]};f.o=function(a){q(a,0);q(a,4);q(a,8)};f.p=function(a,b,c){var d=b[0],g=b[1];b=b[2];a[0]=c[0]*d+c[4]*g+c[8]*b;a[1]=c[1]*d+c[5]*g+c[9]*b;a[2]=c[2]* +d+c[6]*g+c[10]*b;return a};f.c=function(a,b){var c=b[0],d=b[1],g=b[2],l=b[4],k=b[5],t=b[6],m=b[8],r=b[9];b=b[10];a[0]=Math.sqrt(c*c+d*d+g*g);a[1]=Math.sqrt(l*l+k*k+t*t);a[2]=Math.sqrt(m*m+r*r+b*b);return a};f.q=function(a,b,c,e,g){a[0]=e[0];a[1]=e[1];a[2]=e[2]*g;return p.b.fromRotationTranslationScale(a,c,b,a)};f.m=function(a,b,c,e){for(var d=p.e.squaredDistance(b,c),l=0,k=0;3>k;++k){var t=b[k];l-=(t-e[k])*(c[k]-t)}e=l/Math.max(d,1E-6);e=Math.max(0,Math.min(1,e));for(d=0;3>d;++d)l=b[d],a[d]=l+e*(c[d]- +l);return a};f.j=function(a,b){var c=b[1],d=b[2],g=b[4],l=b[5],k=b[6],t=b[8],m=b[9],r=b[10];a[0]=b[0];a[1]=c;a[2]=d;a[3]=g;a[4]=l;a[5]=k;a[6]=t;a[7]=m;a[8]=r;return a};var p=a(132);h=a(14);a.d(f,"i",function(){return p.a});a.d(f,"k",function(){return p.b});a.d(f,"n",function(){return p.c});a.d(f,"r",function(){return p.d});a.d(f,"s",function(){return p.e});a.d(f,"u",function(){return p.f});a=p.b.create();f.d=a;f.a=["x","y","z"];var n=function b(a,e){if(!(this instanceof b))throw new TypeError("Cannot call a class as a function"); +this.lower=a;this.upper=e};a=[p.e.fromValues(1,0,0),p.e.fromValues(0,1,0),p.e.fromValues(0,0,1)];f.e=a;a=p.e.fromValues(0,0,0);f.h=a;a=p.e.fromValues(1,1,1);f.g=a;a=p.e.fromValues(Infinity,Infinity,Infinity);f.f=a;p.c.create();new h.a(1227133513,306783378);new h.a(3272356035,818089008);new h.a(251719695,4027515120);new h.a(4278190335,16711680);new h.a(65535,16711680);new h.a(2097151,0)},function(h,f,a){var q=this&&this.__extends||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&& +(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,new c)},p=a(85);h=a(11);var n=a(197),d=a(86);a=function(a){function c(d,e,k){a.call(this);this.syncErrorValue=null;this.isStopped=this.syncErrorThrowable=this.syncErrorThrown=!1;switch(arguments.length){case 0:this.destination=n.empty;break;case 1:if(!d){this.destination=n.empty;break}if("object"===typeof d){d instanceof c?(this.destination=d,this.destination.add(this)):(this.syncErrorThrowable=!0,this.destination=new b(this, +d));break}default:this.syncErrorThrowable=!0,this.destination=new b(this,d,e,k)}}q(c,a);c.prototype[d.rxSubscriber]=function(){return this};c.create=function(a,b,d){a=new c(a,b,d);a.syncErrorThrowable=!1;return a};c.prototype.next=function(a){this.isStopped||this._next(a)};c.prototype.error=function(a){this.isStopped||(this.isStopped=!0,this._error(a))};c.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())};c.prototype.unsubscribe=function(){this.closed||(this.isStopped= +!0,a.prototype.unsubscribe.call(this))};c.prototype._next=function(a){this.destination.next(a)};c.prototype._error=function(a){this.destination.error(a);this.unsubscribe()};c.prototype._complete=function(){this.destination.complete();this.unsubscribe()};c.prototype._unsubscribeAndRecycle=function(){var a=this._parent,b=this._parents;this._parents=this._parent=null;this.unsubscribe();this.isStopped=this.closed=!1;this._parent=a;this._parents=b;return this};return c}(h.Subscription);f.Subscriber=a; +var b=function(a){function b(b,c,d,e){a.call(this);this._parentSubscriber=b;b=this;if(p.isFunction(c))var g=c;else c&&(g=c.next,d=c.error,e=c.complete,c!==n.empty&&(b=Object.create(c),p.isFunction(b.unsubscribe)&&this.add(b.unsubscribe.bind(b)),b.unsubscribe=this.unsubscribe.bind(this)));this._context=b;this._next=g;this._error=d;this._complete=e}q(b,a);b.prototype.next=function(a){if(!this.isStopped&&this._next){var b=this._parentSubscriber;b.syncErrorThrowable?this.__tryOrSetError(b,this._next, +a)&&this.unsubscribe():this.__tryOrUnsub(this._next,a)}};b.prototype.error=function(a){if(!this.isStopped){var b=this._parentSubscriber;if(this._error)b.syncErrorThrowable?this.__tryOrSetError(b,this._error,a):this.__tryOrUnsub(this._error,a),this.unsubscribe();else if(b.syncErrorThrowable)b.syncErrorValue=a,b.syncErrorThrown=!0,this.unsubscribe();else throw this.unsubscribe(),a;}};b.prototype.complete=function(){var a=this;if(!this.isStopped){var b=this._parentSubscriber;if(this._complete){var c= +function(){return a._complete.call(a._context)};b.syncErrorThrowable?this.__tryOrSetError(b,c):this.__tryOrUnsub(c)}this.unsubscribe()}};b.prototype.__tryOrUnsub=function(a,b){try{a.call(this._context,b)}catch(k){throw this.unsubscribe(),k;}};b.prototype.__tryOrSetError=function(a,b,c){try{b.call(this._context,c)}catch(t){return a.syncErrorValue=t,a.syncErrorThrown=!0}return!1};b.prototype._unsubscribe=function(){var a=this._parentSubscriber;this._parentSubscriber=this._context=null;a.unsubscribe()}; +return b}(a)},function(h,f,a){function q(a){var b=typeof a;if("number"===b||"string"===b)if(b=parseFloat(""+a),!Number.isNaN(b))return b;throw Error("Expected floating-point number, but received: "+JSON.stringify(a)+".");}function p(a){a=q(a);if(Number.isFinite(a))return a;throw Error("Expected finite floating-point number, but received: "+a+".");}function n(a){a=p(a);if(0<a)return a;throw Error("Expected positive finite floating-point number, but received: "+a+".");}function d(a){if("object"===typeof a){if(null=== +a)return"null";if(Array.isArray(a)){var b="[",c=a.length,e=0;if(e<c)for(b+=d(a[e]);++e<c;)b+=",",b+=d(a[e]);return b+"]"}b="{";c=Object.keys(a).sort();e=0;var g=c.length;if(e<g){var k=c[e];b+=JSON.stringify(k);for(b=b+":"+d(a[k]);++e<g;)b+=",",k=c[e],b+=JSON.stringify(k),b+=":",b+=d(a[k])}return b+"}"}return JSON.stringify(a)}function b(a,b,c){var d=/[&_,]/g;if('"'===c){var e="'";var g=v;var k=r}else e='"',g=w,k=u;for(var m="";0<a.length;){var l=a.match(k);if(null===l){var t=a;l=a=""}else{t=a.substr(0, +l.index);a=a.substr(l.index+l[0].length);var f=l[1];if(void 0!==f){var h=f;l=e;f=c;var x=g;if(2<=h.length&&h.charAt(0)===l&&h.charAt(h.length-1)===l){h=h.substr(1,h.length-2);for(var n=f;0<h.length;){var y=h.match(x);if(null===y){n+=h;break}n+=y[1];y[2]===f?(n+="\\",n+=f):n+=l;h=h.substr(y.index+y[0].length)}l=n+f}else l=h}else l=l[2]}m+=t.replace(d,b);m+=l}return m}function c(a){return JSON.parse(b(a,",",'"'))}function e(a,b,c){var d=a.length;if(!Array.isArray(b)||b.length!==d)throw Error("Expected length "+ +d+" array, but received: "+JSON.stringify(b)+".");for(var e=0;e<d;++e)a[e]=c(b[e],e);return a}function g(a){if("object"!==typeof a||null==a||Array.isArray(a))throw Error("Expected JSON object, but received: "+JSON.stringify(a)+".");return a}function l(a){var b=parseInt(a,10);if(!Number.isInteger(b))throw Error("Expected integer, but received: "+JSON.stringify(a)+".");return b}function k(a){a=l(a);if(0>=a)throw Error("Expected positive integer, but received: "+a+".");return a}function t(a){if("string"!== +typeof a)throw Error("Expected string, but received: "+JSON.stringify(a)+".");return a}f.p=q;f.n=p;f.o=n;f.f=function(a,b,c){c=void 0===c?q:c;g(b);a[0]=a[1]=a[2]=0;for(var d=$jscomp.makeIterator(Object.keys(b)),e=d.next();!e.done;e=d.next())switch(e=e.value,e){case "x":a[0]=c(b[e]);break;case "y":a[1]=c(b[e]);break;case "z":a[2]=c(b[e]);break;default:throw Error("Expected object to have keys ['x', 'y', 'z'], but received: "+JSON.stringify(b)+".");}return a};f.b=function(a,b){var c=a.length;if(!Array.isArray(b)|| +b.length!==c)throw Error("Incompatible sizes");for(var d=0;d<c;++d)if(!Number.isFinite(parseFloat(b[d])))throw Error("Non-finite value.");for(d=0;d<c;++d)a[d]=parseFloat(b[d]);return a};f.d=function(a,b){var c=a.length;if(!Array.isArray(b)||b.length!==c)throw Error("Incompatible sizes.");for(var d=0;d<c;++d){var e=parseInt(b[d],void 0);if(!Number.isInteger(e))throw Error("Non-integer value.");}for(d=0;d<c;++d)a[d]=parseInt(b[d],void 0);return a};f.g=d;f.h=c;f.a=function(a,b){if(!Array.isArray(a))throw Error("Expected array, but received: "+ +JSON.stringify(a)+".");return a.map(b)};f.c=e;f.t=g;f.r=l;f.z=k;f.s=function(a,b){var c=b.get(a);if(void 0===c)throw Error("Expected one of "+JSON.stringify(Array.from(b.keys()))+", "+("but received: "+JSON.stringify(a)+"."));return c};f.A=t;f.y=function(a){if(void 0!==a)return t(a)};f.x=function(a){if(void 0!==a)return l(a)};f.w=function(a){if(void 0!==a){if("boolean"===typeof a)return a;if("true"===a)return!0;if("false"===a)return!1;throw Error("Expected string or boolean but received: "+JSON.stringify(a)); +}};f.v=function(a,b,c){a=a.hasOwnProperty(b)?a[b]:void 0;try{return c(a)}catch(z){throw Error("Error parsing "+JSON.stringify(b)+" property: "+z.message);}};f.u=function(a,b){g(a);for(var c=new Map,d=$jscomp.makeIterator(Object.keys(a)),e=d.next();!e.done;e=d.next()){e=e.value;try{c.set(e,b(a[e]))}catch(E){throw Error("Error parsing value associated with key "+JSON.stringify(e)+": "+E.message);}}return c};f.q=function(a){if("number"!==typeof a||!Number.isFinite(a)||0>a||1<a)throw Error("Expected floating point number in [0,1], but received: "+ +JSON.stringify(a)+".");return a};f.e=function(a){if(""===a)return{};if(a.startsWith("{"))return c(a);var b={};a=a.split(/[&;]/);a=$jscomp.makeIterator(a);for(var d=a.next();!d.done;d=a.next()){d=d.value;var e=d.match(/^([^=&;]+)=([^&;]*)$/);if(null===e)throw Error("Invalid query string part: "+JSON.stringify(d)+".");b[e[1]]=decodeURIComponent(e[2])}return b};f.m=function(a,b){if("string"===typeof a&&null!==a.match(/^[a-zA-Z]/)&&(a=a.toUpperCase(),b.hasOwnProperty(a)))return b[a];throw Error("Invalid enum value: "+ +JSON.stringify(a)+".");};f.k=function(a){return e(m.s.create(),a,p)};f.j=function(a){return e(m.s.create(),a,n)};f.i=function(a){return e(m.s.create(),a,k)};f.l=function(a){if("boolean"!==typeof a)throw Error("Expected boolean, received: "+JSON.stringify(a));return a};var m=a(2);h=/('(?:[^'\\]|(?:\\.))*')/;f=/("(?:[^'\\]|(?:\\.))*")/;var r=new RegExp(h.source+"|"+f.source),u=new RegExp(f.source+"|"+h.source),v=/^((?:[^"'\\]|(?:\\[^']))*)("|\\')/,w=/^((?:[^"'\\]|(?:\\.))*)'/},function(h,f,a){var q= +this&&this.__extends||function(a,f){function d(){this.constructor=a}for(var b in f)f.hasOwnProperty(b)&&(a[b]=f[b]);a.prototype=null===f?Object.create(f):(d.prototype=f.prototype,new d)};h=function(a){function f(){a.apply(this,arguments)}q(f,a);f.prototype.notifyNext=function(a,b,c,e,g){this.destination.next(b)};f.prototype.notifyError=function(a,b){this.destination.error(a)};f.prototype.notifyComplete=function(a){this.destination.complete()};return f}(a(3).Subscriber);f.OuterSubscriber=h},function(h, +f,a){var q=a(16),p=a(199),n=a(200),d=a(195),b=a(0),c=a(68),e=a(374),g=a(87);f.subscribeToResult=function(a,k,t,m){var l=new e.InnerSubscriber(a,t,m);if(l.closed)return null;if(k instanceof b.Observable)if(k._isScalar)l.next(k.value),l.complete();else return k.subscribe(l);else if(p.isArrayLike(k)){a=0;for(t=k.length;a<t&&!l.closed;a++)l.next(k[a]);l.closed||l.complete()}else{if(n.isPromise(k))return k.then(function(a){l.closed||(l.next(a),l.complete())},function(a){return l.error(a)}).then(null,function(a){q.root.setTimeout(function(){throw a; +})}),l;if(k&&"function"===typeof k[c.iterator]){k=k[c.iterator]();do{a=k.next();if(a.done){l.complete();break}l.next(a.value);if(l.closed)break}while(1)}else if(k&&"function"===typeof k[g.observable])if(k=k[g.observable](),"function"!==typeof k.subscribe)l.error(new TypeError("Provided object does not correctly implement Symbol.observable"));else return k.subscribe(new e.InnerSubscriber(a,t,m));else k=d.isObject(k)?"an invalid object":"'"+k+"'",l.error(new TypeError("You provided "+k+" where a stream was expected. You can provide an Observable, Promise, Array, or Iterable."))}return null}}, +function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function p(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}a.d(f,"b",function(){return d});a.d(f,"a",function(){return b});var n=function(){function a(a, +b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),d=function(){function a(){p(this,a);this.handlers=new Set;this.count=0;var b=this;this.dispatch=function(){var a=this,c=arguments;++b.count;b.handlers.forEach(function(b){b.apply(a,c)})}}n(a,[{key:"add",value:function(a){var b=this;this.handlers.add(a);return function(){return b.remove(a)}}}, +{key:"remove",value:function(a){return this.handlers.delete(a)}},{key:"dispose",value:function(){this.handlers=void 0}}]);return a}(),b=function(a){function b(){p(this,b);var a=(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!a||"object"!==typeof a&&"function"!==typeof a?this:a}q(b,a);return b}(d)},function(h,f,a){f.a=function(a){for(;;){var f=a.firstElementChild;if(!f)break;a.removeChild(f)}}; +f.b=function(a){var f=a.parentElement;return f?(f.removeChild(a),!0):!1}},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}); +b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function n(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}a.d(f,"f",function(){return l});a.d(f,"c",function(){return k});f.g=function(a,b){for(var c=[],d=1;d<arguments.length;++d)c[d-1]=arguments[d];return new t(a,c)};a.d(f,"a",function(){return m});a.d(f,"d",function(){return r});a.d(f,"b",function(){return u});a.d(f,"e",function(){return v});f.h=function(a,c){function e(){g=a.value;k=new b.a; +c(k,g)}var g,k,m=d()(function(){a.value!==g&&(k.dispose(),e())},0),l=a.changed.add(m);e();return function(){m.cancel();l();k.dispose()}};h=a(10);var d=a.n(h),b=a(1),c=a(7),e=function y(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return y(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable|| +!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),l=function(){function a(b){n(this,a);this.value_=b;this.changed=new c.a}g(a,[{key:"value",get:function(){return this.value_},set:function(a){a!==this.value_&&(this.value_=a,this.changed.dispatch())}}]);return a}(),k=function(a){function b(a,c,d){d=void 0===d?a:d;n(this,b);a=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a));a.validator=c;a.defaultValue= +d;return a}p(b,a);g(b,[{key:"toJSON",value:function(){if(this.value_!==this.defaultValue)return this.value_}},{key:"reset",value:function(){this.value=this.defaultValue}},{key:"restoreState",value:function(a){if(void 0!==a){var b=this.validator;try{this.value=b(a);return}catch(D){}}this.value=this.defaultValue}}]);return b}(l),t=function(a){function b(a,d){n(this,b);var e=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));e.changed=new c.a;e.f=a;e.ws=d;a=$jscomp.makeIterator(d);for(d=a.next();!d.done;d= +a.next())e.registerDisposer(d.value.changed.add(e.changed.dispatch));return e}p(b,a);g(b,[{key:"value",get:function(){return this.f.apply(this,[].concat($jscomp.arrayFromIterable(this.ws.map(function(a){return a.value}))))}}]);return b}(b.a),m=function(a){function b(a,d){for(var e=[],g=1;g<arguments.length;++g)e[g-1]=arguments[g];n(this,b);g=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));g.f=a;g.changed=new c.a;e=$jscomp.makeIterator(e);for(var k=e.next();!k.done;k=e.next())g.registerDisposer(k.value.add(g.changed.dispatch)); +return g}p(b,a);g(b,[{key:"value",get:function(){return this.f()}}]);return b}(b.a),r=function(a){function b(){n(this,b);var a=q(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments));a.changed=new c.a;return a}p(b,a);g(b,[{key:"reset",value:function(){this.value=void 0}},{key:"disposed",value:function(){void 0!==this.value_&&this.value_.dispose();this.value_=void 0;e(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"value",get:function(){return this.value_}, +set:function(a){var b=this,c=this.value_;this.value_=a;void 0!==c&&(c.dispose(),this.valueHandler=void 0);if(void 0!==a){var d=this.valueHandler=function(){b.value_===a&&(b.value_=void 0,b.changed.dispatch())};a.registerDisposer(d)}a!==c&&this.changed.dispatch()}}]);return b}(b.a),u=function(a){function b(a,c){n(this,b);var d=q(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));d.validator=a;d.jsonConverter=c;return d}p(b,a);g(b,[{key:"toJSON",value:function(){var a=this.value;return a&&this.jsonConverter(a)}}, +{key:"restoreState",value:function(a){this.value=this.validator(a)}}]);return b}(r),v=function(){function a(b){n(this,a);this.changed=new c.a;this.values=void 0===b?new Set:new Set(b)}$jscomp.initSymbol();$jscomp.initSymbolIterator();g(a,[{key:"add",value:function(a){var b=this.values;b.has(a)||(b.add(a),this.changed.dispatch());return this}},{key:"delete",value:function(a){return this.values.delete(a)?(this.changed.dispatch(),!0):!1}},{key:"has",value:function(a){return this.values.has(a)}},{key:Symbol.iterator, +value:function(){$jscomp.initSymbol();$jscomp.initSymbolIterator();return this.values[Symbol.iterator]()}},{key:"clear",value:function(){var a=this.values;0<a.size&&(a.clear(),this.changed.dispatch())}},{key:"size",get:function(){return this.values.size}}]);return a}()},function(h,f,a){var q=a(96),p=a(235),n=a(237),d=Math.max,b=Math.min;h.exports=function(a,e,g){function c(b){var c=u,d=v;u=v=void 0;A=b;return f=a.apply(d,c)}function k(a){var b=a-x;a-=A;return void 0===x||b>=e||0>b||D&&a>=G}function t(){var a= +p();if(k(a))return m(a);var c=setTimeout;var d=a-A;a=e-(a-x);d=D?b(a,G-d):a;h=c(t,d)}function m(a){h=void 0;if(E&&u)return c(a);u=v=void 0;return f}function r(){var a=p(),b=k(a);u=arguments;v=this;x=a;if(b){if(void 0===h)return A=a=x,h=setTimeout(t,e),z?c(a):f;if(D)return h=setTimeout(t,e),c(x)}void 0===h&&(h=setTimeout(t,e));return f}var u,v,f,h,x,A=0,z=!1,D=!1,E=!0;if("function"!=typeof a)throw new TypeError("Expected a function");e=n(e)||0;if(q(g)){z=!!g.leading;var G=(D="maxWait"in g)?d(n(g.maxWait)|| +0,e):G;E="trailing"in g?!!g.trailing:E}r.cancel=function(){void 0!==h&&clearTimeout(h);A=0;u=x=v=h=void 0};r.flush=function(){return void 0===h?f:m(p())};return r}},function(h,f,a){function q(a){return a.reduce(function(a,b){return a.concat(b instanceof e.UnsubscriptionError?b.errors:b)},[])}var p=a(36),n=a(195),d=a(85),b=a(17),c=a(13),e=a(196);h=function(){function a(a){this.closed=!1;this._subscriptions=this._parents=this._parent=null;a&&(this._unsubscribe=a)}a.prototype.unsubscribe=function(){var a= +!1;if(!this.closed){var g=this._parent;var t=this._parents,m=this._unsubscribe,r=this._subscriptions;this.closed=!0;this._subscriptions=this._parents=this._parent=null;for(var u=-1,v=t?t.length:0;g;)g.remove(this),g=++u<v&&t[u]||null;if(d.isFunction(m)&&(g=b.tryCatch(m).call(this),g===c.errorObject)){a=!0;var f=f||(c.errorObject.e instanceof e.UnsubscriptionError?q(c.errorObject.e.errors):[c.errorObject.e])}if(p.isArray(r))for(u=-1,v=r.length;++u<v;)g=r[u],n.isObject(g)&&(g=b.tryCatch(g.unsubscribe).call(g), +g===c.errorObject&&(a=!0,f=f||[],g=c.errorObject.e,g instanceof e.UnsubscriptionError?f=f.concat(q(g.errors)):f.push(g)));if(a)throw new e.UnsubscriptionError(f);}};a.prototype.add=function(b){if(!b||b===a.EMPTY)return a.EMPTY;if(b===this)return this;var c=b;switch(typeof b){case "function":c=new a(b);case "object":if(c.closed||"function"!==typeof c.unsubscribe)return c;if(this.closed)return c.unsubscribe(),c;"function"!==typeof c._addParent&&(b=c,c=new a,c._subscriptions=[b]);break;default:throw Error("unrecognized teardown "+ +b+" added to Subscription.");}(this._subscriptions||(this._subscriptions=[])).push(c);c._addParent(this);return c};a.prototype.remove=function(a){var b=this._subscriptions;b&&(a=b.indexOf(a),-1!==a&&b.splice(a,1))};a.prototype._addParent=function(a){var b=this._parent,c=this._parents;b&&b!==a?c?-1===c.indexOf(a)&&c.push(a):this._parents=[a]:this._parent=a};a.EMPTY=function(a){a.closed=!0;return a}(new a);return a}();f.Subscription=h},function(h,f,a){var q=this&&this.__extends||function(a,b){function c(){this.constructor= +a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,new c)},p=a(0);h=a(3);var n=a(11),d=a(88),b=a(198),c=a(86),e=function(a){function b(b){a.call(this,b);this.destination=b}q(b,a);return b}(h.Subscriber);f.SubjectSubscriber=e;a=function(a){function k(){a.call(this);this.observers=[];this.hasError=this.isStopped=this.closed=!1;this.thrownError=null}q(k,a);k.prototype[c.rxSubscriber]=function(){return new e(this)};k.prototype.lift=function(a){var b= +new g(this,this);b.operator=a;return b};k.prototype.next=function(a){if(this.closed)throw new d.ObjectUnsubscribedError;if(!this.isStopped){var b=this.observers,c=b.length;b=b.slice();for(var e=0;e<c;e++)b[e].next(a)}};k.prototype.error=function(a){if(this.closed)throw new d.ObjectUnsubscribedError;this.hasError=!0;this.thrownError=a;this.isStopped=!0;var b=this.observers,c=b.length;b=b.slice();for(var e=0;e<c;e++)b[e].error(a);this.observers.length=0};k.prototype.complete=function(){if(this.closed)throw new d.ObjectUnsubscribedError; +this.isStopped=!0;var a=this.observers,b=a.length;a=a.slice();for(var c=0;c<b;c++)a[c].complete();this.observers.length=0};k.prototype.unsubscribe=function(){this.closed=this.isStopped=!0;this.observers=null};k.prototype._trySubscribe=function(b){if(this.closed)throw new d.ObjectUnsubscribedError;return a.prototype._trySubscribe.call(this,b)};k.prototype._subscribe=function(a){if(this.closed)throw new d.ObjectUnsubscribedError;if(this.hasError)return a.error(this.thrownError),n.Subscription.EMPTY; +if(this.isStopped)return a.complete(),n.Subscription.EMPTY;this.observers.push(a);return new b.SubjectSubscription(this,a)};k.prototype.asObservable=function(){var a=new p.Observable;a.source=this;return a};k.create=function(a,b){return new g(a,b)};return k}(p.Observable);f.Subject=a;var g=function(a){function b(b,c){a.call(this);this.destination=b;this.source=c}q(b,a);b.prototype.next=function(a){var b=this.destination;b&&b.next&&b.next(a)};b.prototype.error=function(a){var b=this.destination;b&& +b.error&&this.destination.error(a)};b.prototype.complete=function(){var a=this.destination;a&&a.complete&&this.destination.complete()};b.prototype._subscribe=function(a){return this.source?this.source.subscribe(a):n.Subscription.EMPTY};return b}(a);f.AnonymousSubject=g},function(h,f,a){f.errorObject={e:{}}},function(h,f,a){a.d(f,"a",function(){return e});var q=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable= +!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),p=new Uint32Array(2),n=[];for(h=2;36>=h;++h){f=Math.floor(32/Math.log2(h));a=Math.pow(h,f);var d=Math.floor(f/2),b=Math.pow(h,d);d=Math.pow(h,f-d);var c="^[0-"+String.fromCharCode(48+Math.min(9,h-1));10<h&&(c+="a-"+String.fromCharCode(97+h-11),c+="A-"+String.fromCharCode(65+h-11));c+="]{1,"+Math.ceil(64/Math.log2(h))+"}$";n[h]={lowDigits:f,lowBase:a,lowBase1:b,lowBase2:d,pattern:new RegExp(c)}}var e= +function(){function a(b,c){b=void 0===b?0:b;c=void 0===c?0:c;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function");this.low=b;this.high=c}q(a,[{key:"clone",value:function(){return new a(this.low,this.high)}},{key:"assign",value:function(a){this.low=a.low;this.high=a.high}},{key:"toString",value:function(a){a=void 0===a?10:a;var b=this.low,c=this.high;if(0===c)return b.toString(a);c*=4294967296;var d=n[a],e=d.lowBase;d=d.lowDigits;var g=c%e;c=Math.floor(c/e);b+=g;c+=Math.floor(b/ +e);b=(b%e).toString(a);return c.toString(a)+"0".repeat(d-b.length)+b}},{key:"tryParseString",value:function(a,b){b=void 0===b?10:b;var c=n[b],d=c.lowDigits,e=c.lowBase,g=c.lowBase1,k=c.lowBase2;if(!c.pattern.test(a))return!1;if(a.length<=d)return this.low=parseInt(a,b),this.high=0,!0;d=a.length-d;c=parseInt(a.substr(d),b);a=parseInt(a.substr(0,d),b);e=Math.floor(a*e/4294967296);g=c+a%4294967296*g%4294967296*k%4294967296;4294967296<=g&&(++e,g-=4294967296);if(g>>>0!==g||e>>>0!==e)return!1;this.low= +g;this.high=e;return!0}},{key:"parseString",value:function(a,b){if(!this.tryParseString(a,void 0===b?10:b))throw Error("Failed to parse string as uint64 value: "+JSON.stringify(a)+".");return this}},{key:"valid",value:function(){var a=this.low,b=this.high;return a>>>0===a&&b>>>0===b}},{key:"toJSON",value:function(){return this.toString()}},{key:"lshift",value:function(b){b&=63;if(0==b)return this.clone();var c=this.low,d=this.high;return 32>b?new a(c<<b,d<<b|c>>>32-b):new a(0,c<<b-32)}},{key:"rshift", +value:function(b){b&=63;if(0==b)return this.clone();var c=this.low,d=this.high;return 32>b?new a(c>>>b|d<<32-b,d>>b):new a(d>>b-32,0<=d?0:-1)}},{key:"or",value:function(b){return new a(this.low|b.low,this.high|b.high)}},{key:"xor",value:function(b){return new a(this.low^b.low,this.high^b.high)}},{key:"and",value:function(b){return new a(this.low&b.low,this.high&b.high)}}],[{key:"less",value:function(a,b){return a.high<b.high||a.high===b.high&&a.low<b.low}},{key:"compare",value:function(a,b){return a.high- +b.high||a.low-b.low}},{key:"equal",value:function(a,b){return a.low===b.low&&a.high===b.high}},{key:"min",value:function(b,c){return a.less(b,c)?b:c}},{key:"random",value:function(){crypto.getRandomValues(p);return new a(p[0],p[1])}},{key:"parseString",value:function(b,c){c=void 0===c?10:c;return(new a).parseString(b,c)}}]);return a}();e.ZERO=new e(0,0)},function(h,f,a){function q(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}function p(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); +return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function n(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function d(a,b){l.set(a,b)}f.e=d;f.d=function(a,c){d(a,function(a){var d=this,e=a.id,g=new b.b;a=c.call(this,a,g);this.set(e,{promise:a, +cancellationToken:g});a.then(function(a){var b=a.value;a=a.transfers;d.delete(e);d.invoke("rpc.promise.response",{id:e,value:b},a)},function(a){d.delete(e);d.invoke("rpc.promise.response",{id:e,error:a.message,errorName:a.name})})})};a.d(f,"a",function(){return m});a.d(f,"b",function(){return r});a.d(f,"c",function(){return u});f.g=function(a){return function(b){b.prototype.RPC_TYPE_ID=a}};f.f=function(a){return function(b){if(void 0!==a)b.prototype.RPC_TYPE_ID=a;else if(a=b.prototype.RPC_TYPE_ID, +void 0===a)throw Error("RPC_TYPE_ID should have already been defined");v.set(a,b)}};var b=a(32);h=a(1);var c=function y(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return y(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},e=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a, +d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),g=!("undefined"!==typeof Window&&self instanceof Window),l=new Map,k=function(a){function b(a,c){q(this,b);var d=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,c));d.name=a;d.message=c;return d}n(b,a);return b}(Error);d("rpc.promise.cancel",function(a){this.get(a.id).cancellationToken.cancel()});d("rpc.promise.response",function(a){var c=a.id,d=this.get(c),e=d.resolve;d=d.reject;this.delete(c);a.hasOwnProperty("value")? +e(a.value):a.errorName===b.a.name?d(b.a):d(new k(a.errorName,a.error))});var t=g?-1:0,m=function(){function a(b){var c=this;q(this,a);this.target=b;this.objects=new Map;this.nextId=t;b.onmessage=function(a){a=a.data;l.get(a.functionName).call(c,a)}}e(a,[{key:"set",value:function(a,b){this.objects.set(a,b)}},{key:"delete",value:function(a){this.objects.delete(a)}},{key:"get",value:function(a){return this.objects.get(a)}},{key:"getRef",value:function(a){var b=this.get(a.id);b.referencedGeneration=a.gen; +b.addRef();return b}},{key:"invoke",value:function(a,b,c){b.functionName=a;this.target.postMessage(b,c)}},{key:"promiseInvoke",value:function(a,c,d,e){var g=this;d=void 0===d?b.e:d;return Object(b.d)(d,function(b,d,m){var k=c.id=g.newId();g.set(k,{resolve:b,reject:d});g.invoke(a,c,e);m.add(function(){g.invoke("rpc.promise.cancel",{id:k})})})}},{key:"newId",value:function(){return g?this.nextId--:this.nextId++}},{key:"numObjects",get:function(){return this.objects.size}}]);return a}(),r=function(a){function b(){q(this, +b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments));a.rpc=null;a.rpcId=null;return a}n(b,a);e(b,[{key:"initializeSharedObject",value:function(a,b){b=void 0===b?a.newId():b;this.rpc=a;this.rpcId=b;this.isOwner=!1;a.set(b,this)}},{key:"initializeCounterpart",value:function(a,b){b=void 0===b?{}:b;this.initializeSharedObject(a);this.referencedGeneration=this.unreferencedGeneration=0;this.isOwner=!0;b.id=this.rpcId;b.type=this.RPC_TYPE_ID;a.invoke("SharedObject.new",b)}},{key:"dispose", +value:function(){c(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"dispose",this).call(this)}},{key:"addCounterpartRef",value:function(){return{id:this.rpcId,gen:++this.referencedGeneration}}},{key:"refCountReachedZero",value:function(){!0===this.isOwner?this.referencedGeneration===this.unreferencedGeneration&&this.ownerDispose():!1===this.isOwner?this.rpc.invoke("SharedObject.refCountReachedZero",{id:this.rpcId,gen:this.referencedGeneration}):c(b.prototype.__proto__||Object.getPrototypeOf(b.prototype), +"refCountReachedZero",this).call(this)}},{key:"ownerDispose",value:function(){var a=this.rpc,d=this.rpcId;c(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"refCountReachedZero",this).call(this);a.delete(d);a.invoke("SharedObject.dispose",{id:d})}},{key:"counterpartRefCountReachedZero",value:function(a){this.unreferencedGeneration=a;0===this.refCount&&a===this.referencedGeneration&&this.ownerDispose()}}]);return b}(h.a),u=function(a){function b(a,c){c=void 0===c?{}:c;q(this,b);var d=p(this, +(b.__proto__||Object.getPrototypeOf(b)).call(this));c=void 0===c?{}:c;null!=a&&d.initializeSharedObject(a,c.id);return d}n(b,a);return b}(r);d("SharedObject.dispose",function(a){a=this.get(a.id);if(0!==a.refCount)throw Error("Attempted to dispose object with non-zero reference count.");a.disposed();this.delete(a.rpcId);a.rpcId=null;a.rpc=null});d("SharedObject.refCountReachedZero",function(a){this.get(a.id).counterpartRefCountReachedZero(a.gen)});var v=new Map;d("SharedObject.new",function(a){--(new (v.get(a.type))(this, +a)).refCount})},function(h,f,a){h=a(74);a="undefined"!==typeof self&&"undefined"!==typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self;h="undefined"!==typeof window&&window||"undefined"!==typeof h&&h||a;f.root=h;if(!h)throw Error("RxJS could not find any global context (window, self, global)");},function(h,f,a){function q(){try{return n.apply(this,arguments)}catch(d){return p.errorObject.e=d,p.errorObject}}var p=a(13),n;f.tryCatch=function(a){n=a;return q}},function(h,f,a){function q(a, +b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}function p(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function n(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf? +Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"g",function(){return y});f.k=function(){return new c.e([y.DATA,y.ANNOTATION,y.DEFAULT_ANNOTATION])};a.d(f,"f",function(){return x});a.d(f,"j",function(){return A});a.d(f,"i",function(){return z});a.d(f,"d",function(){return D});a.d(f,"a",function(){return E});a.d(f,"e",function(){return G});a.d(f,"c",function(){return C});f.l=function(a,b,c,d,e){return d.registerDisposer(new B(a,b,c,function(a){var b=a.redrawNeeded.add(function(){return d.scheduleRedraw()}), +c=e&&e(a);d.scheduleRedraw();return function(){void 0!==c&&c();b();d.scheduleRedraw()}},d.visibility))};a.d(f,"h",function(){return F});a.d(f,"b",function(){return L});h=a(10);var d=a.n(h);h=a(243);var b=a.n(h),c=a(9),e=a(139);h=a(1);var g=a(2),l=a(4),k=a(7),t=a(244),m=a(14),r=a(29),u=a(40),v=function O(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return O(a,b,c)}else{if("value"in d)return d.value;b=d.get; +return void 0===b?void 0:b.call(c)}},w=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),y;(function(a){a[a.DATA=0]="DATA";a[a.ANNOTATION=1]="ANNOTATION";a[a.DEFAULT_ANNOTATION=2]="DEFAULT_ANNOTATION"})(y||(y={}));var x=function(a){function b(){q(this,b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this, +arguments));a.ready=!1;a.role=y.DATA;a.layerChanged=new k.a;a.redrawNeeded=new k.a;a.readyStateChanged=new k.a;a.voxelSize=null;a.boundingBox=null;return a}n(b,a);w(b,[{key:"setReady",value:function(a){this.ready=a;this.readyStateChanged.dispatch();this.layerChanged.dispatch()}},{key:"handleAction",value:function(a){}},{key:"getValueAt",value:function(a){}},{key:"transformPickedValue",value:function(a,b){return a}},{key:"updateMouseState",value:function(a,b,c,d){}}]);return b}(h.a),A=function(a){function b(){q(this, +b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments));a.visibility=new r.a;return a}n(b,a);return b}(x),z=function(a){function b(a,d){q(this,b);var g=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));g.manager=a;g.layersChanged=new k.a;g.readyStateChanged=new k.a;g.specificationChanged=new k.a;g.renderLayers=[];g.isReady=!1;g.tabs=g.registerDisposer(new u.c);g.tool=g.registerDisposer(new c.b(function(a){return Object(e.c)(g,a)},function(a){return a.toJSON()}));d; +g.tabs.changed.add(g.specificationChanged.dispatch);g.tool.changed.add(g.specificationChanged.dispatch);return g}n(b,a);w(b,[{key:"restoreState",value:function(a){this.tool.restoreState(a.tool);this.tabs.restoreState(a.tab)}},{key:"addRenderLayer",value:function(a){this.renderLayers.push(a);var b=this.layersChanged,c=this.readyStateChanged;a.layerChanged.add(b.dispatch);a.readyStateChanged.add(c.dispatch);c.dispatch();b.dispatch()}},{key:"removeRenderLayer",value:function(a){var b=this.renderLayers, +c=this.layersChanged,d=this.readyStateChanged,e=b.indexOf(a);if(-1===e)throw Error("Attempted to remove invalid RenderLayer");b.splice(e,1);a.layerChanged.remove(c.dispatch);a.readyStateChanged.remove(d.dispatch);a.dispose();d.dispatch();c.dispatch()}},{key:"disposed",value:function(){for(var a=this.layersChanged,c=this.readyStateChanged,d=$jscomp.makeIterator(this.renderLayers),e=d.next();!e.done;e=d.next())e=e.value,e.layerChanged.remove(a.dispatch),e.readyStateChanged.remove(c.dispatch),e.dispose(); +v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"getValueAt",value:function(a,b){var c=this.renderLayers,d=b.pickedRenderLayer;if(null!==d&&-1!==c.indexOf(d)){var e=d.transformPickedValue(b.pickedValue,b.pickedOffset);return this.transformPickedValue(e)}b=$jscomp.makeIterator(c);for(c=b.next();!c.done&&(c=c.value,!c.ready||(e=c.getValueAt(a),void 0===e));c=b.next());return this.transformPickedValue(e)}},{key:"transformPickedValue",value:function(a){return a}}, +{key:"toJSON",value:function(){var a={};return a.tab=this.tabs.toJSON(),a.tool=this.tool.toJSON(),a}},{key:"handleAction",value:function(a){}}]);return b}(h.a),D=function(a){function b(a,c,d){c=void 0===c?null:c;d=void 0===d?!0:d;q(this,b);var e=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));e.visible=d;e.readyStateChanged=new k.a;e.layerChanged=new k.a;e.specificationChanged=new k.a;e.wasDisposed=!1;e.layer_=null;e.name_=a;e.layer=c;return e}n(b,a);w(b,[{key:"isReady",value:function(){var a= +this.layer;return null!==a&&a.isReady}},{key:"handleLayerChanged",value:function(){this.visible&&this.layerChanged.dispatch()}},{key:"setVisible",value:function(a){a!==this.visible&&(this.visible=a,this.layerChanged.dispatch())}},{key:"disposed",value:function(){this.wasDisposed=!0;this.layer=null;v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"layer",get:function(){return this.layer_},set:function(a){var b=this,c=this.layer_;null!=c&&(this.unregisterUserLayer(), +c.dispose());this.layer_=a;if(null!=a){var d=[a.layersChanged.add(function(){return b.handleLayerChanged()}),a.readyStateChanged.add(this.readyStateChanged.dispatch),a.specificationChanged.add(this.specificationChanged.dispatch)];this.unregisterUserLayer=function(){d.forEach(function(a){return a()})};this.readyStateChanged.dispatch();this.handleLayerChanged()}}},{key:"name",get:function(){return this.name_},set:function(a){a!==this.name_&&(this.name_=a,this.layerChanged.dispatch())}}]);return b}(h.a), +E=function(a){function b(){q(this,b);var a=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));a.managedLayers=[];a.layerSet=new Set;a.layersChanged=new k.a;a.readyStateChanged=new k.a;a.specificationChanged=new k.a;a.boundPositions=new WeakSet;a.numDirectUsers=0;a.renderLayerToManagedLayerMapGeneration=-1;a.renderLayerToManagedLayerMap_=new Map;a.scheduleRemoveLayersWithSingleRef=a.registerCancellable(d()(function(){return a.removeLayersWithSingleRef()},0));a.layersChanged.add(a.scheduleRemoveLayersWithSingleRef); +return a}n(b,a);w(b,[{key:"filter",value:function(a){var b=this,c=!1;this.managedLayers=this.managedLayers.filter(function(d){return a(d)?!0:(b.unbindManagedLayer(d),b.layerSet.delete(d),c=!0,!1)});c&&this.layersChanged.dispatch()}},{key:"removeLayersWithSingleRef",value:function(){0<this.numDirectUsers||this.filter(function(a){return 1!==a.refCount})}},{key:"updateSignalBindings",value:function(a,b){b(a.layerChanged,this.layersChanged.dispatch);b(a.readyStateChanged,this.readyStateChanged.dispatch); +b(a.specificationChanged,this.specificationChanged.dispatch)}},{key:"useDirectly",value:function(){var a=this;1===++this.numDirectUsers&&this.layersChanged.remove(this.scheduleRemoveLayersWithSingleRef);return function(){0===--a.numDirectUsers&&(a.layersChanged.add(a.scheduleRemoveLayersWithSingleRef),a.scheduleRemoveLayersWithSingleRef())}}},{key:"addManagedLayer",value:function(a,b){this.updateSignalBindings(a,t.a);this.layerSet.add(a);void 0===b&&(b=this.managedLayers.length);this.managedLayers.splice(b, +0,a);this.layersChanged.dispatch();this.readyStateChanged.dispatch();return a}},{key:"addUserLayer",value:function(a,b,c){a=new D(a,b,c);return this.addManagedLayer(a)}},{key:"readyRenderLayers",value:function(){function a(a,l){for(;;)switch(b){case 0:m=$jscomp.makeIterator(r.managedLayers),k=m.next();case 1:if(k.done){b=3;break}g=k.value;if(g.visible&&g.layer){b=4;break}b=2;break;case 4:e=$jscomp.makeIterator(g.layer.renderLayers),d=e.next();case 5:if(d.done){b=7;break}c=d.value;if(c.ready){b=8; +break}b=6;break;case 8:return b=9,{value:c,done:!1};case 9:if(void 0===l){b=10;break}b=-1;throw l;case 10:case 6:d=e.next();b=5;break;case 7:case 2:k=m.next();b=1;break;case 3:b=-1;default:return{value:void 0,done:!0}}}var b=0,c,d,e,g,k,m,r=this,l={next:function(b){return a(b,void 0)},throw:function(b){return a(void 0,b)},return:function(a){throw Error("Not yet implemented");}};$jscomp.initSymbolIterator();l[Symbol.iterator]=function(){return this};return l}},{key:"unbindManagedLayer",value:function(a){this.updateSignalBindings(a, +t.b);a.dispose()}},{key:"clear",value:function(){for(var a=$jscomp.makeIterator(this.managedLayers),b=a.next();!b.done;b=a.next())this.unbindManagedLayer(b.value);this.managedLayers.length=0;this.layerSet.clear();this.layersChanged.dispatch()}},{key:"remove",value:function(a){var b=this.managedLayers[a];this.unbindManagedLayer(b);this.managedLayers.splice(a,1);this.layerSet.delete(b);this.layersChanged.dispatch()}},{key:"removeManagedLayer",value:function(a){a=this.managedLayers.indexOf(a);if(-1=== +a)throw Error("Internal error: invalid managed layer.");this.remove(a)}},{key:"reorderManagedLayer",value:function(a,b){var c=this.managedLayers.length;a===b||0>a||a>=c||0>b||b>=c||(a=$jscomp.makeIterator(this.managedLayers.splice(a,1)).next().value,this.managedLayers.splice(b,0,a),this.layersChanged.dispatch())}},{key:"disposed",value:function(){this.clear();v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"getLayerByName",value:function(a){return this.managedLayers.find(function(b){return b.name=== +a})}},{key:"getUniqueLayerName",value:function(a){for(var b=a,c=0;void 0!==this.getLayerByName(b);)b=a+ ++c;return b}},{key:"has",value:function(a){return this.layerSet.has(a)}},{key:"initializePosition",value:function(a){var b=this,c=this.boundPositions;c.has(a)||(c.add(a),c=d()(function(){b.updatePositionFromLayers(a)}),this.readyStateChanged.add(c),a.changed.add(c),this.updatePositionFromLayers(a))}},{key:"updatePositionFromLayers",value:function(a){if(!a.valid)for(var b=$jscomp.makeIterator(this.managedLayers), +c=b.next();!c.done;c=b.next())if(c=c.value.layer,null!=c){c=$jscomp.makeIterator(c.renderLayers);for(var d=c.next();!d.done;d=c.next())if(d=d.value,d.ready&&(a.voxelSize.valid||null==d.voxelSize||(g.s.copy(a.voxelSize.size,d.voxelSize),a.voxelSize.setValid()),!a.spatialCoordinatesValid&&!a.voxelCoordinatesValid&&null!=d.boundingBox)){d=d.boundingBox;var e=a.spatialCoordinates;g.s.add(e,d.lower,d.upper);g.s.scale(e,e,.5);a.spatialCoordinatesValid=!0;a.changed.dispatch()}}}},{key:"invokeAction",value:function(a){for(var b= +$jscomp.makeIterator(this.managedLayers),c=b.next();!c.done;c=b.next())if(c=c.value,null!==c.layer&&c.visible){c=c.layer;c.handleAction(a);c=$jscomp.makeIterator(c.renderLayers);for(var d=c.next();!d.done;d=c.next())d=d.value,d.ready&&d.handleAction(a)}}},{key:"renderLayerToManagedLayerMap",get:function(){var a=this.layersChanged.count,b=this.renderLayerToManagedLayerMap_;if(this.renderLayerToManagedLayerMapGeneration!==a){this.renderLayerToManagedLayerMapGeneration=a;b.clear();a=$jscomp.makeIterator(this.managedLayers); +for(var c=a.next();!c.done;c=a.next()){c=c.value;var d=c.layer;if(null!==d){d=$jscomp.makeIterator(d.renderLayers);for(var e=d.next();!e.done;e=d.next())b.set(e.value,c)}}}return b}},{key:"renderLayers",get:function(){var a=this;$jscomp.initSymbol();$jscomp.initSymbolIterator();var b={};return b[Symbol.iterator]=function(){function b(b,l){for(;;)switch(c){case 0:r=$jscomp.makeIterator(a.managedLayers),m=r.next();case 1:if(m.done){c=3;break}k=m.value;if(null!==k.layer){c=4;break}c=2;break;case 4:g= +$jscomp.makeIterator(k.layer.renderLayers),e=g.next();case 5:if(e.done){c=7;break}d=e.value;c=8;return{value:d,done:!1};case 8:if(void 0===l){c=9;break}c=-1;throw l;case 9:case 6:e=g.next();c=5;break;case 7:case 2:m=r.next();c=1;break;case 3:c=-1;default:return{value:void 0,done:!0}}}var c=0,d,e,g,k,m,r,l={next:function(a){return b(a,void 0)},throw:function(a){return b(void 0,a)},return:function(a){throw Error("Not yet implemented");}};$jscomp.initSymbolIterator();l[Symbol.iterator]=function(){return this}; +return l},b}},{key:"visibleRenderLayers",get:function(){var a=this;$jscomp.initSymbol();$jscomp.initSymbolIterator();var b={};return b[Symbol.iterator]=function(){function b(b,l){for(;;)switch(c){case 0:r=$jscomp.makeIterator(a.managedLayers),m=r.next();case 1:if(m.done){c=3;break}k=m.value;if(null!==k.layer&&k.visible){c=4;break}c=2;break;case 4:g=$jscomp.makeIterator(k.layer.renderLayers),e=g.next();case 5:if(e.done){c=7;break}d=e.value;c=8;return{value:d,done:!1};case 8:if(void 0===l){c=9;break}c= +-1;throw l;case 9:case 6:e=g.next();c=5;break;case 7:case 2:m=r.next();c=1;break;case 3:c=-1;default:return{value:void 0,done:!0}}}var c=0,d,e,g,k,m,r,l={next:function(a){return b(a,void 0)},throw:function(a){return b(void 0,a)},return:function(a){throw Error("Not yet implemented");}};$jscomp.initSymbolIterator();l[Symbol.iterator]=function(){return this};return l},b}}]);return b}(h.a),G=function(){function a(){var c=this;q(this,a);this.changed=new k.a;this.position=g.s.create();this.active=!1;this.pickedRenderLayer= +null;this.pickedValue=new m.a(0,0);this.pickedOffset=0;this.updater=this.pickedAnnotationId=this.pickedAnnotationLayer=void 0;this.stale=!1;this.triggerUpdate=b()(function(){c.update()},50,{leading:!0,trailing:!0})}w(a,[{key:"updateUnconditionally",value:function(){this.triggerUpdate.cancel();this.update();return this.active}},{key:"updateIfStale",value:function(){this.stale&&this.update()}},{key:"update",value:function(){var a=this.updater;this.stale=!1;a?this.setActive(a(this)):this.setActive(!1)}}, +{key:"setActive",value:function(a){this.stale=!1;if(this.active!==a||!0===a)this.active=a,this.changed.dispatch()}}]);return a}(),C=function(a){function b(a,c){q(this,b);var d=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));d.layerManager=a;d.mouseState=c;d.values=new Map;d.changed=new k.a;d.needsUpdate=!0;d.registerDisposer(c.changed.add(function(){d.handleChange()}));d.registerDisposer(a.layersChanged.add(function(){d.handleLayerChange()}));return d}n(b,a);w(b,[{key:"handleLayerChange", +value:function(){this.mouseState.active&&this.handleChange()}},{key:"handleChange",value:function(){this.needsUpdate=!0;this.changed.dispatch()}},{key:"update",value:function(){if(this.needsUpdate){this.needsUpdate=!1;var a=this.values,b=this.mouseState;a.clear();if(b.active)for(var c=b.position,d=$jscomp.makeIterator(this.layerManager.managedLayers),e=d.next();!e.done;e=d.next()){e=e.value;var g=e.layer;e.visible&&g&&a.set(g,g.getValueAt(c,b))}}}},{key:"get",value:function(a){this.update();return this.values.get(a)}}, +{key:"toJSON",value:function(){this.update();for(var a={},b=this.values,c=$jscomp.makeIterator(this.layerManager.managedLayers),d=c.next();!d.done;d=c.next()){d=d.value;var e=d.layer;e&&(e=b.get(e),void 0!==e&&(e instanceof m.a&&(e={t:"u64",v:e}),a[d.name]=e))}return a}}]);return b}(h.a),B=function(a){function b(a,c,e,g,k){q(this,b);var m=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));m.layerManager=a;m.renderLayerType=c;m.roles=e;m.layerAdded=g;m.visibility=k;m.visibleLayers=new Map; +m.newVisibleLayers=new Set;m.debouncedUpdateVisibleLayers=m.registerCancellable(d()(function(){return m.updateVisibleLayers()},0));m.registerDisposer(a.layersChanged.add(m.debouncedUpdateVisibleLayers));m.registerDisposer(e.changed.add(m.debouncedUpdateVisibleLayers));m.updateVisibleLayers();return m}n(b,a);w(b,[{key:"disposed",value:function(){this.visibleLayers.forEach(function(a){return a()});this.visibleLayers.clear();v(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}}, +{key:"updateVisibleLayers",value:function(){for(var a=this.visibleLayers,b=this.newVisibleLayers,c=this.renderLayerType,d=this.layerAdded,e=this.roles,g={},m=$jscomp.makeIterator(this.layerManager.readyRenderLayers()),k=m.next();!k.done;g={disposer:g.disposer,visibilityDisposer:g.visibilityDisposer,typedLayer:g.typedLayer},k=m.next())k=k.value,k instanceof c&&e.has(k.role)&&(g.typedLayer=k,b.add(g.typedLayer),a.has(g.typedLayer)||(g.visibilityDisposer=g.typedLayer.visibility.add(this.visibility), +g.disposer=d(g.typedLayer),a.set(g.typedLayer.addRef(),function(a){return function(){a.disposer();a.visibilityDisposer();a.typedLayer.dispose()}}(g))));c=$jscomp.makeIterator(a);for(d=c.next();!d.done;d=c.next())e=$jscomp.makeIterator(d.value),d=e.next().value,e=e.next().value,b.has(d)||(a.delete(d),e());b.clear()}},{key:"getVisibleLayers",value:function(){this.debouncedUpdateVisibleLayers.flush();return[].concat($jscomp.arrayFromIterable(this.visibleLayers.keys()))}}]);return b}(h.a),F=function(a){function b(a){q(this, +b);var c=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));c.layerManager=a;c.changed=new k.a;c.visible_=!1;c.registerDisposer(a);return c}n(b,a);w(b,[{key:"toJSON",value:function(){if(void 0!==this.layer)return{layer:this.layer.name,visible:!0===this.visible?!0:void 0}}},{key:"restoreState",value:function(a){if(void 0===a)this.reset();else{Object(l.t)(a);var b=Object(l.v)(a,"layer",l.y);this.layer=void 0!==b?this.layerManager.getLayerByName(b):void 0;this.visible=Object(l.v)(a,"visible", +l.w)?!0:!1}}},{key:"reset",value:function(){this.layer=void 0}},{key:"layer",get:function(){return this.layer_},set:function(a){var b=this;if(a!==this.layer_){void 0!==this.layer_&&(this.existingLayerDisposer(),this.existingLayerDisposer=void 0);this.layer_=a;if(void 0!==a){var c=function(){b.layer_=void 0;b.visible=!1;b.existingLayerDisposer=void 0;b.changed.dispatch()};a.registerDisposer(c);var d=a.specificationChanged.add(function(){b.changed.dispatch()});this.existingLayerDisposer=function(){var b= +a.layer;null!==b&&(b=b.tool.value,void 0!==b&&b.deactivate());a.unregisterDisposer(c);d()}}else this.visible_=!1;this.changed.dispatch()}}},{key:"visible",get:function(){return this.visible_},set:function(a){void 0===this.layer_&&(a=!1);this.visible_!==a&&(this.visible_=a,this.changed.dispatch())}}]);return b}(h.a),L=function(a){function b(a,c){q(this,b);var e=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this));e.layerManager=a;e.filter=c;e.changed=new k.a;e.validate=d()(function(){var a=e.layerName_; +void 0!==a&&(a=e.layerManager.getLayerByName(a),void 0!==a&&e.filter(a)?e.layer_=a:(e.layer_=void 0,e.layerName_=void 0),e.changed.dispatch())},0);e.registerDisposer(a);e.registerDisposer(a.specificationChanged.add(function(){var a=e.layer_;void 0!==a&&(e.layerManager.layerSet.has(a)&&e.filter(a)?(a=a.name,a!==e.layerName_&&(e.layerName_=a,e.changed.dispatch())):(e.layer_=void 0,e.layerName_=void 0,e.changed.dispatch()))}));return e}n(b,a);w(b,[{key:"restoreState",value:function(a){this.layerName= +Object(l.y)(a)}},{key:"toJSON",value:function(){var a=this.layer_;return void 0!==a?a.name:this.layerName_}},{key:"reset",value:function(){this.layer_=this.layerName_=void 0;this.changed.dispatch()}},{key:"layer",get:function(){return this.layer_},set:function(a){this.layer_!==a&&(void 0!==a&&this.layerManager.layerSet.has(a)&&this.filter(a)?(this.layer_=a,this.layerName_=a.name):this.layerName_=this.layer_=void 0,this.changed.dispatch())}},{key:"layerName",get:function(){return this.layerName_}, +set:function(a){a!==this.layerName_&&(this.layer_=void 0,this.layerName_=a,this.changed.dispatch(),this.validate())}}]);return b}(h.a)},function(h,f,a){h=a(70);a=a(71);f.async=new a.AsyncScheduler(h.AsyncAction)},function(h,f,a){a.d(f,"a",function(){return b});f.b=function(a,d,g,l){for(var c=[],e=3;e<arguments.length;++e)c[e-3]=arguments[e];return a.memoize.get(Object(p.g)({id:"getMemoizedBuffer",getter:Object(n.a)(g),args:c}),function(){var e=new q.b(b.fromData(a,g.apply(null,[].concat($jscomp.arrayFromIterable(c))), +d,WebGL2RenderingContext.STATIC_DRAW));e.registerDisposer(e.value);return e})};var q=a(1),p=a(4),n=a(23),d=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),b=function(){function a(b,c){c=void 0===c?WebGL2RenderingContext.ARRAY_BUFFER:c;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function"); +this.gl=b;this.bufferType=c;this.gl=b;this.buffer=b.createBuffer()}d(a,[{key:"bind",value:function(){this.gl.bindBuffer(this.bufferType,this.buffer)}},{key:"bindToVertexAttrib",value:function(a,b,c,d,t,m){c=void 0===c?WebGL2RenderingContext.FLOAT:c;d=void 0===d?!1:d;t=void 0===t?0:t;m=void 0===m?0:m;this.bind();this.gl.enableVertexAttribArray(a);this.gl.vertexAttribPointer(a,b,c,d,t,m)}},{key:"setData",value:function(a,b){b=void 0===b?WebGL2RenderingContext.STATIC_DRAW:b;var c=this.gl;this.bind(); +c.bufferData(this.bufferType,a,b)}},{key:"dispose",value:function(){this.gl.deleteBuffer(this.buffer);this.gl=this.buffer=void 0}}],[{key:"fromData",value:function(b,c,d,k){b=new a(b,d);b.setData(c,k);return b}}]);return a}()},function(h,f,a){a.d(f,"k",function(){return n});f.s=function(a){return(a[3]+1/256*a[2]+1/65536*a[1]+1/16777216*a[0])/256};a.d(f,"h",function(){return d});a.d(f,"g",function(){return e});a.d(f,"i",function(){return g});a.d(f,"e",function(){return l});f.r=function(a,b){for(var c= +0;4>c;++c)a[c]=(b>>8*c&255)/255;return a};f.a=function(a,b){b=void 0===b?1:b;switch(a){case q.b.FLOAT32:if(1===b)return"float";if(1<b&&4>b)return"vec"+b;break;case q.b.UINT8:if(1===b)return"uint8_t";if(1<b&&4>b)return"uint8x"+b+"_t";break;case q.b.UINT16:if(1===b)return"uint16_t";if(2===b)return"uint16x2_t";break;case q.b.UINT32:if(1===b)return"uint32_t";break;case q.b.UINT64:if(1===b)return"uint64_t"}throw Error("No shader type for "+q.b[a]+"["+b+"].");};var q=a(50),p=a(246),n="\nvec4 packFloat01ToFixedPoint(const float value) {\n const vec4 shift = vec4(256.0 * 256.0 * 256.0, 256.0 * 256.0, 256.0, 1.0);\n const vec4 mask = vec4(0.0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\n vec4 result = fract(value * shift);\n result -= result.xxyz * mask;\n return result * 256.0 / 255.0;\n}\n", d="\nvec3 hueToRgb(float hue) {\n float hue6 = hue * 6.0;\n float r = abs(hue6 - 3.0) - 1.0;\n float g = 2.0 - abs(hue6 - 2.0);\n float b = 2.0 - abs(hue6 - 4.0);\n return clamp(vec3(r, g, b), 0.0, 1.0);\n}\nvec3 hsvToRgb(vec3 c) {\n vec3 hueRgb = hueToRgb(c.x);\n return c.z * ((hueRgb - 1.0) * c.y + 1.0);\n}\n";h=["float","vec2","vec3","vec4"].map(function(a){return"\n"+a+" unnormalizeUint8("+a+" value) {\n return floor(value * 255.0 + 0.5);\n}\n"}).join("");f.q=h;var b=[h,"\nfloat uintleToFloat(float v) {\n return unnormalizeUint8(v);\n}\nfloat uintleToFloat(vec2 v) {\n v = unnormalizeUint8(v);\n return v.x + v.y * 256.0;\n}\nfloat uintleToFloat(vec3 v) {\n v = unnormalizeUint8(v);\n return v.x + v.y * 256.0 + v.z * 256.0 * 256.0;\n}\n"]; f.p=b;var c=[h,"\nfloat uintbeToFloat(float v) {\n return unnormalizeUint8(v);\n}\nfloat uintbeToFloat(vec2 v) {\n v = unnormalizeUint8(v);\n return v.y + v.x * 256.0;\n}\nfloat uintbeToFloat(vec3 v) {\n v = unnormalizeUint8(v);\n return v.z + v.y * 256.0 + v.x * 256.0 * 256.0;\n}\n"];(function(){var a=p.a===p.b.BIG?"be":"le";return[p.a===p.b.BIG?c:b,"\nfloat uintToFloat(float v) {\n return uint"+a+"ToFloat(v);\n}\nfloat uintToFloat(vec2 v) {\n return uint"+a+"ToFloat(v);\n}\nfloat uintToFloat(vec3 v) {\n return uint"+ a+"ToFloat(v);\n}\n"]})();f.n="\nstruct uint64_t {\n vec4 low, high;\n};\nuint64_t toUint64(uint64_t x) { return x; }\n";f.o=[h,"\nstruct uint64_t {\n vec4 low, high;\n};\nuint64_t toUint64(uint64_t x) { return x; }\n","\nstruct uint8_t {\n float value;\n};\nstruct uint8x2_t {\n vec2 value;\n};\nstruct uint8x3_t {\n vec3 value;\n};\nstruct uint8x4_t {\n vec4 value;\n};\nfloat toRaw(uint8_t x) { return unnormalizeUint8(x.value); }\nfloat toNormalized(uint8_t x) { return x.value; }\nvec2 toRaw(uint8x2_t x) { return unnormalizeUint8(x.value); }\nvec2 toNormalized(uint8x2_t x) { return x.value; }\nvec3 toRaw(uint8x3_t x) { return unnormalizeUint8(x.value); }\nvec3 toNormalized(uint8x3_t x) { return x.value; }\nvec4 toRaw(uint8x4_t x) { return unnormalizeUint8(x.value); }\nvec4 toNormalized(uint8x4_t x) { return x.value; }\nuint64_t toUint64(uint8_t x) {\n uint64_t result;\n result.low = vec4(x.value, 0.0, 0.0, 0.0);\n result.high = vec4(0.0, 0.0, 0.0, 0.0);\n return result;\n}\n"]; @@ -1204,12 +1203,12 @@ Object.getPrototypeOf(b)).apply(this,arguments))}n(b,a);return b}(Object(m.f)(Ob Object(B.v)(a,"channelCount",B.z),this.dataType=Object(B.v)(a,"channelType",function(a){return Object(B.s)(a,P)}),this.voxelSize=Object(B.v)(a,"pixelSize",function(a){return Object(B.f)(C.s.create(),a,B.o)}),this.upperVoxelBound=Object(B.v)(a,"volumeSize",function(a){return Object(B.f)(C.s.create(),a,B.z)}),this.boundingBoxes=Object(B.v)(a,"boundingBox",function(a){return void 0===a?[]:Object(B.a)(a,d)})}catch(X){throw Error("Failed to parse BrainMaps volume geometry: "+X.message);}},S=function R(a){q(this, R);try{Object(B.t)(a);var b=this.scales=Object(B.v)(a,"geometry",function(a){return Object(B.a)(a,function(a){return new N(a)})});if(0===b.length)throw Error("Expected at least one scale.");var c=b[0],d=this.numChannels=c.numChannels,e=this.dataType=c.dataType;a=1;for(var g=b.length;a<g;++a){var k=b[a];if(k.dataType!==e)throw Error("Scale "+a+" has data type "+z.a[k.dataType]+" "+("but scale 0 has data type "+z.a[e]+"."));if(k.numChannels!==d)throw Error("Scale "+a+" has "+k.numChannels+" channel(s) "+ ("but scale 0 has "+d+" channels."));}}catch(Aa){throw Error("Failed to parse BrainMaps multiscale volume specification: "+Aa.message);}},U=function X(a){q(this,X);Object(B.t)(a);this.name=Object(B.v)(a,"name",B.A);this.type=Object(B.v)(a,"type",B.A)},Z=function(){function a(b,c,d,e,g,k,l,m){q(this,a);this.chunkManager=b;this.instance=c;this.credentialsProvider=d;this.volumeId=e;this.changeSpec=g;this.multiscaleVolumeInfo=k;this.encoding=m.encoding;this.chunkLayoutPreference=m.chunkLayoutPreference; -if(1===this.numChannels)switch(this.dataType){case z.a.UINT64:var f=z.c.SEGMENTATION}void 0===f&&(f=void 0!==m.volumeType?m.volumeType:z.c.IMAGE);this.volumeType=f;try{Object(B.t)(l),this.meshes=Object(B.v)(l,"meshes",function(a){return void 0===a?[]:Object(B.a)(a,function(a){return new U(a)})})}catch(Fb){throw Error("Failed to parse BrainMaps meshes specification: "+Fb.message);}}L(a,[{key:"getSources",value:function(a){var b=this,c=w.d.RAW;this.dataType===z.a.UINT64?c=w.d.COMPRESSED_SEGMENTATION: +if(1===this.numChannels)switch(this.dataType){case z.a.UINT64:var r=z.c.SEGMENTATION}void 0===r&&(r=void 0!==m.volumeType?m.volumeType:z.c.IMAGE);this.volumeType=r;try{Object(B.t)(l),this.meshes=Object(B.v)(l,"meshes",function(a){return void 0===a?[]:Object(B.a)(a,function(a){return new U(a)})})}catch(Fb){throw Error("Failed to parse BrainMaps meshes specification: "+Fb.message);}}L(a,[{key:"getSources",value:function(a){var b=this,c=w.d.RAW;this.dataType===z.a.UINT64?c=w.d.COMPRESSED_SEGMENTATION: this.volumeType===z.c.IMAGE&&this.dataType===z.a.UINT8&&1===this.numChannels&&this.encoding!==w.d.RAW&&(c=w.d.JPEG);var d=this.scales[0],e=C.s.multiply(C.s.create(),d.upperVoxelBound,d.voxelSize);return this.scales.map(function(d,g){return z.b.getDefaults({voxelSize:d.voxelSize,dataType:d.dataType,numChannels:d.numChannels,upperVoxelBound:d.upperVoxelBound,upperClipBound:e,volumeType:b.volumeType,volumeSourceOptions:a,chunkLayoutPreference:b.chunkLayoutPreference}).map(function(a){return b.chunkManager.getChunkSource(J, {credentialsProvider:b.credentialsProvider,spec:a,parameters:{instance:b.instance,volumeId:b.volumeId,changeSpec:b.changeSpec,scaleIndex:g,encoding:c}})})})}},{key:"getMeshSource",value:function(){for(var a=$jscomp.makeIterator(this.meshes),b=a.next();!b.done;b=a.next()){b=b.value;if("TRIANGLES"===b.type)return this.chunkManager.getChunkSource(O,{credentialsProvider:this.credentialsProvider,parameters:{instance:this.instance,volumeId:this.volumeId,meshName:b.name,changeSpec:this.changeSpec}});if("LINE_SEGMENTS"=== b.type)return this.chunkManager.getChunkSource(M,{credentialsProvider:this.credentialsProvider,parameters:{instance:this.instance,volumeId:this.volumeId,meshName:b.name,changeSpec:this.changeSpec}})}return null}},{key:"getStaticAnnotations",value:function(){var a=this.scales[0],b=new k.b(C.k.fromScaling(C.k.create(),a.voxelSize));b.readonly=!0;b.add(Object(k.i)(C.s.create(),a.upperVoxelBound));a.boundingBoxes.forEach(function(a,c){b.add({type:k.c.AXIS_ALIGNED_BOUNDING_BOX,description:a.metadata,pointA:a.corner, pointB:C.s.add(C.s.create(),a.corner,a.size),id:"boundingBox"+c})});return b}},{key:"scales",get:function(){return this.multiscaleVolumeInfo.scales}},{key:"dataType",get:function(){return this.multiscaleVolumeInfo.dataType}},{key:"numChannels",get:function(){return this.multiscaleVolumeInfo.numChannels}}]);return a}(),H=/^([^\/]+)\/(.*)$/,Q=function Ka(a,b){q(this,Ka);this.projects=new Map;this.hierarchicalVolumeIds=new Map;var c=this.projects;a=$jscomp.makeIterator(e(a));for(var d=a.next();!d.done;d= -a.next())d=d.value,c.set(d.id,d);try{Object(B.t)(b);var g=this.volumeIds=Object(B.v)(b,"volumeId",function(a){return void 0===a?[]:Object(B.a)(a,B.A)});g.sort();for(var k=new Map,l=$jscomp.makeIterator(g),m=l.next();!m.done;m=l.next()){var f=m.value;for(b=0;;){var r=f.indexOf(":",b);-1===r?r=void 0:++r;var t=f.substring(0,b),h=k.get(t);void 0===h&&(h=new Set,k.set(t,h));h.add(f.substring(b,r));if(void 0===r)break;b=r}}for(var u=this.hierarchicalVolumeIds,v=$jscomp.makeIterator(k),n=v.next();!n.done;n= +a.next())d=d.value,c.set(d.id,d);try{Object(B.t)(b);var g=this.volumeIds=Object(B.v)(b,"volumeId",function(a){return void 0===a?[]:Object(B.a)(a,B.A)});g.sort();for(var k=new Map,l=$jscomp.makeIterator(g),m=l.next();!m.done;m=l.next()){var r=m.value;for(b=0;;){var f=r.indexOf(":",b);-1===f?f=void 0:++f;var t=r.substring(0,b),h=k.get(t);void 0===h&&(h=new Set,k.set(t,h));h.add(r.substring(b,f));if(void 0===f)break;b=f}}for(var u=this.hierarchicalVolumeIds,v=$jscomp.makeIterator(k),n=v.next();!n.done;n= v.next()){var p=$jscomp.makeIterator(n.value),w=p.next().value,x=p.next().value;u.set(w,Array.from(x))}}catch(Ua){throw Error("Failed to parse Brain Maps volume list reply: "+Ua.message);}},aa=function(a){function b(a,c){q(this,b);a=p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a,Object.assign({sourceSpecifications:l(c.multiscaleVolumeInfo)},c)));C.k.fromScaling(a.objectToLocal,c.multiscaleVolumeInfo.scales[0].voxelSize);return a}n(b,a);return b}(Object(m.f)(Object(r.a)()(h.c),w.a)),ba= function(a){function c(a,b){q(this,c);var d=p(this,(c.__proto__||Object.getPrototypeOf(c)).call(this));d.instance=a;d.credentialsProvider=b;return d}n(c,a);L(c,[{key:"getMeshSource",value:function(a,b){return a.getChunkSource(O,{credentialsProvider:this.credentialsProvider,parameters:this.getMeshSourceParameters(b)})}},{key:"getMeshSourceParameters",value:function(a){var c=a.match(H);if(null===c)throw Error("Invalid Brainmaps mesh URL: "+a);a=b(c[1]);return{instance:this.instance,volumeId:a.volumeId, changeSpec:a.changeSpec,meshName:c[2]}}},{key:"getSkeletonSource",value:function(a,b){return a.getChunkSource(M,{credentialsProvider:this.credentialsProvider,parameters:this.getMeshSourceParameters(b)})}},{key:"getMultiscaleInfo",value:function(a,b){var c=this;return a.memoize.getUncounted({type:"brainmaps:getMultiscaleInfo",volumeId:b,instance:this.instance,credentialsProvider:Object(F.a)(this.credentialsProvider)},function(){return Object(v.b)(c.instance,c.credentialsProvider,{method:"GET",path:"/v1beta2/volumes/"+ @@ -1247,7 +1246,7 @@ a[0],c=a[1],d=a[2];a=a[3];return b*b+c*c+d*d+a*a}function k(a,b){var c=b[0],d=b[ b,c,d,e){a[0]=b;a[1]=c;a[2]=d;a[3]=e;return a};f.add=function(a,b,c){a[0]=b[0]+c[0];a[1]=b[1]+c[1];a[2]=b[2]+c[2];a[3]=b[3]+c[3];return a};f.subtract=p;f.multiply=n;f.divide=d;f.ceil=function(a,b){a[0]=Math.ceil(b[0]);a[1]=Math.ceil(b[1]);a[2]=Math.ceil(b[2]);a[3]=Math.ceil(b[3]);return a};f.floor=function(a,b){a[0]=Math.floor(b[0]);a[1]=Math.floor(b[1]);a[2]=Math.floor(b[2]);a[3]=Math.floor(b[3]);return a};f.min=function(a,b,c){a[0]=Math.min(b[0],c[0]);a[1]=Math.min(b[1],c[1]);a[2]=Math.min(b[2], c[2]);a[3]=Math.min(b[3],c[3]);return a};f.max=function(a,b,c){a[0]=Math.max(b[0],c[0]);a[1]=Math.max(b[1],c[1]);a[2]=Math.max(b[2],c[2]);a[3]=Math.max(b[3],c[3]);return a};f.round=function(a,b){a[0]=Math.round(b[0]);a[1]=Math.round(b[1]);a[2]=Math.round(b[2]);a[3]=Math.round(b[3]);return a};f.scale=b;f.scaleAndAdd=function(a,b,c,d){a[0]=b[0]+c[0]*d;a[1]=b[1]+c[1]*d;a[2]=b[2]+c[2]*d;a[3]=b[3]+c[3]*d;return a};f.distance=c;f.squaredDistance=e;f.length=g;f.squaredLength=l;f.negate=function(a,b){a[0]= -b[0];a[1]=-b[1];a[2]=-b[2];a[3]=-b[3];return a};f.inverse=function(a,b){a[0]=1/b[0];a[1]=1/b[1];a[2]=1/b[2];a[3]=1/b[3];return a};f.normalize=k;f.dot=function(a,b){return a[0]*b[0]+a[1]*b[1]+a[2]*b[2]+a[3]*b[3]};f.lerp=function(a,b,c,d){var e=b[0],g=b[1],k=b[2];b=b[3];a[0]=e+d*(c[0]-e);a[1]=g+d*(c[1]-g);a[2]=k+d*(c[2]-k);a[3]=b+d*(c[3]-b);return a};f.random=function(a,c){c=c||1;a[0]=t.c();a[1]=t.c();a[2]=t.c();a[3]=t.c();k(a,a);b(a,a,c);return a};f.transformMat4=function(a,b,c){var d=b[0],e=b[1], -g=b[2];b=b[3];a[0]=c[0]*d+c[4]*e+c[8]*g+c[12]*b;a[1]=c[1]*d+c[5]*e+c[9]*g+c[13]*b;a[2]=c[2]*d+c[6]*e+c[10]*g+c[14]*b;a[3]=c[3]*d+c[7]*e+c[11]*g+c[15]*b;return a};f.transformQuat=function(a,b,c){var d=b[0],e=b[1],g=b[2],k=c[0],l=c[1],m=c[2];c=c[3];var f=c*d+l*g-m*e,h=c*e+m*d-k*g,t=c*g+k*e-l*d;d=-k*d-l*e-m*g;a[0]=f*c+d*-k+h*-m-t*-l;a[1]=h*c+d*-l+t*-k-f*-m;a[2]=t*c+d*-m+f*-l-h*-k;a[3]=b[3];return a};f.str=function(a){return"vec4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"};f.exactEquals=function(a,b){return a[0]=== +g=b[2];b=b[3];a[0]=c[0]*d+c[4]*e+c[8]*g+c[12]*b;a[1]=c[1]*d+c[5]*e+c[9]*g+c[13]*b;a[2]=c[2]*d+c[6]*e+c[10]*g+c[14]*b;a[3]=c[3]*d+c[7]*e+c[11]*g+c[15]*b;return a};f.transformQuat=function(a,b,c){var d=b[0],e=b[1],g=b[2],k=c[0],l=c[1],m=c[2];c=c[3];var f=c*d+l*g-m*e,t=c*e+m*d-k*g,h=c*g+k*e-l*d;d=-k*d-l*e-m*g;a[0]=f*c+d*-k+t*-m-h*-l;a[1]=t*c+d*-l+h*-k-f*-m;a[2]=h*c+d*-m+f*-l-t*-k;a[3]=b[3];return a};f.str=function(a){return"vec4("+a[0]+", "+a[1]+", "+a[2]+", "+a[3]+")"};f.exactEquals=function(a,b){return a[0]=== b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]};f.equals=function(a,b){var c=a[0],d=a[1],e=a[2];a=a[3];var g=b[0],k=b[1],l=b[2];b=b[3];return Math.abs(c-g)<=t.b*Math.max(1,Math.abs(c),Math.abs(g))&&Math.abs(d-k)<=t.b*Math.max(1,Math.abs(d),Math.abs(k))&&Math.abs(e-l)<=t.b*Math.max(1,Math.abs(e),Math.abs(l))&&Math.abs(a-b)<=t.b*Math.max(1,Math.abs(a),Math.abs(b))};var t=a(34);f.sub=p;f.mul=n;f.div=d;f.dist=c;f.sqrDist=e;f.len=g;f.sqrLen=l;h=function(){var a=q();return function(b,c,d,e,g,k){c||(c=4);d|| (d=0);for(e=e?Math.min(e*c+d,b.length):b.length;d<e;d+=c)a[0]=b[d],a[1]=b[d+1],a[2]=b[d+2],a[3]=b[d+3],g(a,a,k),b[d]=a[0],b[d+1]=a[1],b[d+2]=a[2],b[d+3]=a[3];return b}}();f.forEach=h},function(h,f,a){f.a=function(a){a=Math.ceil((void 0===a?128:a)/32);var f=new Uint32Array(a);crypto.getRandomValues(f);for(var h="",d=0;d<a;++d)h+=("00000000"+f[d].toString(16)).slice(-8);return h}},function(h,f,a){f=a(236);a="object"==typeof self&&self&&self.Object===Object&&self;f=f||a||Function("return this")();h.exports= f},function(h,f,a){f=a(137).Symbol;h.exports=f},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return d});f.c=function(a,d){if(void 0!==d){"string"===typeof d&&(d={type:d});Object(p.t)(d);var c=Object(p.v)(d, @@ -1750,8 +1749,8 @@ typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumera b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return E(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}};a(171);a(172);var x=function(a){function e(a,f){q(this,e);var h=p(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,a,f));h.opacity=Object(g.a)(.5);h.lineWidth=Object(l.a)(10);h.color=Object(k.a)(t.s.fromValues(1,1,1));h.opacity.restoreState(f.opacity);h.lineWidth.restoreState(f.linewidth);h.color.restoreState(f.color);h.lineWidth.changed.add(function(){h.specificationChanged.dispatch()}); h.color.changed.add(function(){h.specificationChanged.dispatch()});h.vectorGraphicsLayerType=Object(m.m)(f.type,b.b);f=h.vectorGraphicsPath=Object(m.y)(f.source);var r=0;void 0!==f&&(++r,h.vectorGraphicsLayerType===b.b.LINE&&d(a.dataSourceProvider,a.chunkManager,f).then(function(a){h.wasDisposed||(a=h.renderLayer=new c.a(a,{opacity:h.opacity,lineWidth:h.lineWidth,color:h.color,sourceOptions:{}}),h.addRenderLayer(a),0===--r&&(h.isReady=!0))}));h.tabs.add("rendering",{label:"Rendering",order:-100,getter:function(){return new A(h)}}); h.tabs.default="rendering";return h}n(e,a);w(e,[{key:"toJSON",value:function(){var a=y(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"toJSON",this).call(this);a.type=this.getLayerType();a.source=this.vectorGraphicsPath;a.opacity=this.opacity.toJSON();a.linewidth=this.lineWidth.toJSON();a.color=this.color.toJSON();return a}},{key:"getLayerType",value:function(){return b.b[this.vectorGraphicsLayerType].toLowerCase()}}]);return e}(h.i),A=function(a){function b(a){q(this,b);var c=p(this,(b.__proto__|| -Object.getPrototypeOf(b)).call(this));c.layer=a;c.opacityWidget=c.registerDisposer(new r.a(c.layer.opacity));c.lineWidthWidget=c.registerDisposer(new r.a(c.layer.lineWidth,{min:0,max:50,step:1}));c.colorWidget=c.registerDisposer(new z(c.layer.color));a=c.element;a.classList.add("image-dropdown");var d=c.opacityWidget,e=c.lineWidthWidget,g=c.colorWidget,f=document.createElement("div");f.className="image-dropdown-top-row";d.promptElement.textContent="Opacity";e.promptElement.textContent="Line Width"; -g.promptElement.textContent="Color";d=document.createElement("div");d.style.flex="1";e=document.createElement("a");g=document.createElement("button");g.type="button";g.textContent="?";g.className="help-link";e.appendChild(g);e.title="Documentation on vector graphics layer rendering";e.target="_blank";e.href="https://github.com/google/neuroglancer/blob/master/src/neuroglancer/sliceview/vectorgraphics_layer_rendering.md";f.appendChild(d);f.appendChild(e);a.appendChild(f);a.appendChild(c.opacityWidget.element); +Object.getPrototypeOf(b)).call(this));c.layer=a;c.opacityWidget=c.registerDisposer(new r.a(c.layer.opacity));c.lineWidthWidget=c.registerDisposer(new r.a(c.layer.lineWidth,{min:0,max:50,step:1}));c.colorWidget=c.registerDisposer(new z(c.layer.color));a=c.element;a.classList.add("image-dropdown");var d=c.opacityWidget,e=c.lineWidthWidget,g=c.colorWidget,k=document.createElement("div");k.className="image-dropdown-top-row";d.promptElement.textContent="Opacity";e.promptElement.textContent="Line Width"; +g.promptElement.textContent="Color";d=document.createElement("div");d.style.flex="1";e=document.createElement("a");g=document.createElement("button");g.type="button";g.textContent="?";g.className="help-link";e.appendChild(g);e.title="Documentation on vector graphics layer rendering";e.target="_blank";e.href="https://github.com/google/neuroglancer/blob/master/src/neuroglancer/sliceview/vectorgraphics_layer_rendering.md";k.appendChild(d);k.appendChild(e);a.appendChild(k);a.appendChild(c.opacityWidget.element); a.appendChild(c.lineWidthWidget.element);a.appendChild(c.colorWidget.element);return c}n(b,a);return b}(u.b),z=function(a){function b(a){q(this,b);return p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a))}n(b,a);w(b,[{key:"verifyValue",value:function(a){a=Object(m.n)(a);a/=255;return 0>a?0:1<a?1:a}},{key:"updateInput",value:function(){this.inputx.valueAsNumber=Math.round(255*this.model.value[0]);this.inputy.valueAsNumber=Math.round(255*this.model.value[1]);this.inputz.valueAsNumber=Math.round(255* this.model.value[2])}}]);return b}(v.a);Object(f.e)("line",x)},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf? Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return m});var n=a(30);h=a(156);var d=a(56),b=a(173),c=a(174),e=a(2),g=a(20),l=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),k=function u(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a= @@ -1760,9 +1759,9 @@ Object.getPrototypeOf(a),null!==a)return u(a,b,c)}else{if("value"in d)return d.v n.registerDisposer(g.a.fromData(a,k,a.ARRAY_BUFFER,a.STATIC_DRAW));return n}p(f,a);l(f,[{key:"getShaderKey",value:function(){return"vectorgraphics.VectorGraphicsLineRenderLayer"}},{key:"defineShader",value:function(a){k(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"defineShader",this).call(this,a);a.addUniform("highp float","uOpacity");a.addUniform("highp float","ulineWidth");a.addUniform("highp vec3","uColor");a.addVarying("vec3","vNormal");a.addAttribute("highp float","aNormalDirection"); a.addAttribute("highp vec2","aVertexIndex");a.addAttribute("highp vec3","aVertexFirst");a.addAttribute("highp vec3","aVertexSecond");a.addUniform("highp mat4","uProjection");a.setFragmentMain("\nfloat distance = length(vNormal);\n\nfloat antialiasing = 0.5;\n\nif (distance >= 1.0 - antialiasing) {\n emitRGBA(vec4(uColor, (distance - 1.0) / -antialiasing ));\n}\nelse if (distance < 1.0 - antialiasing) {\n emitRGB(uColor);\n}\n");a.setVertexMain("\nvec3 direction = vec3(0., 0., 0.);\ndirection.z = aNormalDirection;\n\nvec3 difference = aVertexSecond - aVertexFirst;\ndifference.z = 0.;\n\nvec3 normal = cross(difference, direction);\nnormal = normalize(normal);\nvNormal = normal;\n\nvec4 delta = vec4(normal * ulineWidth, 0.0);\nvec4 pos = vec4(aVertexFirst * aVertexIndex.x + aVertexSecond * aVertexIndex.y, 1.0);\n\ngl_Position = uProjection * (pos + delta);\n")}}, {key:"beginSlice",value:function(a){k(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"beginSlice",this).call(this,a);a=this.gl;var b=this.shader;a.uniform1f(b.uniform("uOpacity"),this.opacity.value);a.uniform1f(b.uniform("ulineWidth"),this.lineWidth.value);a.uniform3fv(b.uniform("uColor"),this.color.value);this.vertexIndexBuffer.bindToVertexAttrib(b.attribute("aVertexIndex"),2);this.normalDirectionBuffer.bindToVertexAttrib(b.attribute("aNormalDirection"),1);return b}},{key:"endSlice",value:function(a){var b= -this.gl;b.disableVertexAttribArray(a.attribute("aVertexIndex"));b.disableVertexAttribArray(a.attribute("aNormalDirection"));b.disableVertexAttribArray(a.attribute("aVertexFirst"));b.disableVertexAttribArray(a.attribute("aVertexSecond"))}},{key:"draw",value:function(a){var b=a.visibleLayers.get(this);if(0!==b.length){var c=this.gl,d=this.beginSlice(a);if(void 0===d)console.log("error: shader undefined");else{b=$jscomp.makeIterator(b);for(var g=b.next();!g.done;g=b.next()){g=g.value;var f=g.chunkLayout, -k=g.source,l=k.spec.voxelSize;g=k.chunks;var h=t;e.k.identity(h);k.vectorGraphicsCoordinatesInVoxels&&e.k.scale(h,h,l);e.k.multiply(h,f.transform,h);c.uniformMatrix4fv(d.uniform("uProjection"),!1,e.k.multiply(t,a.dataToDevice,h));if(f=a.visibleChunks.get(f))for(f=$jscomp.makeIterator(f),k=f.next();!k.done;k=f.next())if((k=g.get(k.value))&&k.state===n.d.GPU_MEMORY){l=k.numPoints/2;h=d.attribute("aVertexFirst");k.vertexBuffer.bindToVertexAttrib(h,3,WebGL2RenderingContext.FLOAT,!1,24,0);c.vertexAttribDivisor(h, -1);var m=d.attribute("aVertexSecond");k.vertexBuffer.bindToVertexAttrib(m,3,WebGL2RenderingContext.FLOAT,!1,24,12);c.vertexAttribDivisor(m,1);c.drawArraysInstanced(c.TRIANGLE_STRIP,0,4,l);c.vertexAttribDivisor(h,0);c.vertexAttribDivisor(m,0)}}this.endSlice(d)}}}}]);return f}(h.a)},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&& +this.gl;b.disableVertexAttribArray(a.attribute("aVertexIndex"));b.disableVertexAttribArray(a.attribute("aNormalDirection"));b.disableVertexAttribArray(a.attribute("aVertexFirst"));b.disableVertexAttribArray(a.attribute("aVertexSecond"))}},{key:"draw",value:function(a){var b=a.visibleLayers.get(this);if(0!==b.length){var c=this.gl,d=this.beginSlice(a);if(void 0===d)console.log("error: shader undefined");else{b=$jscomp.makeIterator(b);for(var g=b.next();!g.done;g=b.next()){g=g.value;var k=g.chunkLayout, +f=g.source,l=f.spec.voxelSize;g=f.chunks;var h=t;e.k.identity(h);f.vectorGraphicsCoordinatesInVoxels&&e.k.scale(h,h,l);e.k.multiply(h,k.transform,h);c.uniformMatrix4fv(d.uniform("uProjection"),!1,e.k.multiply(t,a.dataToDevice,h));if(k=a.visibleChunks.get(k))for(k=$jscomp.makeIterator(k),f=k.next();!f.done;f=k.next())if((f=g.get(f.value))&&f.state===n.d.GPU_MEMORY){l=f.numPoints/2;h=d.attribute("aVertexFirst");f.vertexBuffer.bindToVertexAttrib(h,3,WebGL2RenderingContext.FLOAT,!1,24,0);c.vertexAttribDivisor(h, +1);var m=d.attribute("aVertexSecond");f.vertexBuffer.bindToVertexAttrib(m,3,WebGL2RenderingContext.FLOAT,!1,24,12);c.vertexAttribDivisor(m,1);c.drawArraysInstanced(c.TRIANGLE_STRIP,0,4,l);c.vertexAttribDivisor(h,0);c.vertexAttribDivisor(m,0)}}this.endSlice(d)}}}}]);return f}(h.a)},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&& null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return g});h=a(1);var n=a(2),d=a(4),b=a(7),c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a, d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),e=function k(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return k(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}};a(297);var g=function(a){function g(a){if(!(this instanceof g))throw new TypeError("Cannot call a class as a function");var c=q(this,(g.__proto__||Object.getPrototypeOf(g)).call(this)); c.model=a;c.promptElement=document.createElement("span");c.element=document.createElement("label");c.inputx=document.createElement("input");c.inputy=document.createElement("input");c.inputz=document.createElement("input");c.valueEntered=new b.b;a=c.inputx;var d=c.inputy,e=c.inputz,f=c.element,k=c.promptElement;f.className="vec3-input-row";k.className="vec3-input-label";f.appendChild(k);f.appendChild(a);f.appendChild(d);f.appendChild(e);a.type=d.type=e.type="number";c.updateInput();f=function(){c.model.value= @@ -2330,4 +2329,4 @@ b.scheduled=void 0)};return d}(h.AsyncAction);f.AnimationFrameAction=a},function this.requestAnimationFrame=a.webkitRequestAnimationFrame.bind(a)):a.msRequestAnimationFrame?(this.cancelAnimationFrame=a.msCancelAnimationFrame.bind(a),this.requestAnimationFrame=a.msRequestAnimationFrame.bind(a)):a.oRequestAnimationFrame?(this.cancelAnimationFrame=a.oCancelAnimationFrame.bind(a),this.requestAnimationFrame=a.oRequestAnimationFrame.bind(a)):(this.cancelAnimationFrame=a.clearTimeout.bind(a),this.requestAnimationFrame=function(f){return a.setTimeout(f,1E3/60)})}}();f.RequestAnimationFrameDefinition= a;f.AnimationFrame=new a(h.root)},function(h,f,a){var q=this&&this.__extends||function(a,f){function d(){this.constructor=a}for(var b in f)f.hasOwnProperty(b)&&(a[b]=f[b]);a.prototype=null===f?Object.create(f):(d.prototype=f.prototype,new d)};h=function(a){function f(){a.apply(this,arguments)}q(f,a);f.prototype.flush=function(a){this.active=!0;this.scheduled=void 0;var b=this.actions,c,d=-1,f=b.length;a=a||b.shift();do if(c=a.execute(a.state,a.delay))break;while(++d<f&&(a=b.shift()));this.active= !1;if(c){for(;++d<f&&(a=b.shift());)a.unsubscribe();throw c;}};return f}(a(71).AsyncScheduler);f.AnimationFrameScheduler=h},function(h,f,a){h=a(0);a.n(h);h.Observable.prototype.notNull=function(){return this.filter(function(a){return!!a}).map(function(a){return a})};h.Observable.prototype.unseen=function(a){$jscomp.initSymbol();var f=Symbol("marker");return this.filter(function(h){return!(a?a(h):h)[f]}).map(function(h){(a?a(h):h)[f]=!0;return h})};h.Observable.prototype.ofType=function(a){return this.filter(function(f){return f instanceof -a}).map(function(a){return a})}}])}); +a}).map(function(a){return a})}}]); diff --git a/webpack.aot.js b/webpack.aot.js index 57d469ec9..881b94488 100644 --- a/webpack.aot.js +++ b/webpack.aot.js @@ -19,7 +19,7 @@ module.exports = merge(staticAssets, { module: { rules: [ { - test : /export_nehuba.*?worker.*?\.js$|worker\.js/, + test : /export_nehuba.*?\.js$|worker\.js/, use : { loader : 'file-loader', options: { diff --git a/webpack.common.js b/webpack.common.js index 64d93df42..cd45150f4 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -10,7 +10,7 @@ module.exports = { exclude : /node_modules|[Ss]pec\.ts$/ }, { - test : /.*?worker.*?\.js$/, + test : /export_nehuba|.*?worker.*?\.js$/, use : { loader : 'file-loader', options: { -- GitLab