From 9b45a78e585cda69447fe56e8cadd4a5ada8b196 Mon Sep 17 00:00:00 2001 From: Kevin Jahns Date: Thu, 9 Jul 2015 15:50:59 +0200 Subject: [PATCH] fixing types. --- src/OperationStore.js | 53 +++++++++++++++-------------------- src/OperationStores/Memory.js | 12 ++++---- src/Struct.js | 19 ++++++------- src/Types/List.js | 15 ++++++---- src/Types/Map.js | 4 ++- src/y.js | 7 +++-- src/y.spec.js | 21 ++++++++++++-- y.js | 4 +-- y.js.map | 2 +- 9 files changed, 76 insertions(+), 61 deletions(-) diff --git a/src/OperationStore.js b/src/OperationStore.js index f6de0858..355e2beb 100644 --- a/src/OperationStore.js +++ b/src/OperationStore.js @@ -4,8 +4,22 @@ class AbstractTransaction { //eslint-disable-line no-unused-vars this.store = store; } *getType (id) { - var op = yield* this.getOperation(id); - return new Y[op.type].Create(op); + var sid = JSON.stringify(id); + var t = this.store.initializedTypes[sid]; + if (t == null) { + var op = yield* this.getOperation(id); + if (op != null) { + t = new Y[op.type].Create(op.id); + this.store.initializedTypes[sid] = t; + } + } + return t; + } + createType (model) { + var sid = JSON.stringify(model.id); + var t = new Y[model.type].Create(model.id); + this.store.initializedTypes[sid] = t; + return t; } // returns false if operation is not expected. *addOperation (op) { @@ -34,9 +48,6 @@ type Id = [string, number]; class AbstractOperationStore { //eslint-disable-line no-unused-vars constructor (y) { this.y = y; - this.parentListeners = {}; - this.parentListenersRequestPending = false; - this.parentListenersActivated = {}; // E.g. this.listenersById[id] : Array this.listenersById = {}; // Execute the next time a transaction is requested @@ -53,6 +64,9 @@ class AbstractOperationStore { //eslint-disable-line no-unused-vars Always remember to first overwrite a property before you iterate over it! */ + // TODO: Use ES7 Weak Maps. This way types that are no longer user, + // wont be kept in memory. + this.initializedTypes = {}; } setUserId (userId) { this.userId = userId; @@ -142,32 +156,11 @@ class AbstractOperationStore { //eslint-disable-line no-unused-vars } } } - // notify parent listeners, if possible - var listeners = this.parentListeners[op.parent]; - if ( this.parentListenersRequestPending - || ( listeners == null ) - || ( listeners.length === 0 )) { - return; + // notify parent, if it has been initialized as a custom type + var t = this.initializedTypes[JSON.stringify(op.parent)]; + if (t != null) { + t._changed(op); } - var al = this.parentListenersActivated[JSON.stringify(op.parent)]; - if ( al == null ){ - al = []; - this.parentListenersActivated[JSON.stringify(op.parent)] = al; - } - al.push(op); - - this.parentListenersRequestPending = true; - var store = this; - this.requestTransaction(function*(){ - store.parentListenersRequestPending = false; - var activatedOperations = store.parentListenersActivated; - store.parentListenersActivated = {}; - for (var parentId in activatedOperations){ - var parent = yield* this.getOperation(parentId); - Struct[parent.struct].notifyObservers(activatedOperations[parentId]); - } - }); - } removeParentListener (id, f) { var ls = this.parentListeners[id]; diff --git a/src/OperationStores/Memory.js b/src/OperationStores/Memory.js index 2e5a11e1..353c8103 100644 --- a/src/OperationStores/Memory.js +++ b/src/OperationStores/Memory.js @@ -35,12 +35,10 @@ Y.Memory = (function(){ //eslint-disable-line no-unused-vars return op; } *getOperation (id) { - var op = this.os.find(id); - if (op == null) { - throw new Error("Op does not exist.."); - } else { - return op; + if (id == null) { + throw new Error("You must define id!"); } + return this.os.find(id); } *removeOperation (id) { this.os.delete(id); @@ -123,13 +121,13 @@ Y.Memory = (function(){ //eslint-disable-line no-unused-vars } requestTransaction (makeGen : Function) { var t = new Transaction(this); - var gen = makeGen.call(t, new Y.Map.Create(["_", 0])); + var gen = makeGen.call(t, t.getType(["_", 0]).next().value); var res = gen.next(); while(!res.done){ if (res.value === "transaction") { res = gen.next(t); } else { - throw new Error("You may not yield this type. (Maybe you meant to use 'yield*'?)"); + throw new Error("You must not yield this type. (Maybe you meant to use 'yield*'?)"); } } } diff --git a/src/Struct.js b/src/Struct.js index e8f69822..76701ab0 100644 --- a/src/Struct.js +++ b/src/Struct.js @@ -417,9 +417,12 @@ var Struct = { } }, get: function* (op, name) { - var res = yield* this.getOperation(op.map[name]); - return (res == null || res.deleted) ? void 0 : (res.opContent == null - ? res.content : yield* this.getType(res.opContent)); + var oid = op.map[name]; + if (oid != null) { + var res = yield* this.getOperation(oid); + return (res == null || res.deleted) ? void 0 : (res.opContent == null + ? res.content : yield* this.getType(res.opContent)); + } }, set: function* (op, name, value) { var right = op.map[name] || null; @@ -429,19 +432,13 @@ var Struct = { parent: op.id, parentSub: name }; - var oid; if ( value != null && value._model != null - && (oid = value._model.id) != null && oid.length === 2) { - insert.opContent = oid; + && value._model.length === 2) { + insert.opContent = value._model; } else { insert.content = value; } yield* Struct.Insert.create.call(this, insert); - if (right != null) { - yield* Struct.Delete.create.call(this, { - target: right - }); - } }, delete: function* (op, name) { var v = op.map[name] || null; diff --git a/src/Types/List.js b/src/Types/List.js index 9c40652d..990d100a 100644 --- a/src/Types/List.js +++ b/src/Types/List.js @@ -8,11 +8,12 @@ } *val (pos) { var t = yield "transaction"; + var model = yield* t.getOperation(this._model); if (pos != null) { - var o = yield* Y.Struct.List.ref.call(t, this._model, pos); + var o = yield* Y.Struct.List.ref.call(t, model, pos); return o ? o.content : null; } else { - return yield* Y.Struct.List.map.call(t, this._model, function(c){return c; }); + return yield* Y.Struct.List.map.call(t, model, function(c){return c; }); } } *insert (pos, contents) { @@ -23,21 +24,25 @@ throw new Error("contents must be an Array of objects!"); } var t = yield "transaction"; - yield* Y.Struct.List.insert.call(t, this._model, pos, contents); + var model = yield* t.getOperation(this._model); + yield* Y.Struct.List.insert.call(t, model, pos, contents); } *delete (pos) { if (typeof pos !== "number") { throw new Error("pos must be a number!"); } var t = yield "transaction"; - yield* Y.Struct.List.delete.call(t, this._model, pos); + var model = yield* t.getOperation(this._model); + yield* Y.Struct.List.delete.call(t, model, pos); + } + _changed () { } } Y.List = function* YList(){ var t = yield "transaction"; var model = yield* Y.Struct.List.create.call(t, {type: "List"}); - return new List(model); + return t.createType(model); }; Y.List.Create = List; })(); diff --git a/src/Types/Map.js b/src/Types/Map.js index b87d738a..0dd3ce1e 100644 --- a/src/Types/Map.js +++ b/src/Types/Map.js @@ -29,13 +29,15 @@ var model = yield* t.getOperation(this._model); yield* Y.Struct.Map.delete.call(t, model, key); } + _changed () { + } } Y.Map = function* YMap(){ var t = yield "transaction"; if (this instanceof Y.AbstractOperationStore) { var model = yield* Y.Struct.map.create.call(t, {type: "Map"}); - return new Map(model); + return t.createType(model); } else { throw new Error("Don't use `new` to create this type!"); } diff --git a/src/y.js b/src/y.js index 07ddd473..0cbad5c0 100644 --- a/src/y.js +++ b/src/y.js @@ -8,11 +8,14 @@ class Y { //eslint-disable-line no-unused-vars this.connector = new Y[opts.connector.name](this, opts.connector); this.db.requestTransaction(function*(){ // create initial Map type - yield* this.addOperation({ + var model = { id: ["_", 0], struct: "Map", + type: "Map", map: {} - }); + }; + yield* this.addOperation(model); + this.createType(model); }); } transact (generator) { diff --git a/src/y.spec.js b/src/y.spec.js index ed9c263d..5623783a 100644 --- a/src/y.spec.js +++ b/src/y.spec.js @@ -21,7 +21,6 @@ function getRandomNumber(n) { return Math.floor(Math.random() * n); } - var numberOfYMapTests = 30; function applyRandomTransactions (users, transactions, numberOfTransactions) { @@ -94,12 +93,30 @@ describe("Yjs", function(){ }); describe("Basic tests", function(){ - it("There is an initial Map type", function(){ + it("There is an initial Map type & it is created only once", function(){ var y = this.users[0]; + var root1; y.transact(function*(root){ expect(root).not.toBeUndefined(); + root1 = root; + }); + y.transact(function*(root2){ + expect(root1).toBe(root2); }); }); + it("Custom Types are created only once", function(){ + var y = this.users[0]; + var l1; + y.transact(function*(root){ + var l = yield* Y.List(); + yield* root.val("list", l); + l1 = l; + }); + y.transact(function*(root){ + expect(l1).toBe(yield* root.val("list")); + }); + }); + it("Basic get&set of Map property (converge via sync)", function(){ var y = this.users[0]; y.transact(function*(root){ diff --git a/y.js b/y.js index 3afc8332..f0fc1f20 100644 --- a/y.js +++ b/y.js @@ -1,3 +1,3 @@ -"use strict";function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _flushOne(){var e=[];for(var t in globalRoom.buffers)globalRoom.buffers[t].length>0&&e.push(t);if(e.length>0){var r=getRandom(e),n=globalRoom.buffers[r].shift(),a=globalRoom.users[r];return a.receiveMessage(n[0],n[1]),!0}return!1}function copyObject(e){var t={};for(var r in e)t[r]=e[r];return t}function compareIds(e,t){return null==e||null==t?null==e&&null==t?!0:!1:e[0]===t[0]&&e[1]===t[1]?!0:!1}var _createClass=function(){function e(e,t){for(var r=0;rt;++t)this[e]=null},stop:function(){this.done=!0;var e=this.tryEntries[0],t=e.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){function t(t,n){return i.type="throw",i.arg=e,r.next=t,!!n}if(this.done)throw e;for(var r=this,n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n],i=a.completion;if("root"===a.tryLoc)return t("end");if(a.tryLoc<=this.prev){var s=b.call(a,"catchLoc"),o=b.call(a,"finallyLoc");if(s&&o){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&b.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),p(r),S}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;p(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:h(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:void 0);var GeneratorFunction=regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},e,this)}).constructor,Y=function(){function e(t){_classCallCheck(this,e),this.db=new e[t.db.name](this,t.db),this.connector=new e[t.connector.name](this,t.connector),this.db.requestTransaction(regeneratorRuntime.mark(function r(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.addOperation({id:["_",0],struct:"Map",map:{}}),"t0",1);case 1:case"end":return e.stop()}},r,this)}))}return e.prototype.transact=function(e){if(e.constructor!==GeneratorFunction)throw new Error("y.transact requires a Generator function! E.g. function*(){/*..*/}");this.db.requestTransaction(e)},e.prototype.destroy=function(){this.connector.disconnect(),this.db.removeDatabase(),this.connector=null,this.db=null,this.transact=function(){throw new Error("Remember?, you destroyed this type ;)")}},e}();Y.AbstractTransaction=AbstractTransaction,Y.AbstractOperationStore=AbstractOperationStore,Y.Struct=Struct;var globalRoom={users:{},buffers:{},removeUser:function(e){for(var t in this.users)this.users[t].userLeft(e);delete this.users[e],delete this.buffers[e]},addUser:function(e){this.users[e.userId]=e,this.buffers[e.userId]=[];for(var t in this.users)if(t!==e.userId){var r=this.users[t];r.userJoined(e.userId,"master"),e.userJoined(r.userId,"master")}}},userIdCounter=0,Test=function(e){function t(r,n){if(_classCallCheck(this,t),void 0===n)throw new Error("Options must not be undefined!");n.role="master",n.forwardToSyncingClients=!1,e.call(this,r,n),this.setUserId(userIdCounter++ +""),globalRoom.addUser(this),this.globalRoom=globalRoom}return _inherits(t,e),t.prototype.send=function(e,t){globalRoom.buffers[e].push(JSON.parse(JSON.stringify([this.userId,t])))},t.prototype.broadcast=function(e){for(var t in globalRoom.buffers)globalRoom.buffers[t].push(JSON.parse(JSON.stringify([this.userId,e])))},t.prototype.disconnect=function(){globalRoom.removeUser(this.userId)},t.prototype.flushAll=function(){for(var e=!0;e;)e=_flushOne()},t.prototype.flushOne=function(){_flushOne()},t}(AbstractConnector);Y.Test=Test;var WebRTC=function(e){function t(r){if(_classCallCheck(this,t),void 0===r)throw new Error("Options must not be undefined!");e.call(this,{role:"slave"});var n=r.room;null==r.url&&(r.url="https://yatta.ninja:8888");var a=new SimpleWebRTC(r);this.swr=a;var i=this;a.once("connectionReady",function(e){a.joinRoom(n),a.once("joinedRoom",function(){i.setUserId(e);var t;for(t in i.swr.webrtc.peers)i.userJoined(i.swr.webrtc.peers[t].id,"master");a.on("channelMessage",function(e,t,r){null!=r.type&&i.receiveMessage(e.id,r.payload)})}),a.on("createdPeer",function(e){i.userJoined(e.id,"master")}),a.on("peerStreamRemoved",function(e){i.userLeft(e.id)})})}return _inherits(t,e),t.prototype.send=function r(e,t){var n=this,r=function a(){var r,i=n.swr.webrtc.getPeers(e)[0];i&&(r=i.sendDirectly("simplewebrtc","yjs",t)),r||setTimeout(a,500)};r()},t.prototype.broadcast=function(e){this.swr.sendDirectlyToAll("simplewebrtc","yjs",e)},t}(AbstractConnector);Y.WebRTC=WebRTC,Y.IndexedDB=function(){var e=function(e){function t(r){_classCallCheck(this,t),e.call(this,r),this.transaction=r.db.transaction(["OperationStore","StateVector"],"readwrite"),this.sv=this.transaction.objectStore("StateVector"),this.os=this.transaction.objectStore("OperationStore"),this.buffer={}}return _inherits(t,e),t.prototype.setOperation=regeneratorRuntime.mark(function r(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.os.put(e);case 2:return this.buffer[JSON.stringify(e.id)]=e,t.abrupt("return",e);case 4:case"end":return t.stop()}},r,this)}),t.prototype.getOperation=regeneratorRuntime.mark(function n(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(t=this.buffer[JSON.stringify(e)],null!=t){r.next=6;break}return r.next=4,this.os.get(e);case 4:t=r.sent,this.buffer[JSON.stringify(e)]=t;case 6:return r.abrupt("return",t);case 7:case"end":return r.stop()}},n,this)}),t.prototype.removeOperation=regeneratorRuntime.mark(function a(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return this.buffer[JSON.stringify(e)]=null,t.next=3,this.os["delete"](e);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}},a,this)}),t.prototype.setState=regeneratorRuntime.mark(function i(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.sv.put(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},i,this)}),t.prototype.getState=regeneratorRuntime.mark(function s(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.sv.get(e);case 2:if(r.t0=t=r.sent,null==r.t0){r.next=7;break}return r.abrupt("return",t);case 7:return r.abrupt("return",{user:e,clock:0});case 8:case"end":return r.stop()}},s,this)}),t.prototype.getStateVector=regeneratorRuntime.mark(function o(){var e,t,r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:e=[],t=this.sv.openCursor();case 2:return n.next=4,t;case 4:if(n.t0=r=n.sent,null==n.t0){n.next=10;break}e.push(r.value),r["continue"](),n.next=2;break;case 10:return n.abrupt("return",e);case 11:case"end":return n.stop()}},o,this)}),t.prototype.getStateSet=regeneratorRuntime.mark(function u(){var e,t,r,n,a,i,s;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.delegateYield(this.getStateVector(),"t0",1);case 1:e=o.t0,t={},r=e,n=Array.isArray(r),a=0,r=n?r:r[Symbol.iterator]();case 4:if(!n){o.next=10;break}if(!(a>=r.length)){o.next=7;break}return o.abrupt("break",18);case 7:i=r[a++],o.next=14;break;case 10:if(a=r.next(),!a.done){o.next=13;break}return o.abrupt("break",18);case 13:i=a.value;case 14:s=i,t[s.user]=s.clock;case 16:o.next=4;break;case 18:return o.abrupt("return",t);case 19:case"end":return o.stop()}},u,this)}),t.prototype.getOperations=regeneratorRuntime.mark(function c(e){var t,r,n,a,i,s,o,u,l,p,f,h,d;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return null==e&&(e={}),t=[],c.delegateYield(this.getStateVector(),"t0",3);case 3:r=c.t0,n=r,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();case 5:if(!a){c.next=11;break}if(!(i>=n.length)){c.next=8;break}return c.abrupt("break",31);case 8:s=n[i++],c.next=15;break;case 11:if(i=n.next(),!i.done){c.next=14;break}return c.abrupt("break",31);case 14:s=i.value;case 15:o=s,u=o.user,l=e[u]||0,p=o.clock,f=IDBKeyRange.bound([u,l],[u,p]),h=this.os.openCursor(f);case 21:return c.next=23,h;case 23:if(c.t1=d=c.sent,null==c.t1){c.next=29;break}t.push(d.value),d["continue"](),c.next=21;break;case 29:c.next=5;break;case 31:return c.abrupt("return",t);case 32:case"end":return c.stop()}},c,this)}),t}(AbstractTransaction),t=function(t){function r(n,a){function i(e){var t=e.value;e.done||(t.constructor===IDBRequest||t.constructor===IDBCursor?(t.onsuccess=function(){i(o.next(t.result))},t.onerror=function(e){o["throw"](e)}):t===s.transactionQueue?t.queue.length>0?i(o.next(t.queue.shift())):t.onRequest=function(){t.onRequest=null,i(o.next(t.queue.shift()))}:t.constructor===IDBOpenDBRequest?(t.onsuccess=function(e){var t=e.target.result;i(o.next(t))},t.onerror=function(){o["throw"]("Couldn't open IndexedDB database!")},t.onupgradeneeded=function(e){var t=e.target.result;try{t.createObjectStore("OperationStore",{keyPath:"id"}),t.createObjectStore("StateVector",{keyPath:"user"})}catch(r){}}):o["throw"]("You can not yield this type!"))}if(_classCallCheck(this,r),t.call(this,n),null==a&&(a={}),null==a.namespace||"string"!=typeof a.namespace)throw new Error("IndexedDB: expect a string (opts.namespace)!");this.namespace=a.namespace,this.idbVersion=null!=a.idbVersion?a.idbVersion:5,this.transactionQueue={queue:[],onRequest:null};var s=this,o=regeneratorRuntime.mark(function u(){var t,r,n,i;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,indexedDB.open(a.namespace,s.idbVersion);case 2:s.db=o.sent,t=s.transactionQueue,r=null,n=!0;case 6:if(!n){o.next=14;break}return o.next=9,t;case 9:return i=o.sent,r=new e(s),o.delegateYield(i.call(r,i),"t0",12);case 12:o.next=6;break;case 14:case"end":return o.stop()}},u,this)})();i(o.next())}return _inherits(r,t),r.prototype.requestTransaction=function(e){this.transactionQueue.queue.push(e),null!=this.transactionQueue.onRequest&&this.transactionQueue.onRequest()},r.prototype.removeDatabase=regeneratorRuntime.mark(function n(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.db.close(),e.next=3,indexedDB.deleteDatabase(this.namespace);case 3:case"end":return e.stop()}},n,this)}),r}(AbstractOperationStore);return t}(),Y.Memory=function(){var e=function(e){function t(r){_classCallCheck(this,t),e.call(this,r),this.ss=r.ss,this.os=r.os}return _inherits(t,e),t.prototype.setOperation=regeneratorRuntime.mark(function r(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=this.os.findNode(e.id),t.val=e,r.abrupt("return",e);case 3:case"end":return r.stop()}},r,this)}),t.prototype.getOperation=regeneratorRuntime.mark(function n(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(t=this.os.find(e),null!=t){r.next=5;break}throw new Error("Op does not exist..");case 5:return r.abrupt("return",t);case 6:case"end":return r.stop()}},n,this)}),t.prototype.removeOperation=regeneratorRuntime.mark(function a(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.os["delete"](e);case 1:case"end":return t.stop()}},a,this)}),t.prototype.setState=regeneratorRuntime.mark(function i(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.ss[e.user]=e.clock;case 1:case"end":return t.stop()}},i,this)}),t.prototype.getState=regeneratorRuntime.mark(function s(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=this.ss[e],null==t&&(t=0),r.abrupt("return",{user:e,clock:t});case 3:case"end":return r.stop()}},s,this)}),t.prototype.getStateVector=regeneratorRuntime.mark(function o(){var e,t,r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:e=[];for(t in this.ss)r=this.ss[t],e.push({user:t,clock:r});return n.abrupt("return",e);case 3:case"end":return n.stop()}},o,this)}),t.prototype.getStateSet=regeneratorRuntime.mark(function u(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.ss);case 1:case"end":return e.stop()}},u,this)}),t.prototype.getOperations=regeneratorRuntime.mark(function c(e){var t,r,n,a,i,s,o,u,l,p,f,h,d,g,b,y;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return null==e&&(e={}),t=[],c.delegateYield(this.getStateVector(),"t0",3);case 3:r=c.t0,n=r,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();case 5:if(!a){c.next=11;break}if(!(i>=n.length)){c.next=8;break}return c.abrupt("break",24);case 8:s=n[i++],c.next=15;break;case 11:if(i=n.next(),!i.done){c.next=14;break}return c.abrupt("break",24);case 14:s=i.value;case 15:if(o=s,u=o.user,"_"!==u){c.next=19;break}return c.abrupt("continue",22);case 19:l=e[u]||0,p=o.clock,this.os.iterate([u,l],[u,p],function(e){t.push(Struct[e.struct].encode(e))});case 22:c.next=5;break;case 24:f=[],h=t,d=Array.isArray(h),g=0,h=d?h:h[Symbol.iterator]();case 26:if(!d){c.next=32;break}if(!(g>=h.length)){c.next=29;break}return c.abrupt("break",43);case 29:b=h[g++],c.next=36;break;case 32:if(g=h.next(),!g.done){c.next=35;break}return c.abrupt("break",43);case 35:b=g.value;case 36:return y=b,c.t1=f,c.delegateYield(this.makeOperationReady.call(this,e,y),"t2",39);case 39:c.t3=c.t2,c.t1.push.call(c.t1,c.t3);case 41:c.next=26;break;case 43:return c.abrupt("return",f);case 44:case"end":return c.stop()}},c,this)}),t.prototype.makeOperationReady=regeneratorRuntime.mark(function l(e,t){var r,n;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:n=t;case 1:if(null==n.right){a.next=9;break}return a.delegateYield(this.getOperation(n.right),"t0",3);case 3:if(n=a.t0,r=e[n.id[0]],!(null!=r&&n.id[1]=t.length)break;a=t[n++]}else{if(n=t.next(),n.done)break;a=n.value}var i=a;i({action:"userLeft",user:e})}},e.prototype.userJoined=function(e,t){if(null==t)throw new Error("You must specify the role of the joined user!");if(null!=this.connections[e])throw new Error("This user already joined!");this.connections[e]={isSynced:!1,role:t};for(var r=this.userEventListeners,n=Array.isArray(r),a=0,r=n?r:r[Symbol.iterator]();;){var i;if(n){if(a>=r.length)break;i=r[a++]}else{if(a=r.next(),a.done)break;i=a.value}var s=i;s({action:"userJoined",user:e,role:t})}null==this.currentSyncTarget&&this.findNextSyncTarget()},e.prototype.whenSynced=function(e){this.isSynced===!0?e():this.whenSyncedListeners.push(e)},e.prototype.findNextSyncTarget=function(){if(null!=this.currentSyncTarget&&this.connections[this.currentSyncTarget].isSynced===!1)throw new Error("The current sync has not finished!");var e=null;for(var t in this.connections)if(e=this.connections[t],!e.isSynced)break;if(null!=e){var r=this;this.y.db.requestTransaction(regeneratorRuntime.mark(function u(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r.currentSyncTarget=t,e.t0=r,e.t1=t,e.delegateYield(this.getStateVector(),"t2",4);case 4:e.t3=e.t2,e.t4={type:"sync step 1",stateVector:e.t3},e.t0.send.call(e.t0,e.t1,e.t4);case 7:case"end":return e.stop()}},u,this)}))}if(!this.isSynced){this.isSynced=!0;for(var n=this.whenSyncedListeners,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var s;if(a){if(i>=n.length)break;s=n[i++]}else{if(i=n.next(),i.done)break;s=i.value}var o=s;o()}this.whenSyncedListeners=null}return!1},e.prototype.receiveMessage=function(e,t){var r=this;if(this.debug&&console.log(e+" -> "+this.userId+": "+JSON.stringify(t)),"sync step 1"===t.type)!function(){var n=r;r.y.db.requestTransaction(regeneratorRuntime.mark(function a(){var r,i;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.delegateYield(this.getOperations(t.stateVector),"t0",1);case 1:return r=a.t0,a.delegateYield(this.getStateVector(),"t1",3);case 3:i=a.t1,n.send(e,{type:"sync step 2",os:r,stateVector:i}),this.forwardToSyncingClients&&(n.syncingClients.push(e),setTimeout(function(){n.syncingClients=n.syncingClients.filter(function(t){return t!==e}),n.send(e,{type:"sync done"})},n.syncingClientDuration));case 6:case"end":return a.stop()}},a,this)}))}();else if("sync step 2"===t.type)!function(){r.y.db.apply(t.os);var e=r;r.y.db.requestTransaction(regeneratorRuntime.mark(function n(){var r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.delegateYield(this.getOperations(t.stateVector),"t0",1);case 1:r=n.t0,r.length>0&&e.broadcast({type:"update",ops:r});case 3:case"end":return n.stop()}},n,this)}))}();else if("sync done"===t.type)this.connections[e].isSynced=!0,this.findNextSyncTarget();else if("update"===t.type){ -if(this.forwardToSyncingClients)for(var n=this.syncingClients,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var s;if(a){if(i>=n.length)break;s=n[i++]}else{if(i=n.next(),i.done)break;s=i.value}var o=s;this.send(o,t)}this.y.db.apply(t.ops)}},e.prototype.parseMessageFromXml=function(e){function t(e){var t=!0;e:for(;t;){var n=e;a=i=s=a=o=u=void 0,t=!1;for(var a=n.children,i=Array.isArray(a),s=0,a=i?a:a[Symbol.iterator]();;){var o;if(i){if(s>=a.length)break;o=a[s++]}else{if(s=a.next(),s.done)break;o=s.value}var u=o;if("true"===u.getAttribute("isArray")){e=u,t=!0;continue e}return r(u)}}}function r(e){var n={};for(var a in e.attrs){var i=e.attrs[a],s=parseInt(i);n[a]=isNaN(s)||""+s!==i?i:s}for(var o in e.children){var u=o.name;n[u]="true"===o.getAttribute("isArray")?t(o):r(o)}return n}r(e)},e.prototype.encodeMessageToXml=function(e,t){function r(e,t){for(var a in t){var i=t[a];null==a||(i.constructor===Object?r(e.c(a),i):i.constructor===Array?n(e.c(a),i):e.setAttribute(a,i))}}function n(e,t){e.setAttribute("isArray","true");for(var a=t,i=Array.isArray(a),s=0,a=i?a:a[Symbol.iterator]();;){var o;if(i){if(s>=a.length)break;o=a[s++]}else{if(s=a.next(),s.done)break;o=s.value}var u=o;u.constructor===Object?r(e.c("array-element"),u):n(e.c("array-element"),u)}}if(t.constructor===Object)r(e.c("y",{xmlns:"http://y.ninja/connector-stanza"}),t);else{if(t.constructor!==Array)throw new Error("I can't encode this json!");n(e.c("y",{xmlns:"http://y.ninja/connector-stanza"}),t)}},e}(),AbstractTransaction=function(){function e(t){_classCallCheck(this,e),this.store=t}return e.prototype.getType=regeneratorRuntime.mark(function t(e){var r;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(this.getOperation(e),"t0",1);case 1:return r=t.t0,t.abrupt("return",new Y[r.type].Create(r));case 3:case"end":return t.stop()}},t,this)}),e.prototype.addOperation=regeneratorRuntime.mark(function r(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.delegateYield(this.getState(e.id[0]),"t0",1);case 1:if(t=r.t0,e.id[1]!==t.clock){r.next=10;break}return t.clock++,r.delegateYield(this.setState(t),"t1",5);case 5:return this.os.add(e),this.store.operationAdded(e),r.abrupt("return",!0);case 10:if(!(e.id[1]0){var r={op:t,missing:e.length};for(var n in e){var a=e[n],i=JSON.stringify(a),s=this.listenersById[i];null==s&&(s=[],this.listenersById[i]=s),s.push(r)}}else this.listenersByIdExecuteNow.push({op:t});if(!this.listenersByIdRequestPending){this.listenersByIdRequestPending=!0;var o=this;this.requestTransaction(regeneratorRuntime.mark(function u(){var e,t,r,n,a,i,s,c;return regeneratorRuntime.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:e=o.listenersByIdExecuteNow,o.listenersByIdExecuteNow=[],t=o.listenersById,o.listenersById={},o.listenersByIdRequestPending=!1,u.t0=regeneratorRuntime.keys(e);case 6:if((u.t1=u.t0()).done){u.next=12;break}return r=u.t1.value,n=e[r].op,u.delegateYield(Struct[n.struct].execute.call(this,n),"t2",10);case 10:u.next=6;break;case 12:u.t3=regeneratorRuntime.keys(t);case 13:if((u.t4=u.t3()).done){u.next=34;break}return a=u.t4.value,i=t[a],s=JSON.parse(a),u.delegateYield(this.getOperation(s),"t5",18);case 18:if(u.t6=u.t5,null!=u.t6){u.next=23;break}o.listenersById[a]=i,u.next=32;break;case 23:u.t7=regeneratorRuntime.keys(i);case 24:if((u.t8=u.t7()).done){u.next=32;break}if(r=u.t8.value,c=i[r],n=c.op,0!==--c.missing){u.next=30;break}return u.delegateYield(Struct[n.struct].execute.call(this,n),"t9",30);case 30:u.next=24;break;case 32:u.next=13;break;case 34:case"end":return u.stop()}},u,this)}))}},e.prototype.operationAdded=function(e){var t=JSON.stringify(e.id),r=this.listenersById[t];if(delete this.listenersById[t],null!=r)for(var n in r){var a=r[n];0===--a.missing&&this.whenOperationsExist([],a.op)}var i=this.parentListeners[e.parent];if(!this.parentListenersRequestPending&&null!=i&&0!==i.length){var s=this.parentListenersActivated[JSON.stringify(e.parent)];null==s&&(s=[],this.parentListenersActivated[JSON.stringify(e.parent)]=s),s.push(e),this.parentListenersRequestPending=!0;var o=this;this.requestTransaction(regeneratorRuntime.mark(function u(){var e,t,r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:o.parentListenersRequestPending=!1,e=o.parentListenersActivated,o.parentListenersActivated={},n.t0=regeneratorRuntime.keys(e);case 4:if((n.t1=n.t0()).done){n.next=11;break}return t=n.t1.value,n.delegateYield(this.getOperation(t),"t2",7);case 7:r=n.t2,Struct[r.struct].notifyObservers(e[t]),n.next=4;break;case 11:case"end":return n.stop()}},u,this)}))}},e.prototype.removeParentListener=function(e,t){var r=this.parentListeners[e];null!=r&&(this.parentListeners[e]=r.filter(function(e){return t!==e}))},e.prototype.addParentListener=function(e,t){var r=this.parentListeners[JSON.stringify(e)];null==r&&(r=[],this.parentListeners[JSON.stringify(e)]=r),r.push(t)},e}(),Struct={Operation:{create:regeneratorRuntime.mark(function t(e){var r,n;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.store.y.connector.userId,t.delegateYield(this.getState(r),"t0",2);case 2:return n=t.t0,e.id=[r,n.clock],t.delegateYield(this.addOperation(e),"t1",5);case 5:if(t.t2=t.t1,t.t2!==!1){t.next=8;break}throw new Error("This is highly unexpected :(");case 8:return this.store.y.connector.broadcast({type:"update",ops:[Struct[e.struct].encode(e)]}),t.abrupt("return",e);case 10:case"end":return t.stop()}},t,this)})},Delete:{create:regeneratorRuntime.mark(function r(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(null!=e.target){r.next=2;break}throw new Error("You must define a delete target!");case 2:return e.struct="Delete",r.delegateYield(Struct.Operation.create.call(this,e),"t0",4);case 4:return r.delegateYield(this.getOperation(e.target),"t1",5);case 5:return t=r.t1,t.deleted=!0,r.delegateYield(this.setOperation(t),"t2",8);case 8:case"end":return r.stop()}},r,this)}),encode:function(e){return e},requiredOps:function(e){return[e.target]},execute:regeneratorRuntime.mark(function n(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.delegateYield(this.addOperation(e),"t0",1);case 1:if(r.t1=r.t0,r.t1!==!1){r.next=4;break}return r.abrupt("return");case 4:return r.delegateYield(this.getOperation(e.target),"t2",5);case 5:return t=r.t2,t.deleted=!0,r.delegateYield(this.setOperation(t),"t3",8);case 8:case"end":return r.stop()}},n,this)})},Insert:{create:regeneratorRuntime.mark(function a(e){var t,r,n,i,s;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(void 0!==e.left&&void 0!==e.right&&void 0!==e.parent){a.next=2;break}throw new Error("You must define left, right, and parent!");case 2:return e.origin=e.left,e.struct="Insert",a.delegateYield(Struct.Operation.create.call(this,e),"t0",5);case 5:if(null==e.left){a.next=10;break}return a.delegateYield(this.getOperation(e.left),"t1",7);case 7:return t=a.t1,t.right=e.id,a.delegateYield(this.setOperation(t),"t2",10);case 10:if(null==e.right){a.next=15;break}return a.delegateYield(this.getOperation(e.right),"t3",12);case 12:return r=a.t3,r.left=e.id,a.delegateYield(this.setOperation(r),"t4",15);case 15:return a.delegateYield(this.getOperation(e.parent),"t5",16);case 16:if(n=a.t5,null==e.parentSub){a.next=23;break}if(!compareIds(n.map[e.parentSub],e.right)){a.next=21;break}return n.map[e.parentSub]=e.id,a.delegateYield(this.setOperation(n),"t6",21);case 21:a.next=29;break;case 23:if(i=compareIds(n.start,e.right),s=compareIds(n.end,e.left),!i&&!s){a.next=29;break}return i&&(n.start=e.id),s&&(n.end=e.id),a.delegateYield(this.setOperation(n),"t7",29);case 29:return a.abrupt("return",e);case 30:case"end":return a.stop()}},a,this)}),encode:function(e){return e},requiredOps:function(e){var t=[];return null!=e.left&&t.push(e.left),null!=e.right&&t.push(e.right),null==e.right&&null==e.left&&t.push(e.parent),null!=e.opContent&&t.push(e.opContent),t},getDistanceToOrigin:regeneratorRuntime.mark(function i(e){var t,r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(null!=e.left){n.next=4;break}return n.abrupt("return",0);case 4:return t=0,n.delegateYield(this.getOperation(e.left),"t0",6);case 6:r=n.t0;case 7:if(compareIds(e.origin,r?r.id:null)){n.next=17;break}if(t++,null!=r.left){n.next=13;break}return n.abrupt("break",17);case 13:return n.delegateYield(this.getOperation(r.left),"t1",14);case 14:r=n.t1;case 15:n.next=7;break;case 17:return n.abrupt("return",t);case 18:case"end":return n.stop()}},i,this)}),execute:regeneratorRuntime.mark(function s(e){var t,r,n,a,i,o,u,c,l;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return s.delegateYield(Struct.Insert.getDistanceToOrigin.call(this,e),"t0",1);case 1:if(r=t=s.t0,null==e.left){s.next=14;break}return s.delegateYield(this.getOperation(e.left),"t1",4);case 4:if(n=s.t1,null!=n.right){s.next=9;break}s.t2=null,s.next=11;break;case 9:return s.delegateYield(this.getOperation(n.right),"t3",10);case 10:s.t2=s.t3;case 11:n=s.t2,s.next=25;break;case 14:return s.delegateYield(this.getOperation(e.parent),"t4",15);case 15:if(a=s.t4,o=e.parentSub?a.map[e.parentSub]:a.start,null!=o){s.next=21;break}s.t5=null,s.next=23;break;case 21:return s.delegateYield(this.getOperation(o),"t6",22);case 22:s.t5=s.t6;case 23:i=s.t5,n=i;case 25:if(null==n||compareIds(n.id,e.right)){s.next=48;break}return s.delegateYield(Struct.Insert.getDistanceToOrigin.call(this,n),"t7",28);case 28:if(u=s.t7,u!==t){s.next=33;break}n.id[0]u)){s.next=37;break}u>=t-r&&(e.left=n.id,r=t+1),s.next=38;break;case 37:return s.abrupt("break",51);case 38:if(t++,!n.right){s.next=44;break}return s.delegateYield(this.getOperation(n.right),"t9",41);case 41:s.t8=s.t9,s.next=45;break;case 44:s.t8=null;case 45:n=s.t8,s.next=49;break;case 48:return s.abrupt("break",51);case 49:s.next=25;break;case 51:if(c=null,l=null,s.t10=a,s.t10){s.next=57;break}return s.delegateYield(this.getOperation(e.parent),"t11",56);case 56:s.t10=s.t11;case 57:if(a=s.t10,null==e.left){s.next=70;break}return s.delegateYield(this.getOperation(e.left),"t12",60);case 60:return c=s.t12,e.right=c.right,s.delegateYield(this.addOperation(e),"t13",63);case 63:if(s.t14=s.t13,s.t14!==!1){s.next=66;break}return s.abrupt("return");case 66:return c.right=e.id,s.delegateYield(this.setOperation(c),"t15",68);case 68:s.next=75;break;case 70:return e.right=e.parentSub?a.map[e.parentSub]||null:a.start,s.delegateYield(this.addOperation(e),"t16",72);case 72:if(s.t17=s.t16,s.t17!==!1){s.next=75;break}return s.abrupt("return");case 75:if(null==e.right){s.next=80;break}return s.delegateYield(this.getOperation(e.right),"t18",77);case 77:return l=s.t18,l.left=e.id,s.delegateYield(this.setOperation(l),"t19",80);case 80:if(null==e.parentSub){s.next=86;break}if(null!=c){s.next=84;break}return a.map[e.parentSub]=e.id,s.delegateYield(this.setOperation(a),"t20",84);case 84:s.next=90;break;case 86:if(null!=l&&null!=c){s.next=90;break}return null==l&&(a.end=e.id),null==c&&(a.start=e.id),s.delegateYield(this.setOperation(a),"t21",90);case 90:case"end":return s.stop()}},s,this)})},List:{create:regeneratorRuntime.mark(function o(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e.start=null,e.end=null,e.struct="List",t.delegateYield(Struct.Operation.create.call(this,e),"t0",4);case 4:return t.abrupt("return",t.t0);case 5:case"end":return t.stop()}},o,this)}),encode:function(e){return{struct:"List",id:e.id,type:e.type}},requiredOps:function(){return[]},execute:regeneratorRuntime.mark(function u(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e.start=null,e.end=null,t.delegateYield(this.addOperation(e),"t0",3);case 3:if(t.t1=t.t0,t.t1!==!1){t.next=6;break}return t.abrupt("return");case 6:case"end":return t.stop()}},u,this)}),ref:regeneratorRuntime.mark(function c(e,t){var r,n;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(null!=e.start){a.next=2;break}return a.abrupt("return",null);case 2:return r=null,a.delegateYield(this.getOperation(e.start),"t0",4);case 4:n=a.t0;case 5:if(n.deleted||(r=n,t--),!(t>=0&&null!=n.right)){a.next=12;break}return a.delegateYield(this.getOperation(n.right),"t1",9);case 9:n=a.t1,a.next=13;break;case 12:return a.abrupt("break",15);case 13:a.next=5;break;case 15:return a.abrupt("return",r);case 16:case"end":return a.stop()}},c,this)}),"delete":regeneratorRuntime.mark(function l(e,t){var r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.delegateYield(Struct.List.ref.call(this,e,t),"t0",1);case 1:if(r=n.t0,null==r){n.next=4;break}return n.delegateYield(Struct.Delete.create.call(this,{target:r.id}),"t1",4);case 4:case"end":return n.stop()}},l,this)}),map:regeneratorRuntime.mark(function p(e,t){var r,n;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:e=e.start,r=[];case 2:if(null==e){a.next=9;break}return a.delegateYield(this.getOperation(e),"t0",4);case 4:n=a.t0,n.deleted||r.push(t(n.content)),e=n.right,a.next=2;break;case 9:return a.abrupt("return",r);case 10:case"end":return a.stop()}},p,this)}),insert:regeneratorRuntime.mark(function f(e,t,r){var n,a,i,s,f;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:if(0!==t){o.next=5;break}n=null,a=e.start,o.next=8;break;case 5:return o.delegateYield(Struct.List.ref.call(this,e,t-1),"t0",6);case 6:i=o.t0,null===i?(n=e.end,a=null):(n=i.id,a=i.right);case 8:o.t1=regeneratorRuntime.keys(r);case 9:if((o.t2=o.t1()).done){o.next=16;break}return s=o.t2.value,f={left:n,right:a,content:r[s],parent:e.id},o.delegateYield(Struct.Insert.create.call(this,f),"t3",13);case 13:n=o.t3.id,o.next=9;break;case 16:case"end":return o.stop()}},f,this)})},Map:{create:regeneratorRuntime.mark(function h(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e.map={},e.struct="Map",t.delegateYield(Struct.Operation.create.call(this,e),"t0",3);case 3:return t.abrupt("return",t.t0);case 4:case"end":return t.stop()}},h,this)}),encode:function(e){return{struct:"Map",type:e.type,id:e.id}},requiredOps:function(){return[]},execute:regeneratorRuntime.mark(function d(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(this.addOperation(e),"t0",1);case 1:if(t.t1=t.t0,t.t1!==!1){t.next=4;break}return t.abrupt("return");case 4:case"end":return t.stop()}},d,this)}),get:regeneratorRuntime.mark(function g(e,t){var r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.delegateYield(this.getOperation(e.map[t]),"t0",1);case 1:if(r=n.t0,null!=r&&!r.deleted){n.next=6;break}n.t1=void 0,n.next=13;break;case 6:if(null!=r.opContent){n.next=10;break}n.t2=r.content,n.next=12;break;case 10:return n.delegateYield(this.getType(r.opContent),"t3",11);case 11:n.t2=n.t3;case 12:n.t1=n.t2;case 13:return n.abrupt("return",n.t1);case 14:case"end":return n.stop()}},g,this)}),set:regeneratorRuntime.mark(function b(e,t,r){var n,a,i;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return n=e.map[t]||null,a={left:null,right:n,parent:e.id,parentSub:t},null!=r&&null!=r._model&&null!=(i=r._model.id)&&2===i.length?a.opContent=i:a.content=r,s.delegateYield(Struct.Insert.create.call(this,a),"t0",4);case 4:if(null==n){s.next=6;break}return s.delegateYield(Struct.Delete.create.call(this,{target:n}),"t1",6);case 6:case"end":return s.stop()}},b,this)}),"delete":regeneratorRuntime.mark(function y(e,t){var r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(r=e.map[t]||null,null==r){n.next=3;break}return n.delegateYield(Struct.Delete.create.call(this,{target:r}),"t0",3);case 3:case"end":return n.stop()}},y,this)})}}; +"use strict";function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(e.__proto__=t)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _flushOne(){var e=[];for(var t in globalRoom.buffers)globalRoom.buffers[t].length>0&&e.push(t);if(e.length>0){var r=getRandom(e),n=globalRoom.buffers[r].shift(),a=globalRoom.users[r];return a.receiveMessage(n[0],n[1]),!0}return!1}function copyObject(e){var t={};for(var r in e)t[r]=e[r];return t}function compareIds(e,t){return null==e||null==t?null==e&&null==t?!0:!1:e[0]===t[0]&&e[1]===t[1]?!0:!1}var _createClass=function(){function e(e,t){for(var r=0;rt;++t)this[e]=null},stop:function(){this.done=!0;var e=this.tryEntries[0],t=e.completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){function t(t,n){return i.type="throw",i.arg=e,r.next=t,!!n}if(this.done)throw e;for(var r=this,n=this.tryEntries.length-1;n>=0;--n){var a=this.tryEntries[n],i=a.completion;if("root"===a.tryLoc)return t("end");if(a.tryLoc<=this.prev){var s=b.call(a,"catchLoc"),o=b.call(a,"finallyLoc");if(s&&o){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&b.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),p(r),S}},"catch":function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var a=n.arg;p(r)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:h(e),resultName:t,nextLoc:r},S}}}("object"==typeof global?global:"object"==typeof window?window:"object"==typeof self?self:void 0);var GeneratorFunction=regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},e,this)}).constructor,Y=function(){function e(t){_classCallCheck(this,e),this.db=new e[t.db.name](this,t.db),this.connector=new e[t.connector.name](this,t.connector),this.db.requestTransaction(regeneratorRuntime.mark(function r(){var e;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e={id:["_",0],struct:"Map",type:"Map",map:{}},t.delegateYield(this.addOperation(e),"t0",2);case 2:this.createType(e);case 3:case"end":return t.stop()}},r,this)}))}return e.prototype.transact=function(e){if(e.constructor!==GeneratorFunction)throw new Error("y.transact requires a Generator function! E.g. function*(){/*..*/}");this.db.requestTransaction(e)},e.prototype.destroy=function(){this.connector.disconnect(),this.db.removeDatabase(),this.connector=null,this.db=null,this.transact=function(){throw new Error("Remember?, you destroyed this type ;)")}},e}();Y.AbstractTransaction=AbstractTransaction,Y.AbstractOperationStore=AbstractOperationStore,Y.Struct=Struct;var globalRoom={users:{},buffers:{},removeUser:function(e){for(var t in this.users)this.users[t].userLeft(e);delete this.users[e],delete this.buffers[e]},addUser:function(e){this.users[e.userId]=e,this.buffers[e.userId]=[];for(var t in this.users)if(t!==e.userId){var r=this.users[t];r.userJoined(e.userId,"master"),e.userJoined(r.userId,"master")}}},userIdCounter=0,Test=function(e){function t(r,n){if(_classCallCheck(this,t),void 0===n)throw new Error("Options must not be undefined!");n.role="master",n.forwardToSyncingClients=!1,e.call(this,r,n),this.setUserId(userIdCounter++ +""),globalRoom.addUser(this),this.globalRoom=globalRoom}return _inherits(t,e),t.prototype.send=function(e,t){globalRoom.buffers[e].push(JSON.parse(JSON.stringify([this.userId,t])))},t.prototype.broadcast=function(e){for(var t in globalRoom.buffers)globalRoom.buffers[t].push(JSON.parse(JSON.stringify([this.userId,e])))},t.prototype.disconnect=function(){globalRoom.removeUser(this.userId)},t.prototype.flushAll=function(){for(var e=!0;e;)e=_flushOne()},t.prototype.flushOne=function(){_flushOne()},t}(AbstractConnector);Y.Test=Test;var WebRTC=function(e){function t(r){if(_classCallCheck(this,t),void 0===r)throw new Error("Options must not be undefined!");e.call(this,{role:"slave"});var n=r.room;null==r.url&&(r.url="https://yatta.ninja:8888");var a=new SimpleWebRTC(r);this.swr=a;var i=this;a.once("connectionReady",function(e){a.joinRoom(n),a.once("joinedRoom",function(){i.setUserId(e);var t;for(t in i.swr.webrtc.peers)i.userJoined(i.swr.webrtc.peers[t].id,"master");a.on("channelMessage",function(e,t,r){null!=r.type&&i.receiveMessage(e.id,r.payload)})}),a.on("createdPeer",function(e){i.userJoined(e.id,"master")}),a.on("peerStreamRemoved",function(e){i.userLeft(e.id)})})}return _inherits(t,e),t.prototype.send=function r(e,t){var n=this,r=function a(){var r,i=n.swr.webrtc.getPeers(e)[0];i&&(r=i.sendDirectly("simplewebrtc","yjs",t)),r||setTimeout(a,500)};r()},t.prototype.broadcast=function(e){this.swr.sendDirectlyToAll("simplewebrtc","yjs",e)},t}(AbstractConnector);Y.WebRTC=WebRTC,Y.IndexedDB=function(){var e=function(e){function t(r){_classCallCheck(this,t),e.call(this,r),this.transaction=r.db.transaction(["OperationStore","StateVector"],"readwrite"),this.sv=this.transaction.objectStore("StateVector"),this.os=this.transaction.objectStore("OperationStore"),this.buffer={}}return _inherits(t,e),t.prototype.setOperation=regeneratorRuntime.mark(function r(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.os.put(e);case 2:return this.buffer[JSON.stringify(e.id)]=e,t.abrupt("return",e);case 4:case"end":return t.stop()}},r,this)}),t.prototype.getOperation=regeneratorRuntime.mark(function n(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(t=this.buffer[JSON.stringify(e)],null!=t){r.next=6;break}return r.next=4,this.os.get(e);case 4:t=r.sent,this.buffer[JSON.stringify(e)]=t;case 6:return r.abrupt("return",t);case 7:case"end":return r.stop()}},n,this)}),t.prototype.removeOperation=regeneratorRuntime.mark(function a(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return this.buffer[JSON.stringify(e)]=null,t.next=3,this.os["delete"](e);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}},a,this)}),t.prototype.setState=regeneratorRuntime.mark(function i(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.sv.put(e);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}},i,this)}),t.prototype.getState=regeneratorRuntime.mark(function s(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,this.sv.get(e);case 2:if(r.t0=t=r.sent,null==r.t0){r.next=7;break}return r.abrupt("return",t);case 7:return r.abrupt("return",{user:e,clock:0});case 8:case"end":return r.stop()}},s,this)}),t.prototype.getStateVector=regeneratorRuntime.mark(function o(){var e,t,r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:e=[],t=this.sv.openCursor();case 2:return n.next=4,t;case 4:if(n.t0=r=n.sent,null==n.t0){n.next=10;break}e.push(r.value),r["continue"](),n.next=2;break;case 10:return n.abrupt("return",e);case 11:case"end":return n.stop()}},o,this)}),t.prototype.getStateSet=regeneratorRuntime.mark(function u(){var e,t,r,n,a,i,s;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.delegateYield(this.getStateVector(),"t0",1);case 1:e=o.t0,t={},r=e,n=Array.isArray(r),a=0,r=n?r:r[Symbol.iterator]();case 4:if(!n){o.next=10;break}if(!(a>=r.length)){o.next=7;break}return o.abrupt("break",18);case 7:i=r[a++],o.next=14;break;case 10:if(a=r.next(),!a.done){o.next=13;break}return o.abrupt("break",18);case 13:i=a.value;case 14:s=i,t[s.user]=s.clock;case 16:o.next=4;break;case 18:return o.abrupt("return",t);case 19:case"end":return o.stop()}},u,this)}),t.prototype.getOperations=regeneratorRuntime.mark(function c(e){var t,r,n,a,i,s,o,u,l,p,f,h,d;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return null==e&&(e={}),t=[],c.delegateYield(this.getStateVector(),"t0",3);case 3:r=c.t0,n=r,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();case 5:if(!a){c.next=11;break}if(!(i>=n.length)){c.next=8;break}return c.abrupt("break",31);case 8:s=n[i++],c.next=15;break;case 11:if(i=n.next(),!i.done){c.next=14;break}return c.abrupt("break",31);case 14:s=i.value;case 15:o=s,u=o.user,l=e[u]||0,p=o.clock,f=IDBKeyRange.bound([u,l],[u,p]),h=this.os.openCursor(f);case 21:return c.next=23,h;case 23:if(c.t1=d=c.sent,null==c.t1){c.next=29;break}t.push(d.value),d["continue"](),c.next=21;break;case 29:c.next=5;break;case 31:return c.abrupt("return",t);case 32:case"end":return c.stop()}},c,this)}),t}(AbstractTransaction),t=function(t){function r(n,a){function i(e){var t=e.value;e.done||(t.constructor===IDBRequest||t.constructor===IDBCursor?(t.onsuccess=function(){i(o.next(t.result))},t.onerror=function(e){o["throw"](e)}):t===s.transactionQueue?t.queue.length>0?i(o.next(t.queue.shift())):t.onRequest=function(){t.onRequest=null,i(o.next(t.queue.shift()))}:t.constructor===IDBOpenDBRequest?(t.onsuccess=function(e){var t=e.target.result;i(o.next(t))},t.onerror=function(){o["throw"]("Couldn't open IndexedDB database!")},t.onupgradeneeded=function(e){var t=e.target.result;try{t.createObjectStore("OperationStore",{keyPath:"id"}),t.createObjectStore("StateVector",{keyPath:"user"})}catch(r){}}):o["throw"]("You can not yield this type!"))}if(_classCallCheck(this,r),t.call(this,n),null==a&&(a={}),null==a.namespace||"string"!=typeof a.namespace)throw new Error("IndexedDB: expect a string (opts.namespace)!");this.namespace=a.namespace,this.idbVersion=null!=a.idbVersion?a.idbVersion:5,this.transactionQueue={queue:[],onRequest:null};var s=this,o=regeneratorRuntime.mark(function u(){var t,r,n,i;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:return o.next=2,indexedDB.open(a.namespace,s.idbVersion);case 2:s.db=o.sent,t=s.transactionQueue,r=null,n=!0;case 6:if(!n){o.next=14;break}return o.next=9,t;case 9:return i=o.sent,r=new e(s),o.delegateYield(i.call(r,i),"t0",12);case 12:o.next=6;break;case 14:case"end":return o.stop()}},u,this)})();i(o.next())}return _inherits(r,t),r.prototype.requestTransaction=function(e){this.transactionQueue.queue.push(e),null!=this.transactionQueue.onRequest&&this.transactionQueue.onRequest()},r.prototype.removeDatabase=regeneratorRuntime.mark(function n(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.db.close(),e.next=3,indexedDB.deleteDatabase(this.namespace);case 3:case"end":return e.stop()}},n,this)}),r}(AbstractOperationStore);return t}(),Y.Memory=function(){var e=function(e){function t(r){_classCallCheck(this,t),e.call(this,r),this.ss=r.ss,this.os=r.os}return _inherits(t,e),t.prototype.setOperation=regeneratorRuntime.mark(function r(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=this.os.findNode(e.id),t.val=e,r.abrupt("return",e);case 3:case"end":return r.stop()}},r,this)}),t.prototype.getOperation=regeneratorRuntime.mark(function n(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(null!=e){t.next=2;break}throw new Error("You must define id!");case 2:return t.abrupt("return",this.os.find(e));case 3:case"end":return t.stop()}},n,this)}),t.prototype.removeOperation=regeneratorRuntime.mark(function a(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.os["delete"](e);case 1:case"end":return t.stop()}},a,this)}),t.prototype.setState=regeneratorRuntime.mark(function i(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:this.ss[e.user]=e.clock;case 1:case"end":return t.stop()}},i,this)}),t.prototype.getState=regeneratorRuntime.mark(function s(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t=this.ss[e],null==t&&(t=0),r.abrupt("return",{user:e,clock:t});case 3:case"end":return r.stop()}},s,this)}),t.prototype.getStateVector=regeneratorRuntime.mark(function o(){var e,t,r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:e=[];for(t in this.ss)r=this.ss[t],e.push({user:t,clock:r});return n.abrupt("return",e);case 3:case"end":return n.stop()}},o,this)}),t.prototype.getStateSet=regeneratorRuntime.mark(function u(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.ss);case 1:case"end":return e.stop()}},u,this)}),t.prototype.getOperations=regeneratorRuntime.mark(function c(e){var t,r,n,a,i,s,o,u,l,p,f,h,d,g,b,y;return regeneratorRuntime.wrap(function(c){for(;;)switch(c.prev=c.next){case 0:return null==e&&(e={}),t=[],c.delegateYield(this.getStateVector(),"t0",3);case 3:r=c.t0,n=r,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();case 5:if(!a){c.next=11;break}if(!(i>=n.length)){c.next=8;break}return c.abrupt("break",24);case 8:s=n[i++],c.next=15;break;case 11:if(i=n.next(),!i.done){c.next=14;break}return c.abrupt("break",24);case 14:s=i.value;case 15:if(o=s,u=o.user,"_"!==u){c.next=19;break}return c.abrupt("continue",22);case 19:l=e[u]||0,p=o.clock,this.os.iterate([u,l],[u,p],function(e){t.push(Struct[e.struct].encode(e))});case 22:c.next=5;break;case 24:f=[],h=t,d=Array.isArray(h),g=0,h=d?h:h[Symbol.iterator]();case 26:if(!d){c.next=32;break}if(!(g>=h.length)){c.next=29;break}return c.abrupt("break",43);case 29:b=h[g++],c.next=36;break;case 32:if(g=h.next(),!g.done){c.next=35;break}return c.abrupt("break",43);case 35:b=g.value;case 36:return y=b,c.t1=f,c.delegateYield(this.makeOperationReady.call(this,e,y),"t2",39);case 39:c.t3=c.t2,c.t1.push.call(c.t1,c.t3);case 41:c.next=26;break;case 43:return c.abrupt("return",f);case 44:case"end":return c.stop()}},c,this)}),t.prototype.makeOperationReady=regeneratorRuntime.mark(function l(e,t){var r,n;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:n=t;case 1:if(null==n.right){a.next=9;break}return a.delegateYield(this.getOperation(n.right),"t0",3);case 3:if(n=a.t0,r=e[n.id[0]],!(null!=r&&n.id[1]=t.length)break;a=t[n++]}else{if(n=t.next(),n.done)break;a=n.value}var i=a;i({action:"userLeft",user:e})}},e.prototype.userJoined=function(e,t){if(null==t)throw new Error("You must specify the role of the joined user!");if(null!=this.connections[e])throw new Error("This user already joined!");this.connections[e]={isSynced:!1,role:t};for(var r=this.userEventListeners,n=Array.isArray(r),a=0,r=n?r:r[Symbol.iterator]();;){var i;if(n){if(a>=r.length)break;i=r[a++]}else{if(a=r.next(),a.done)break;i=a.value}var s=i;s({action:"userJoined",user:e,role:t})}null==this.currentSyncTarget&&this.findNextSyncTarget()},e.prototype.whenSynced=function(e){this.isSynced===!0?e():this.whenSyncedListeners.push(e)},e.prototype.findNextSyncTarget=function(){if(null!=this.currentSyncTarget&&this.connections[this.currentSyncTarget].isSynced===!1)throw new Error("The current sync has not finished!");var e=null;for(var t in this.connections)if(e=this.connections[t],!e.isSynced)break;if(null!=e){var r=this;this.y.db.requestTransaction(regeneratorRuntime.mark(function u(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r.currentSyncTarget=t,e.t0=r,e.t1=t,e.delegateYield(this.getStateVector(),"t2",4);case 4:e.t3=e.t2,e.t4={type:"sync step 1",stateVector:e.t3},e.t0.send.call(e.t0,e.t1,e.t4);case 7:case"end":return e.stop()}},u,this)}))}if(!this.isSynced){this.isSynced=!0;for(var n=this.whenSyncedListeners,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var s;if(a){if(i>=n.length)break;s=n[i++]}else{if(i=n.next(),i.done)break;s=i.value}var o=s;o()}this.whenSyncedListeners=null}return!1},e.prototype.receiveMessage=function(e,t){var r=this;if(this.debug&&console.log(e+" -> "+this.userId+": "+JSON.stringify(t)),"sync step 1"===t.type)!function(){var n=r;r.y.db.requestTransaction(regeneratorRuntime.mark(function a(){var r,i;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:return a.delegateYield(this.getOperations(t.stateVector),"t0",1);case 1:return r=a.t0,a.delegateYield(this.getStateVector(),"t1",3);case 3:i=a.t1,n.send(e,{type:"sync step 2",os:r,stateVector:i}),this.forwardToSyncingClients&&(n.syncingClients.push(e),setTimeout(function(){n.syncingClients=n.syncingClients.filter(function(t){return t!==e}),n.send(e,{type:"sync done"})},n.syncingClientDuration));case 6:case"end":return a.stop()}},a,this)}))}();else if("sync step 2"===t.type)!function(){r.y.db.apply(t.os);var e=r;r.y.db.requestTransaction(regeneratorRuntime.mark(function n(){var r;return regeneratorRuntime.wrap(function(n){ +for(;;)switch(n.prev=n.next){case 0:return n.delegateYield(this.getOperations(t.stateVector),"t0",1);case 1:r=n.t0,r.length>0&&e.broadcast({type:"update",ops:r});case 3:case"end":return n.stop()}},n,this)}))}();else if("sync done"===t.type)this.connections[e].isSynced=!0,this.findNextSyncTarget();else if("update"===t.type){if(this.forwardToSyncingClients)for(var n=this.syncingClients,a=Array.isArray(n),i=0,n=a?n:n[Symbol.iterator]();;){var s;if(a){if(i>=n.length)break;s=n[i++]}else{if(i=n.next(),i.done)break;s=i.value}var o=s;this.send(o,t)}this.y.db.apply(t.ops)}},e.prototype.parseMessageFromXml=function(e){function t(e){var t=!0;e:for(;t;){var n=e;a=i=s=a=o=u=void 0,t=!1;for(var a=n.children,i=Array.isArray(a),s=0,a=i?a:a[Symbol.iterator]();;){var o;if(i){if(s>=a.length)break;o=a[s++]}else{if(s=a.next(),s.done)break;o=s.value}var u=o;if("true"===u.getAttribute("isArray")){e=u,t=!0;continue e}return r(u)}}}function r(e){var n={};for(var a in e.attrs){var i=e.attrs[a],s=parseInt(i);n[a]=isNaN(s)||""+s!==i?i:s}for(var o in e.children){var u=o.name;n[u]="true"===o.getAttribute("isArray")?t(o):r(o)}return n}r(e)},e.prototype.encodeMessageToXml=function(e,t){function r(e,t){for(var a in t){var i=t[a];null==a||(i.constructor===Object?r(e.c(a),i):i.constructor===Array?n(e.c(a),i):e.setAttribute(a,i))}}function n(e,t){e.setAttribute("isArray","true");for(var a=t,i=Array.isArray(a),s=0,a=i?a:a[Symbol.iterator]();;){var o;if(i){if(s>=a.length)break;o=a[s++]}else{if(s=a.next(),s.done)break;o=s.value}var u=o;u.constructor===Object?r(e.c("array-element"),u):n(e.c("array-element"),u)}}if(t.constructor===Object)r(e.c("y",{xmlns:"http://y.ninja/connector-stanza"}),t);else{if(t.constructor!==Array)throw new Error("I can't encode this json!");n(e.c("y",{xmlns:"http://y.ninja/connector-stanza"}),t)}},e}(),AbstractTransaction=function(){function e(t){_classCallCheck(this,e),this.store=t}return e.prototype.getType=regeneratorRuntime.mark(function t(e){var r,n,a;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(r=JSON.stringify(e),n=this.store.initializedTypes[r],null!=n){t.next=6;break}return t.delegateYield(this.getOperation(e),"t0",4);case 4:a=t.t0,null!=a&&(n=new Y[a.type].Create(a.id),this.store.initializedTypes[r]=n);case 6:return t.abrupt("return",n);case 7:case"end":return t.stop()}},t,this)}),e.prototype.createType=function(e){var t=JSON.stringify(e.id),r=new Y[e.type].Create(e.id);return this.store.initializedTypes[t]=r,r},e.prototype.addOperation=regeneratorRuntime.mark(function r(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.delegateYield(this.getState(e.id[0]),"t0",1);case 1:if(t=r.t0,e.id[1]!==t.clock){r.next=10;break}return t.clock++,r.delegateYield(this.setState(t),"t1",5);case 5:return this.os.add(e),this.store.operationAdded(e),r.abrupt("return",!0);case 10:if(!(e.id[1]0){var r={op:t,missing:e.length};for(var n in e){var a=e[n],i=JSON.stringify(a),s=this.listenersById[i];null==s&&(s=[],this.listenersById[i]=s),s.push(r)}}else this.listenersByIdExecuteNow.push({op:t});if(!this.listenersByIdRequestPending){this.listenersByIdRequestPending=!0;var o=this;this.requestTransaction(regeneratorRuntime.mark(function u(){var e,t,r,n,a,i,s,c;return regeneratorRuntime.wrap(function(u){for(;;)switch(u.prev=u.next){case 0:e=o.listenersByIdExecuteNow,o.listenersByIdExecuteNow=[],t=o.listenersById,o.listenersById={},o.listenersByIdRequestPending=!1,u.t0=regeneratorRuntime.keys(e);case 6:if((u.t1=u.t0()).done){u.next=12;break}return r=u.t1.value,n=e[r].op,u.delegateYield(Struct[n.struct].execute.call(this,n),"t2",10);case 10:u.next=6;break;case 12:u.t3=regeneratorRuntime.keys(t);case 13:if((u.t4=u.t3()).done){u.next=34;break}return a=u.t4.value,i=t[a],s=JSON.parse(a),u.delegateYield(this.getOperation(s),"t5",18);case 18:if(u.t6=u.t5,null!=u.t6){u.next=23;break}o.listenersById[a]=i,u.next=32;break;case 23:u.t7=regeneratorRuntime.keys(i);case 24:if((u.t8=u.t7()).done){u.next=32;break}if(r=u.t8.value,c=i[r],n=c.op,0!==--c.missing){u.next=30;break}return u.delegateYield(Struct[n.struct].execute.call(this,n),"t9",30);case 30:u.next=24;break;case 32:u.next=13;break;case 34:case"end":return u.stop()}},u,this)}))}},e.prototype.operationAdded=function(e){var t=JSON.stringify(e.id),r=this.listenersById[t];if(delete this.listenersById[t],null!=r)for(var n in r){var a=r[n];0===--a.missing&&this.whenOperationsExist([],a.op)}var i=this.initializedTypes[JSON.stringify(e.parent)];null!=i&&i._changed(e)},e.prototype.removeParentListener=function(e,t){var r=this.parentListeners[e];null!=r&&(this.parentListeners[e]=r.filter(function(e){return t!==e}))},e.prototype.addParentListener=function(e,t){var r=this.parentListeners[JSON.stringify(e)];null==r&&(r=[],this.parentListeners[JSON.stringify(e)]=r),r.push(t)},e}(),Struct={Operation:{create:regeneratorRuntime.mark(function t(e){var r,n;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return r=this.store.y.connector.userId,t.delegateYield(this.getState(r),"t0",2);case 2:return n=t.t0,e.id=[r,n.clock],t.delegateYield(this.addOperation(e),"t1",5);case 5:if(t.t2=t.t1,t.t2!==!1){t.next=8;break}throw new Error("This is highly unexpected :(");case 8:return this.store.y.connector.broadcast({type:"update",ops:[Struct[e.struct].encode(e)]}),t.abrupt("return",e);case 10:case"end":return t.stop()}},t,this)})},Delete:{create:regeneratorRuntime.mark(function r(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:if(null!=e.target){r.next=2;break}throw new Error("You must define a delete target!");case 2:return e.struct="Delete",r.delegateYield(Struct.Operation.create.call(this,e),"t0",4);case 4:return r.delegateYield(this.getOperation(e.target),"t1",5);case 5:return t=r.t1,t.deleted=!0,r.delegateYield(this.setOperation(t),"t2",8);case 8:case"end":return r.stop()}},r,this)}),encode:function(e){return e},requiredOps:function(e){return[e.target]},execute:regeneratorRuntime.mark(function n(e){var t;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return r.delegateYield(this.addOperation(e),"t0",1);case 1:if(r.t1=r.t0,r.t1!==!1){r.next=4;break}return r.abrupt("return");case 4:return r.delegateYield(this.getOperation(e.target),"t2",5);case 5:return t=r.t2,t.deleted=!0,r.delegateYield(this.setOperation(t),"t3",8);case 8:case"end":return r.stop()}},n,this)})},Insert:{create:regeneratorRuntime.mark(function a(e){var t,r,n,i,s;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(void 0!==e.left&&void 0!==e.right&&void 0!==e.parent){a.next=2;break}throw new Error("You must define left, right, and parent!");case 2:return e.origin=e.left,e.struct="Insert",a.delegateYield(Struct.Operation.create.call(this,e),"t0",5);case 5:if(null==e.left){a.next=10;break}return a.delegateYield(this.getOperation(e.left),"t1",7);case 7:return t=a.t1,t.right=e.id,a.delegateYield(this.setOperation(t),"t2",10);case 10:if(null==e.right){a.next=15;break}return a.delegateYield(this.getOperation(e.right),"t3",12);case 12:return r=a.t3,r.left=e.id,a.delegateYield(this.setOperation(r),"t4",15);case 15:return a.delegateYield(this.getOperation(e.parent),"t5",16);case 16:if(n=a.t5,null==e.parentSub){a.next=23;break}if(!compareIds(n.map[e.parentSub],e.right)){a.next=21;break}return n.map[e.parentSub]=e.id,a.delegateYield(this.setOperation(n),"t6",21);case 21:a.next=29;break;case 23:if(i=compareIds(n.start,e.right),s=compareIds(n.end,e.left),!i&&!s){a.next=29;break}return i&&(n.start=e.id),s&&(n.end=e.id),a.delegateYield(this.setOperation(n),"t7",29);case 29:return a.abrupt("return",e);case 30:case"end":return a.stop()}},a,this)}),encode:function(e){return e},requiredOps:function(e){var t=[];return null!=e.left&&t.push(e.left),null!=e.right&&t.push(e.right),null==e.right&&null==e.left&&t.push(e.parent),null!=e.opContent&&t.push(e.opContent),t},getDistanceToOrigin:regeneratorRuntime.mark(function i(e){var t,r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(null!=e.left){n.next=4;break}return n.abrupt("return",0);case 4:return t=0,n.delegateYield(this.getOperation(e.left),"t0",6);case 6:r=n.t0;case 7:if(compareIds(e.origin,r?r.id:null)){n.next=17;break}if(t++,null!=r.left){n.next=13;break}return n.abrupt("break",17);case 13:return n.delegateYield(this.getOperation(r.left),"t1",14);case 14:r=n.t1;case 15:n.next=7;break;case 17:return n.abrupt("return",t);case 18:case"end":return n.stop()}},i,this)}),execute:regeneratorRuntime.mark(function s(e){var t,r,n,a,i,o,u,c,l;return regeneratorRuntime.wrap(function(s){for(;;)switch(s.prev=s.next){case 0:return s.delegateYield(Struct.Insert.getDistanceToOrigin.call(this,e),"t0",1);case 1:if(r=t=s.t0,null==e.left){s.next=14;break}return s.delegateYield(this.getOperation(e.left),"t1",4);case 4:if(n=s.t1,null!=n.right){s.next=9;break}s.t2=null,s.next=11;break;case 9:return s.delegateYield(this.getOperation(n.right),"t3",10);case 10:s.t2=s.t3;case 11:n=s.t2,s.next=25;break;case 14:return s.delegateYield(this.getOperation(e.parent),"t4",15);case 15:if(a=s.t4,o=e.parentSub?a.map[e.parentSub]:a.start,null!=o){s.next=21;break}s.t5=null,s.next=23;break;case 21:return s.delegateYield(this.getOperation(o),"t6",22);case 22:s.t5=s.t6;case 23:i=s.t5,n=i;case 25:if(null==n||compareIds(n.id,e.right)){s.next=48;break}return s.delegateYield(Struct.Insert.getDistanceToOrigin.call(this,n),"t7",28);case 28:if(u=s.t7,u!==t){s.next=33;break}n.id[0]u)){s.next=37;break}u>=t-r&&(e.left=n.id,r=t+1),s.next=38;break;case 37:return s.abrupt("break",51);case 38:if(t++,!n.right){s.next=44;break}return s.delegateYield(this.getOperation(n.right),"t9",41);case 41:s.t8=s.t9,s.next=45;break;case 44:s.t8=null;case 45:n=s.t8,s.next=49;break;case 48:return s.abrupt("break",51);case 49:s.next=25;break;case 51:if(c=null,l=null,s.t10=a,s.t10){s.next=57;break}return s.delegateYield(this.getOperation(e.parent),"t11",56);case 56:s.t10=s.t11;case 57:if(a=s.t10,null==e.left){s.next=70;break}return s.delegateYield(this.getOperation(e.left),"t12",60);case 60:return c=s.t12,e.right=c.right,s.delegateYield(this.addOperation(e),"t13",63);case 63:if(s.t14=s.t13,s.t14!==!1){s.next=66;break}return s.abrupt("return");case 66:return c.right=e.id,s.delegateYield(this.setOperation(c),"t15",68);case 68:s.next=75;break;case 70:return e.right=e.parentSub?a.map[e.parentSub]||null:a.start,s.delegateYield(this.addOperation(e),"t16",72);case 72:if(s.t17=s.t16,s.t17!==!1){s.next=75;break}return s.abrupt("return");case 75:if(null==e.right){s.next=80;break}return s.delegateYield(this.getOperation(e.right),"t18",77);case 77:return l=s.t18,l.left=e.id,s.delegateYield(this.setOperation(l),"t19",80);case 80:if(null==e.parentSub){s.next=86;break}if(null!=c){s.next=84;break}return a.map[e.parentSub]=e.id,s.delegateYield(this.setOperation(a),"t20",84);case 84:s.next=90;break;case 86:if(null!=l&&null!=c){s.next=90;break}return null==l&&(a.end=e.id),null==c&&(a.start=e.id),s.delegateYield(this.setOperation(a),"t21",90);case 90:case"end":return s.stop()}},s,this)})},List:{create:regeneratorRuntime.mark(function o(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e.start=null,e.end=null,e.struct="List",t.delegateYield(Struct.Operation.create.call(this,e),"t0",4);case 4:return t.abrupt("return",t.t0);case 5:case"end":return t.stop()}},o,this)}),encode:function(e){return{struct:"List",id:e.id,type:e.type}},requiredOps:function(){return[]},execute:regeneratorRuntime.mark(function u(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e.start=null,e.end=null,t.delegateYield(this.addOperation(e),"t0",3);case 3:if(t.t1=t.t0,t.t1!==!1){t.next=6;break}return t.abrupt("return");case 6:case"end":return t.stop()}},u,this)}),ref:regeneratorRuntime.mark(function c(e,t){var r,n;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(null!=e.start){a.next=2;break}return a.abrupt("return",null);case 2:return r=null,a.delegateYield(this.getOperation(e.start),"t0",4);case 4:n=a.t0;case 5:if(n.deleted||(r=n,t--),!(t>=0&&null!=n.right)){a.next=12;break}return a.delegateYield(this.getOperation(n.right),"t1",9);case 9:n=a.t1,a.next=13;break;case 12:return a.abrupt("break",15);case 13:a.next=5;break;case 15:return a.abrupt("return",r);case 16:case"end":return a.stop()}},c,this)}),"delete":regeneratorRuntime.mark(function l(e,t){var r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:return n.delegateYield(Struct.List.ref.call(this,e,t),"t0",1);case 1:if(r=n.t0,null==r){n.next=4;break}return n.delegateYield(Struct.Delete.create.call(this,{target:r.id}),"t1",4);case 4:case"end":return n.stop()}},l,this)}),map:regeneratorRuntime.mark(function p(e,t){var r,n;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:e=e.start,r=[];case 2:if(null==e){a.next=9;break}return a.delegateYield(this.getOperation(e),"t0",4);case 4:n=a.t0,n.deleted||r.push(t(n.content)),e=n.right,a.next=2;break;case 9:return a.abrupt("return",r);case 10:case"end":return a.stop()}},p,this)}),insert:regeneratorRuntime.mark(function f(e,t,r){var n,a,i,s,f;return regeneratorRuntime.wrap(function(o){for(;;)switch(o.prev=o.next){case 0:if(0!==t){o.next=5;break}n=null,a=e.start,o.next=8;break;case 5:return o.delegateYield(Struct.List.ref.call(this,e,t-1),"t0",6);case 6:i=o.t0,null===i?(n=e.end,a=null):(n=i.id,a=i.right);case 8:o.t1=regeneratorRuntime.keys(r);case 9:if((o.t2=o.t1()).done){o.next=16;break}return s=o.t2.value,f={left:n,right:a,content:r[s],parent:e.id},o.delegateYield(Struct.Insert.create.call(this,f),"t3",13);case 13:n=o.t3.id,o.next=9;break;case 16:case"end":return o.stop()}},f,this)})},Map:{create:regeneratorRuntime.mark(function h(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return e.map={},e.struct="Map",t.delegateYield(Struct.Operation.create.call(this,e),"t0",3);case 3:return t.abrupt("return",t.t0);case 4:case"end":return t.stop()}},h,this)}),encode:function(e){return{struct:"Map",type:e.type,id:e.id}},requiredOps:function(){return[]},execute:regeneratorRuntime.mark(function d(e){return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(this.addOperation(e),"t0",1);case 1:if(t.t1=t.t0,t.t1!==!1){t.next=4;break}return t.abrupt("return");case 4:case"end":return t.stop()}},d,this)}),get:regeneratorRuntime.mark(function g(e,t){var r,n;return regeneratorRuntime.wrap(function(a){for(;;)switch(a.prev=a.next){case 0:if(r=e.map[t],null==r){a.next=16;break}return a.delegateYield(this.getOperation(r),"t0",3);case 3:if(n=a.t0,null!=n&&!n.deleted){a.next=8;break}a.t1=void 0,a.next=15;break;case 8:if(null!=n.opContent){a.next=12;break}a.t2=n.content,a.next=14;break;case 12:return a.delegateYield(this.getType(n.opContent),"t3",13);case 13:a.t2=a.t3;case 14:a.t1=a.t2;case 15:return a.abrupt("return",a.t1);case 16:case"end":return a.stop()}},g,this)}),set:regeneratorRuntime.mark(function b(e,t,r){var n,a;return regeneratorRuntime.wrap(function(i){for(;;)switch(i.prev=i.next){case 0:return n=e.map[t]||null,a={left:null,right:n,parent:e.id,parentSub:t},null!=r&&null!=r._model&&2===r._model.length?a.opContent=r._model:a.content=r,i.delegateYield(Struct.Insert.create.call(this,a),"t0",4);case 4:case"end":return i.stop()}},b,this)}),"delete":regeneratorRuntime.mark(function y(e,t){var r;return regeneratorRuntime.wrap(function(n){for(;;)switch(n.prev=n.next){case 0:if(r=e.map[t]||null,null==r){n.next=3;break}return n.delegateYield(Struct.Delete.create.call(this,{target:r}),"t0",3);case 3:case"end":return n.stop()}},y,this)})}}; //# sourceMappingURL=y.js.map \ No newline at end of file diff --git a/y.js.map b/y.js.map index 861b9350..3ba11292 100644 --- a/y.js.map +++ b/y.js.map @@ -1 +1 @@ -{"version":3,"sources":["y.js","Connectors/Test.js","OperationStores/Memory.js","Struct.js","runtime.js","Connectors/WebRTC.js","OperationStores/IndexedDB.js","OperationStores/RedBlackTree.js","Types/List.js","Types/Map.js","Connector.js","OperationStore.js"],"names":["_inherits","subClass","superClass","TypeError","prototype","Object","create","constructor","value","enumerable","writable","configurable","__proto__","_classCallCheck","instance","Constructor","_flushOne","bufs","i","globalRoom","buffers","length","push","userId","getRandom","m","shift","user","users","receiveMessage","copyObject","o","c","key","compareIds","id1","id2","_createClass","defineProperties","target","props","descriptor","defineProperty","protoProps","staticProps","global","wrap","innerFn","outerFn","self","tryLocsList","generator","Generator","_invoke","makeInvokeMethod","Context","tryCatch","fn","obj","arg","type","call","err","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","forEach","method","this","AwaitArgument","AsyncIterator","invoke","result","Promise","resolve","then","invokeNext","invokeThrow","unwrapped","enqueue","enqueueResult","previousPromise","invokeReturn","process","domain","bind","context","state","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","iterator","undefined","returnMethod","record","info","done","GenStateSuspendedYield","resultName","next","nextLoc","sent","dispatchException","abrupt","ContinueSentinel","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","values","iterable","iteratorMethod","iteratorSymbol","isNaN","hasOwn","hasOwnProperty","Symbol","inModule","module","runtime","regeneratorRuntime","exports","Gp","displayName","isGeneratorFunction","genFun","ctor","name","mark","awrap","async","iter","toString","keys","object","reverse","pop","prev","tempName","tempIndex","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","window","callee$0$0","context$1$0","Y","opts","db","connector","requestTransaction","callee$2$0","context$3$0","addOperation","id","struct","map","transact","destroy","disconnect","removeDatabase","AbstractTransaction","AbstractOperationStore","Struct","removeUser","userLeft","addUser","uname","u","userJoined","userIdCounter","Test","_AbstractConnector","y","options","role","forwardToSyncingClients","setUserId","send","message","JSON","parse","stringify","broadcast","flushAll","flushOne","AbstractConnector","WebRTC","_AbstractConnector2","room","url","swr","SimpleWebRTC","once","joinRoom","webrtc","peers","on","peer","room_","payload","uid","success","getPeers","sendDirectly","setTimeout","sendDirectlyToAll","IndexedDB","Transaction","_AbstractTransaction","store","transaction","sv","objectStore","os","buffer","setOperation","op","put","getOperation","get","removeOperation","setState","getState","t0","clock","getStateVector","stateVector","cursorResult","cursor","openCursor","getStateSet","ss","_iterator","_isArray","_i","_ref","Array","isArray","getOperations","startSS","ops","endSV","_iterator2","_isArray2","_i2","_ref2","endState","startPos","endPos","range","IDBKeyRange","bound","t1","OperationStore","_AbstractOperationStore","handleTransactions","t","request","IDBRequest","IDBCursor","onsuccess","tGen","onerror","transactionQueue","queue","onRequest","IDBOpenDBRequest","event","onupgradeneeded","createObjectStore","keyPath","e","namespace","idbVersion","transactionGen","cont","context$4$0","indexedDB","open","makeGen","close","deleteDatabase","Memory","_AbstractTransaction2","n","findNode","val","find","_iterator3","_isArray3","_i3","_ref3","res","_iterator4","_isArray4","_i4","_ref4","iterate","encode","makeOperationReady","t3","t2","right","_AbstractOperationStore2","RBTree","gen","Map","Create","N","color","_left","_right","_parent","isRed","isBlack","redden","blacken","rotateLeft","tree","parent","newParent","newRight","left","root","p","rotateRight","newLeft","getUncle","set","findNodeWithLowerBound","from","to","f","d","isFakeChild","child","_fixDelete","node","sibling","add","v","_fixInsert","uncle","grandparent","List","_model","pos","ref","content","insert","contents","_delete","YList","model","context$2$0","args$3$0","arguments","t4","t5","YMap","connections","userEventListeners","whenSyncedListeners","currentSyncTarget","syncingClients","debug","onUserEvent","findNextSyncTarget","_iterator5","_isArray5","_i5","_ref5","action","isSynced","_iterator6","_isArray6","_i6","_ref6","whenSynced","syncUser","conn","_iterator7","_isArray7","_i7","_ref7","sender","_this","console","log","callee$3$0","filter","cli","syncingClientDuration","apply","_iterator8","_isArray8","_i8","_ref8","client","parseMessageFromXml","parseArray","_x","_again","_function","_iterator9","_isArray9","_i9","_ref9","children","getAttribute","parseObject","json","attrName","attrs","int","parseInt","encodeMessageToXml","msg","encodeObject","encodeArray","setAttribute","array","_iterator10","_isArray10","_i10","_ref10","xmlns","getType","operationAdded","parentListeners","parentListenersRequestPending","parentListenersActivated","listenersById","listenersByIdExecuteNow","listenersByIdRequestPending","required","requiredOps","whenOperationsExist","ids","listener","missing","_id","sid","l","exeNow","ls","execute","t6","t7","t8","listeners","al","activatedOperations","parentId","notifyObservers","removeParentListener","g","addParentListener","Operation","Delete","deleted","Insert","start","end","origin","parentSub","opContent","getDistanceToOrigin","distanceToOrigin","startId","oOriginDistance","t9","t10","t11","t12","t14","t13","t17","t16","t18","delete","operation","oid"],"mappings":"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","file":"y.js","sourcesContent":["/* @flow */\n\nconst GeneratorFunction = (function*(){}).constructor;\n\nclass Y { //eslint-disable-line no-unused-vars\n constructor (opts) {\n this.db = new Y[opts.db.name](this, opts.db);\n this.connector = new Y[opts.connector.name](this, opts.connector);\n this.db.requestTransaction(function*(){\n // create initial Map type\n yield* this.addOperation({\n id: [\"_\", 0],\n struct: \"Map\",\n map: {}\n });\n });\n }\n transact (generator) {\n if (generator.constructor !== GeneratorFunction) {\n throw new Error(\"y.transact requires a Generator function! E.g. function*(){/*..*/}\");\n }\n this.db.requestTransaction(generator);\n }\n destroy () {\n this.connector.disconnect();\n this.db.removeDatabase();\n this.connector = null;\n this.db = null;\n this.transact = function(){\n throw new Error(\"Remember?, you destroyed this type ;)\");\n };\n }\n}\n\nY.AbstractTransaction = AbstractTransaction;\nY.AbstractOperationStore = AbstractOperationStore;\nY.Struct = Struct;\n","var globalRoom = {\n users: {},\n buffers: {},\n removeUser: function(user : AbstractConnector){\n\n for (var i in this.users) {\n this.users[i].userLeft(user);\n }\n delete this.users[user];\n delete this.buffers[user];\n },\n addUser: function(connector){\n this.users[connector.userId] = connector;\n this.buffers[connector.userId] = [];\n for (var uname in this.users) {\n if (uname !== connector.userId) {\n var u = this.users[uname];\n u.userJoined(connector.userId, \"master\");\n connector.userJoined(u.userId, \"master\");\n }\n }\n }\n};\nfunction flushOne(){\n var bufs = [];\n for (var i in globalRoom.buffers) {\n if (globalRoom.buffers[i].length > 0) {\n bufs.push(i);\n }\n }\n if (bufs.length > 0) {\n var userId = getRandom(bufs);\n var m = globalRoom.buffers[userId].shift();\n var user = globalRoom.users[userId];\n user.receiveMessage(m[0], m[1]);\n return true;\n } else {\n return false;\n }\n}\n// setInterval(flushOne, 10);\n\nvar userIdCounter = 0;\n\nclass Test extends AbstractConnector {\n constructor (y, options) {\n if(options === undefined){\n throw new Error(\"Options must not be undefined!\");\n }\n options.role = \"master\";\n options.forwardToSyncingClients = false;\n super(y, options);\n this.setUserId((userIdCounter++) + \"\");\n globalRoom.addUser(this);\n this.globalRoom = globalRoom;\n }\n send (userId, message) {\n globalRoom.buffers[userId].push(JSON.parse(JSON.stringify([this.userId, message])));\n }\n broadcast (message) {\n for (var key in globalRoom.buffers) {\n globalRoom.buffers[key].push(JSON.parse(JSON.stringify([this.userId, message])));\n }\n }\n disconnect () {\n globalRoom.removeUser(this.userId);\n }\n flushAll () {\n var c = true;\n while (c) {\n c = flushOne();\n }\n }\n flushOne() {\n flushOne();\n }\n}\n\nY.Test = Test;\n","\ntype State = {\n user: string,\n clock: number\n};\n\n\nfunction copyObject (o) {\n var c = {};\n for (var key in o) {\n c[key] = o[key];\n }\n return c;\n}\n\ntype StateVector = Array;\ntype OperationSet = Object; // os[Id] = op\ntype StateSet = Object;\n\nY.Memory = (function(){ //eslint-disable-line no-unused-vars\n class Transaction extends AbstractTransaction { //eslint-disable-line\n ss: StateSet;\n os: OperationSet;\n store: OperationStore;\n\n constructor (store : OperationStore) {\n super(store);\n this.ss = store.ss;\n this.os = store.os;\n }\n *setOperation (op) {\n // TODO: you can remove this step! probs..\n var n = this.os.findNode(op.id);\n n.val = op;\n return op;\n }\n *getOperation (id) {\n var op = this.os.find(id);\n if (op == null) {\n throw new Error(\"Op does not exist..\");\n } else {\n return op;\n }\n }\n *removeOperation (id) {\n this.os.delete(id);\n }\n *setState (state : State) : State {\n this.ss[state.user] = state.clock;\n }\n *getState (user : string) : State {\n var clock = this.ss[user];\n if (clock == null){\n clock = 0;\n }\n return {\n user: user,\n clock: clock\n };\n }\n *getStateVector () : StateVector {\n var stateVector = [];\n for (var user in this.ss) {\n var clock = this.ss[user];\n stateVector.push({\n user: user,\n clock: clock\n });\n }\n return stateVector;\n }\n *getStateSet () : StateSet {\n return this.ss;\n }\n *getOperations (startSS : StateSet) {\n // TODO: use bounds here!\n if (startSS == null){\n startSS = {};\n }\n var ops = [];\n\n var endSV : StateVector = yield* this.getStateVector();\n for (var endState of endSV) {\n var user = endState.user;\n if (user === \"_\") {\n continue;\n }\n var startPos = startSS[user] || 0;\n var endPos = endState.clock;\n\n this.os.iterate([user, startPos], [user, endPos], function(op){//eslint-disable-line\n ops.push(Struct[op.struct].encode(op));\n });\n }\n var res = [];\n for (var op of ops) {\n res.push(yield* this.makeOperationReady.call(this, startSS, op));\n }\n return res;\n }\n *makeOperationReady (ss, op) {\n // instead of ss, you could use currSS (a ss that increments when you add an operation)\n var clock;\n var o = op;\n while (o.right != null){\n // while unknown, go to the right\n o = yield* this.getOperation(o.right);\n clock = ss[o.id[0]];\n if (clock != null && o.id[1] < clock) {\n break;\n }\n }\n op = copyObject(op);\n op.right = (o == null) ? null : o.id;\n return op;\n }\n }\n class OperationStore extends AbstractOperationStore { //eslint-disable-line no-undef\n constructor (y) {\n super(y);\n this.os = new RBTree();\n this.ss = {};\n }\n requestTransaction (makeGen : Function) {\n var t = new Transaction(this);\n var gen = makeGen.call(t, new Y.Map.Create([\"_\", 0]));\n var res = gen.next();\n while(!res.done){\n if (res.value === \"transaction\") {\n res = gen.next(t);\n } else {\n throw new Error(\"You may not yield this type. (Maybe you meant to use 'yield*'?)\");\n }\n }\n }\n *removeDatabase () {\n delete this.os;\n }\n }\n return OperationStore;\n})();\n","/* @flow */\n\n// Op is anything that we could get from the OperationStore.\ntype Op = Object;\ntype Id = [string, number];\n\ntype List = {\n id: Id,\n start: Insert,\n end: Insert\n};\n\ntype Insert = {\n id: Id,\n left: Insert,\n right: Insert,\n origin: Insert,\n parent: List,\n content: any\n};\n\nfunction compareIds(id1, id2) {\n\n if (id1 == null || id2 == null) {\n if (id1 == null && id2 == null) {\n return true;\n }\n return false;\n }\n if (id1[0] === id2[0] && id1[1] === id2[1]) {\n return true;\n } else {\n return false;\n }\n}\n\nvar Struct = {\n Operation: { //eslint-disable-line no-unused-vars\n create: function*(op : Op) : Struct.Operation {\n var user = this.store.y.connector.userId;\n var state = yield* this.getState(user);\n op.id = [user, state.clock];\n if ((yield* this.addOperation(op)) === false) {\n throw new Error(\"This is highly unexpected :(\");\n }\n this.store.y.connector.broadcast({\n type: \"update\",\n ops: [Struct[op.struct].encode(op)]\n });\n return op;\n }\n },\n Delete: {\n create: function* (op) {\n if (op.target == null) {\n throw new Error(\"You must define a delete target!\");\n }\n op.struct = \"Delete\";\n yield* Struct.Operation.create.call(this, op);\n\n var target = yield* this.getOperation(op.target);\n target.deleted = true;\n yield* this.setOperation(target);\n },\n encode: function (op) {\n return op;\n },\n requiredOps: function (op) {\n return [op.target];\n },\n execute: function* (op) {\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n var target = yield* this.getOperation(op.target);\n target.deleted = true;\n yield* this.setOperation(target);\n }\n },\n Insert: {\n /*{\n content: any,\n left: Id,\n right: Id,\n parent: Id,\n parentSub: string (optional)\n }\n */\n create: function*( op: Op ) : Insert {\n if ( op.left === undefined\n || op.right === undefined\n || op.parent === undefined ) {\n throw new Error(\"You must define left, right, and parent!\");\n }\n op.origin = op.left;\n op.struct = \"Insert\";\n yield* Struct.Operation.create.call(this, op);\n\n if (op.left != null) {\n var left = yield* this.getOperation(op.left);\n left.right = op.id;\n yield* this.setOperation(left);\n }\n if (op.right != null) {\n var right = yield* this.getOperation(op.right);\n right.left = op.id;\n yield* this.setOperation(right);\n }\n var parent = yield* this.getOperation(op.parent);\n if (op.parentSub != null){\n if (compareIds(parent.map[op.parentSub], op.right)) {\n parent.map[op.parentSub] = op.id;\n yield* this.setOperation(parent);\n }\n } else {\n var start = compareIds(parent.start, op.right);\n var end = compareIds(parent.end, op.left);\n if (start || end) {\n if (start) {\n parent.start = op.id;\n }\n if (end) {\n parent.end = op.id;\n }\n yield* this.setOperation(parent);\n }\n }\n return op;\n },\n encode: function(op){\n /*var e = {\n id: op.id,\n left: op.left,\n right: op.right,\n origin: op.origin,\n parent: op.parent,\n content: op.content,\n struct: \"Insert\"\n };\n if (op.parentSub != null){\n e.parentSub = op.parentSub;\n }\n return e;*/\n return op;\n },\n requiredOps: function(op){\n var ids = [];\n if(op.left != null){\n ids.push(op.left);\n }\n if(op.right != null){\n ids.push(op.right);\n }\n if(op.right == null && op.left == null) {\n ids.push(op.parent);\n }\n if (op.opContent != null) {\n ids.push(op.opContent);\n }\n return ids;\n },\n getDistanceToOrigin: function *(op){\n if (op.left == null) {\n return 0;\n } else {\n var d = 0;\n var o = yield* this.getOperation(op.left);\n while (!compareIds(op.origin, (o ? o.id : null))) {\n d++;\n if (o.left == null) {\n break;\n } else {\n o = yield* this.getOperation(o.left);\n }\n }\n return d;\n }\n },\n /*\n # $this has to find a unique position between origin and the next known character\n # case 1: $origin equals $o.origin: the $creator parameter decides if left or right\n # let $OL= [o1,o2,o3,o4], whereby $this is to be inserted between o1 and o4\n # o2,o3 and o4 origin is 1 (the position of o2)\n # there is the case that $this.creator < o2.creator, but o3.creator < $this.creator\n # then o2 knows o3. Since on another client $OL could be [o1,o3,o4] the problem is complex\n # therefore $this would be always to the right of o3\n # case 2: $origin < $o.origin\n # if current $this insert_position > $o origin: $this ins\n # else $insert_position will not change\n # (maybe we encounter case 1 later, then this will be to the right of $o)\n # case 3: $origin > $o.origin\n # $this insert_position is to the left of $o (forever!)\n */\n execute: function*(op){\n var i; // loop counter\n var distanceToOrigin = i = yield* Struct.Insert.getDistanceToOrigin.call(this, op); // most cases: 0 (starts from 0)\n var o;\n var parent;\n var start;\n\n // find o. o is the first conflicting operation\n if (op.left != null) {\n o = yield* this.getOperation(op.left);\n o = (o.right == null) ? null : yield* this.getOperation(o.right);\n } else { // left == null\n parent = yield* this.getOperation(op.parent);\n let startId = op.parentSub ? parent.map[op.parentSub] : parent.start;\n start = startId == null ? null : yield* this.getOperation(startId);\n o = start;\n }\n\n // handle conflicts\n while (true) {\n if (o != null && !compareIds(o.id, op.right)){\n var oOriginDistance = yield* Struct.Insert.getDistanceToOrigin.call(this, o);\n if (oOriginDistance === i) {\n // case 1\n if (o.id[0] < op.id[0]) {\n op.left = o.id;\n distanceToOrigin = i + 1;\n }\n } else if (oOriginDistance < i) {\n // case 2\n if (i - distanceToOrigin <= oOriginDistance) {\n op.left = o.id;\n distanceToOrigin = i + 1;\n }\n } else {\n break;\n }\n i++;\n o = o.right ? yield* this.getOperation(o.right) : null;\n } else {\n break;\n }\n }\n\n // reconnect..\n var left = null;\n var right = null;\n parent = parent || (yield* this.getOperation(op.parent));\n\n // NOTE: You you have to call addOperation before you set any other operation!\n\n // reconnect left and set right of op\n if (op.left != null) {\n left = yield* this.getOperation(op.left);\n op.right = left.right;\n if ((yield* this.addOperation(op)) === false) { // add here\n return;\n }\n left.right = op.id;\n yield* this.setOperation(left);\n } else {\n op.right = op.parentSub ? (parent.map[op.parentSub] || null) : parent.start;\n if ((yield* this.addOperation(op)) === false) { // or here\n return;\n }\n }\n // reconnect right\n if (op.right != null) {\n right = yield* this.getOperation(op.right);\n right.left = op.id;\n yield* this.setOperation(right);\n }\n\n // notify parent\n if (op.parentSub != null) {\n if (left == null) {\n parent.map[op.parentSub] = op.id;\n yield* this.setOperation(parent);\n }\n } else {\n if (right == null || left == null) {\n if (right == null) {\n parent.end = op.id;\n }\n if (left == null) {\n parent.start = op.id;\n }\n yield* this.setOperation(parent);\n }\n }\n }\n },\n List: {\n create: function*( op : Op){\n op.start = null;\n op.end = null;\n op.struct = \"List\";\n return yield* Struct.Operation.create.call(this, op);\n },\n encode: function(op){\n return {\n struct: \"List\",\n id: op.id,\n type: op.type\n };\n },\n requiredOps: function(){\n /*\n var ids = [];\n if (op.start != null) {\n ids.push(op.start);\n }\n if (op.end != null){\n ids.push(op.end);\n }\n return ids;\n */\n return [];\n },\n execute: function* (op) {\n op.start = null;\n op.end = null;\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n },\n ref: function* (op : Op, pos : number) : Insert {\n if (op.start == null) {\n return null;\n }\n var res = null;\n var o = yield* this.getOperation(op.start);\n\n while ( true ) {\n if (!o.deleted) {\n res = o;\n pos--;\n }\n if (pos >= 0 && o.right != null) {\n o = (yield* this.getOperation(o.right));\n } else {\n break;\n }\n }\n return res;\n },\n delete: function* (op, pos) {\n var ref = yield* Struct.List.ref.call(this, op, pos);\n if (ref != null) {\n yield* Struct.Delete.create.call(this, {\n target: ref.id\n });\n }\n },\n map: function* (o : Op, f : Function) : Array {\n o = o.start;\n var res = [];\n while ( o != null) {\n var operation = yield* this.getOperation(o);\n if (!operation.deleted) {\n res.push(f(operation.content));\n }\n o = operation.right;\n }\n return res;\n },\n insert: function* (op, pos : number, contents : Array) {\n var left, right;\n if (pos === 0) {\n left = null;\n right = op.start;\n } else {\n var ref = yield* Struct.List.ref.call(this, op, pos - 1);\n if (ref === null) {\n left = op.end;\n right = null;\n } else {\n left = ref.id;\n right = ref.right;\n }\n }\n for (var key in contents) {\n var insert = {\n left: left,\n right: right,\n content: contents[key],\n parent: op.id\n };\n left = (yield* Struct.Insert.create.call(this, insert)).id;\n }\n }\n },\n Map: {\n /*\n {\n // empty\n }\n */\n create: function*( op : Op ){\n op.map = {};\n op.struct = \"Map\";\n return yield* Struct.Operation.create.call(this, op);\n },\n encode: function(op){\n return {\n struct: \"Map\",\n type: op.type,\n id: op.id\n };\n },\n requiredOps: function(){\n /*\n var ids = [];\n for (var end in op.map) {\n ids.push(op.map[end]);\n }\n return ids;\n */\n return [];\n },\n execute: function* (op) {\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n },\n get: function* (op, name) {\n var res = yield* this.getOperation(op.map[name]);\n return (res == null || res.deleted) ? void 0 : (res.opContent == null\n ? res.content : yield* this.getType(res.opContent));\n },\n set: function* (op, name, value) {\n var right = op.map[name] || null;\n var insert = {\n left: null,\n right: right,\n parent: op.id,\n parentSub: name\n };\n var oid;\n if ( value != null && value._model != null\n && (oid = value._model.id) != null && oid.length === 2) {\n insert.opContent = oid;\n } else {\n insert.content = value;\n }\n yield* Struct.Insert.create.call(this, insert);\n if (right != null) {\n yield* Struct.Delete.create.call(this, {\n target: right\n });\n }\n },\n delete: function* (op, name) {\n var v = op.map[name] || null;\n if (v != null) {\n yield* Struct.Delete.create.call(this, {\n target: v\n });\n }\n }\n }\n};\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var iteratorSymbol =\n typeof Symbol === \"function\" && Symbol.iterator || \"@@iterator\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided, then outerFn.prototype instanceof Generator.\n var generator = Object.create((outerFn || Generator).prototype);\n\n generator._invoke = makeInvokeMethod(\n innerFn, self || null,\n new Context(tryLocsList || [])\n );\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n genFun.__proto__ = GeneratorFunctionPrototype;\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `value instanceof AwaitArgument` to determine if the yielded value is\n // meant to be awaited. Some may consider the name of this method too\n // cutesy, but they are curmudgeons.\n runtime.awrap = function(arg) {\n return new AwaitArgument(arg);\n };\n\n function AwaitArgument(arg) {\n this.arg = arg;\n }\n\n function AsyncIterator(generator) {\n // This invoke function is written in a style that assumes some\n // calling function (or Promise) will handle exceptions.\n function invoke(method, arg) {\n var result = generator[method](arg);\n var value = result.value;\n return value instanceof AwaitArgument\n ? Promise.resolve(value.arg).then(invokeNext, invokeThrow)\n : Promise.resolve(value).then(function(unwrapped) {\n result.value = unwrapped;\n return result;\n }, invokeThrow);\n }\n\n if (typeof process === \"object\" && process.domain) {\n invoke = process.domain.bind(invoke);\n }\n\n var invokeNext = invoke.bind(generator, \"next\");\n var invokeThrow = invoke.bind(generator, \"throw\");\n var invokeReturn = invoke.bind(generator, \"return\");\n var previousPromise;\n\n function enqueue(method, arg) {\n var enqueueResult =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(function() {\n return invoke(method, arg);\n }) : new Promise(function(resolve) {\n resolve(invoke(method, arg));\n });\n\n // Avoid propagating enqueueResult failures to Promises returned by\n // later invocations of the iterator, and call generator.return() to\n // allow the generator a chance to clean up.\n previousPromise = enqueueResult[\"catch\"](invokeReturn);\n\n return enqueueResult;\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n if (method === \"return\" ||\n (method === \"throw\" && delegate.iterator[method] === undefined)) {\n // A return or throw (when the delegate iterator has no throw\n // method) always terminates the yield* loop.\n context.delegate = null;\n\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n var returnMethod = delegate.iterator[\"return\"];\n if (returnMethod) {\n var record = tryCatch(returnMethod, delegate.iterator, arg);\n if (record.type === \"throw\") {\n // If the return method threw an exception, let that\n // exception prevail over the original return or throw.\n method = \"throw\";\n arg = record.arg;\n continue;\n }\n }\n\n if (method === \"return\") {\n // Continue with the outer return, now that the delegate\n // iterator has been terminated.\n continue;\n }\n }\n\n var record = tryCatch(\n delegate.iterator[method],\n delegate.iterator,\n arg\n );\n\n if (record.type === \"throw\") {\n context.delegate = null;\n\n // Like returning generator.throw(uncaught), but without the\n // overhead of an extra function call.\n method = \"throw\";\n arg = record.arg;\n continue;\n }\n\n // Delegate generator ran and handled its own exceptions so\n // regardless of what the method was, we continue as if it is\n // \"next\" with an undefined arg.\n method = \"next\";\n arg = undefined;\n\n var info = record.arg;\n if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n } else {\n state = GenStateSuspendedYield;\n return info;\n }\n\n context.delegate = null;\n }\n\n if (method === \"next\") {\n if (state === GenStateSuspendedYield) {\n context.sent = arg;\n } else {\n delete context.sent;\n }\n\n } else if (method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw arg;\n }\n\n if (context.dispatchException(arg)) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n method = \"next\";\n arg = undefined;\n }\n\n } else if (method === \"return\") {\n context.abrupt(\"return\", arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n var info = {\n value: record.arg,\n done: context.done\n };\n\n if (record.arg === ContinueSentinel) {\n if (context.delegate && method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n arg = undefined;\n }\n } else {\n return info;\n }\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(arg) call above.\n method = \"throw\";\n arg = record.arg;\n }\n }\n };\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset();\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function() {\n this.prev = 0;\n this.next = 0;\n this.sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.tryEntries.forEach(resetTryEntry);\n\n // Pre-initialize at least 20 temporary variables to enable hidden\n // class optimizations for simple generators.\n for (var tempIndex = 0, tempName;\n hasOwn.call(this, tempName = \"t\" + tempIndex) || tempIndex < 20;\n ++tempIndex) {\n this[tempName] = null;\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.next = finallyEntry.finallyLoc;\n } else {\n this.complete(record);\n }\n\n return ContinueSentinel;\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = record.arg;\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","\nclass WebRTC extends AbstractConnector {\n constructor (options) {\n if(options === undefined){\n throw new Error(\"Options must not be undefined!\");\n }\n super({\n role: \"slave\"\n });\n\n var room = options.room;\n\n // connect per default to our server\n if(options.url == null){\n options.url = \"https://yatta.ninja:8888\";\n }\n\n var swr = new SimpleWebRTC(options); //eslint-disable-line no-undef\n this.swr = swr;\n var self = this;\n\n swr.once(\"connectionReady\", function(userId){\n // SimpleWebRTC (swr) is initialized\n swr.joinRoom(room);\n\n swr.once(\"joinedRoom\", function(){\n self.setUserId(userId);\n var i;\n // notify the connector class about all the users that already\n // joined the session\n for(i in self.swr.webrtc.peers){\n self.userJoined(self.swr.webrtc.peers[i].id, \"master\");\n }\n swr.on(\"channelMessage\", function(peer, room_, message){\n // The client received a message\n // Check if the connector is already initialized,\n // only then forward the message to the connector class\n if(message.type != null ){\n self.receiveMessage(peer.id, message.payload);\n }\n });\n });\n\n swr.on(\"createdPeer\", function(peer){\n // a new peer/client joined the session.\n // Notify the connector class, if the connector\n // is already initialized\n self.userJoined(peer.id, \"master\");\n });\n\n swr.on(\"peerStreamRemoved\", function(peer){\n // a client left the session.\n // Notify the connector class, if the connector\n // is already initialized\n self.userLeft(peer.id);\n });\n });\n }\n send (uid, message) {\n var self = this;\n // we have to make sure that the message is sent under all circumstances\n var send = function(){\n // check if the clients still exists\n var peer = self.swr.webrtc.getPeers(uid)[0];\n var success;\n if(peer){\n // success is true, if the message is successfully sent\n success = peer.sendDirectly(\"simplewebrtc\", \"yjs\", message);\n }\n if(!success){\n // resend the message if it didn't work\n setTimeout(send, 500);\n }\n };\n // try to send the message\n send();\n }\n broadcast (message) {\n this.swr.sendDirectlyToAll(\"simplewebrtc\", \"yjs\", message);\n }\n}\n\nY.WebRTC = WebRTC;\n","\ntype State = {\n user: string,\n clock: number\n};\n\ntype StateVector = Array;\n\ntype StateSet = Object;\n\ntype IDBTransaction = Function;\ntype IDBObjectStore = Function;\ntype IDBRequest = Function;\ntype IDBCursor = Function;\ntype IDBKeyRange = Function;\n\ntype IDBOpenDBRequest = Function;\n\ndeclare var indexedDB : Object;\n\nY.IndexedDB = (function(){ //eslint-disable-line no-unused-vars\n class Transaction extends AbstractTransaction { //eslint-disable-line\n transaction: IDBTransaction;\n sv: IDBObjectStore;\n os: IDBObjectStore;\n store: OperationStore;\n\n constructor (store : OperationStore) {\n super(store);\n this.transaction = store.db.transaction([\"OperationStore\", \"StateVector\"], \"readwrite\");\n this.sv = this.transaction.objectStore(\"StateVector\");\n this.os = this.transaction.objectStore(\"OperationStore\");\n this.buffer = {};\n }\n *setOperation (op) {\n yield this.os.put(op);\n this.buffer[JSON.stringify(op.id)] = op;\n return op;\n }\n *getOperation (id) {\n var op = this.buffer[JSON.stringify(id)];\n if (op == null) {\n op = yield this.os.get(id);\n this.buffer[JSON.stringify(id)] = op;\n }\n return op;\n }\n *removeOperation (id) {\n this.buffer[JSON.stringify(id)] = null;\n return yield this.os.delete(id);\n }\n *setState (state : State) : State {\n return yield this.sv.put(state);\n }\n *getState (user : string) : State {\n var state;\n if ((state = yield this.sv.get(user)) != null){\n return state;\n } else {\n return {\n user: user,\n clock: 0\n };\n }\n }\n *getStateVector () : StateVector {\n var stateVector = [];\n var cursorResult = this.sv.openCursor();\n var cursor;\n while ((cursor = yield cursorResult) != null) {\n stateVector.push(cursor.value);\n cursor.continue();\n }\n return stateVector;\n }\n *getStateSet () : StateSet {\n var sv : StateVector = yield* this.getStateVector();\n var ss : StateSet = {};\n for (var state of sv){\n ss[state.user] = state.clock;\n }\n return ss;\n }\n\n *getOperations (startSS : StateSet) {\n if (startSS == null){\n startSS = {};\n }\n var ops = [];\n\n var endSV : StateVector = yield* this.getStateVector();\n for (var endState of endSV) {\n var user = endState.user;\n var startPos = startSS[user] || 0;\n var endPos = endState.clock;\n var range = IDBKeyRange.bound([user, startPos], [user, endPos]);\n var cursorResult = this.os.openCursor(range);\n var cursor;\n while ((cursor = yield cursorResult) != null) {\n ops.push(cursor.value);\n cursor.continue();\n }\n }\n return ops;\n }\n }\n class OperationStore extends AbstractOperationStore { //eslint-disable-line no-undef\n namespace: string;\n ready: Promise;\n whenReadyListeners: Array;\n constructor (y, opts) {\n super(y);\n if (opts == null) {\n opts = {};\n }\n if (opts.namespace == null || typeof opts.namespace !== \"string\") {\n throw new Error(\"IndexedDB: expect a string (opts.namespace)!\");\n } else {\n this.namespace = opts.namespace;\n }\n if (opts.idbVersion != null) {\n this.idbVersion = opts.idbVersion;\n } else {\n this.idbVersion = 5;\n }\n\n this.transactionQueue = {\n queue: [],\n onRequest: null\n };\n\n var store = this;\n\n var tGen = (function *transactionGen(){\n store.db = yield indexedDB.open(opts.namespace, store.idbVersion);\n var transactionQueue = store.transactionQueue;\n\n var transaction = null;\n var cont = true;\n while (cont) {\n var request = yield transactionQueue;\n transaction = new Transaction(store);\n\n yield* request.call(transaction, request);/*\n while (transactionQueue.queue.length > 0) {\n yield* transactionQueue.queue.shift().call(transaction);\n }*/\n }\n })();\n\n function handleTransactions(t){ //eslint-disable-line no-unused-vars\n var request = t.value;\n if (t.done){\n return;\n } else if (request.constructor === IDBRequest\n || request.constructor === IDBCursor ) {\n request.onsuccess = function(){\n handleTransactions(tGen.next(request.result));\n };\n request.onerror = function(err){\n tGen.throw(err);\n };\n } else if (request === store.transactionQueue) {\n if (request.queue.length > 0){\n handleTransactions(tGen.next(request.queue.shift()));\n } else {\n request.onRequest = function(){\n request.onRequest = null;\n handleTransactions(tGen.next(request.queue.shift()));\n };\n }\n } else if ( request.constructor === IDBOpenDBRequest ) {\n request.onsuccess = function(event){\n var db = event.target.result;\n handleTransactions(tGen.next(db));\n };\n request.onerror = function(){\n tGen.throw(\"Couldn't open IndexedDB database!\");\n };\n request.onupgradeneeded = function(event){\n var db = event.target.result;\n try {\n db.createObjectStore(\"OperationStore\", {keyPath: \"id\"});\n db.createObjectStore(\"StateVector\", {keyPath: \"user\"});\n } catch (e) {\n // console.log(\"Store already exists!\");\n }\n };\n } else {\n tGen.throw(\"You can not yield this type!\");\n }\n }\n handleTransactions(tGen.next());\n\n }\n requestTransaction (makeGen : Function) {\n this.transactionQueue.queue.push(makeGen);\n if (this.transactionQueue.onRequest != null) {\n this.transactionQueue.onRequest();\n }\n }\n *removeDatabase () {\n this.db.close();\n yield indexedDB.deleteDatabase(this.namespace);\n }\n }\n return OperationStore;\n})();\n","\nclass N {\n // A created node is always red!\n constructor (val) {\n this.val = val;\n this.color = true;\n this._left = null;\n this._right = null;\n this._parent = null;\n if (val.id === null) {\n throw new Error(\"You must define id!\");\n }\n }\n isRed () { return this.color; }\n isBlack () { return !this.color; }\n redden () { this.color = true; return this; }\n blacken () { this.color = false; return this; }\n get grandparent () {\n return this.parent.parent;\n }\n get parent () {\n return this._parent;\n }\n get sibling () {\n return (this === this.parent.left) ?\n this.parent.right : this.parent.left;\n }\n get left () {\n return this._left;\n }\n get right () {\n return this._right;\n }\n set left (n) {\n if (n !== null) {\n n._parent = this;\n }\n this._left = n;\n }\n set right (n) {\n if (n !== null) {\n n._parent = this;\n }\n this._right = n;\n }\n rotateLeft (tree) {\n var parent = this.parent;\n var newParent = this.right;\n var newRight = this.right.left;\n newParent.left = this;\n this.right = newRight;\n if (parent === null) {\n tree.root = newParent;\n newParent._parent = null;\n } else if (parent.left === this) {\n parent.left = newParent;\n } else if (parent.right === this) {\n parent.right = newParent;\n } else {\n throw new Error(\"The elements are wrongly connected!\");\n }\n }\n next () {\n if ( this.right !== null ) {\n // search the most left node in the right tree\n var o = this.right;\n while (o.left !== null) {\n o = o.left;\n }\n return o;\n } else {\n var p = this;\n while (p.parent !== null && p !== p.parent.left) {\n p = p.parent;\n }\n return p.parent;\n }\n }\n rotateRight (tree) {\n var parent = this.parent;\n var newParent = this.left;\n var newLeft = this.left.right;\n newParent.right = this;\n this.left = newLeft;\n if (parent === null) {\n tree.root = newParent;\n newParent._parent = null;\n } else if (parent.left === this) {\n parent.left = newParent;\n } else if (parent.right === this) {\n parent.right = newParent;\n } else {\n throw new Error(\"The elements are wrongly connected!\");\n }\n }\n getUncle () {\n // we can assume that grandparent exists when this is called!\n if (this.parent === this.parent.parent.left) {\n return this.parent.parent.right;\n } else {\n return this.parent.parent.left;\n }\n }\n}\n\nclass RBTree { //eslint-disable-line no-unused-vars\n constructor () {\n this.root = null;\n }\n findNodeWithLowerBound (from) {\n var o = this.root;\n if (o === null) {\n return false;\n } else {\n while (true) {\n if ((from === null || from < o.val.id) && o.left !== null) {\n // o is included in the bound\n // try to find an element that is closer to the bound\n o = o.left;\n } else if (o.val.id < from) {\n // o is not within the bound, maybe one of the right elements is..\n if (o.right !== null) {\n o = o.right;\n } else {\n // there is no right element. Search for the next bigger element,\n // this should be within the bounds\n return o.next();\n }\n } else {\n return o;\n }\n }\n }\n }\n iterate (from, to, f) {\n var o = this.findNodeWithLowerBound(from);\n while ( o !== null && (to === null || o.val.id <= to) ) {\n f(o.val);\n o = o.next();\n }\n return true;\n }\n find (id) {\n return this.findNode(id).val;\n }\n findNode (id) {\n var o = this.root;\n if (o === null) {\n return false;\n } else {\n while (true) {\n if (o === null) {\n return false;\n }\n if (id < o.val.id) {\n o = o.left;\n } else if (o.val.id < id) {\n o = o.right;\n } else {\n return o;\n }\n }\n }\n }\n delete (id) {\n var d = this.findNode(id);\n if (d.left !== null && d.right !== null) {\n // switch d with the greates element in the left subtree.\n // o should have at most one child.\n var o = d.left;\n // find\n while (o.right !== null) {\n o = o.right;\n }\n // switch\n d.val = o.val;\n d = o;\n }\n // d has at most one child\n // let n be the node that replaces d\n var isFakeChild;\n var child = d.left || d.right;\n if ( child === null) {\n isFakeChild = true;\n child = new N({id: 0});\n child.blacken();\n d.right = child;\n } else {\n isFakeChild = false;\n }\n\n if (d.parent === null) {\n if (!isFakeChild) {\n this.root = child;\n child.blacken();\n child._parent = null;\n } else {\n this.root = null;\n }\n return;\n } else if (d.parent.left === d) {\n d.parent.left = child;\n } else if (d.parent.right === d) {\n d.parent.right = child;\n } else {\n throw new Error(\"Impossible!\");\n }\n if ( d.isBlack() ) {\n if ( child.isRed() ) {\n child.blacken();\n } else {\n this._fixDelete(child);\n }\n }\n this.root.blacken();\n if (isFakeChild) {\n if (child.parent.left === child) {\n child.parent.left = null;\n } else if (child.parent.right === child) {\n child.parent.right = null;\n } else {\n throw new Error(\"Impossible #3\");\n }\n }\n }\n _fixDelete (n) {\n function isBlack (node) {\n return node !== null ? node.isBlack() : true;\n }\n function isRed(node) {\n return node !== null ? node.isRed() : false;\n }\n if (n.parent === null) {\n // this can only be called after the first iteration of fixDelete.\n return;\n }\n // d was already replaced by the child\n // d is not the root\n // d and child are black\n var sibling = n.sibling;\n if (isRed(sibling)) {\n // make sibling the grandfather\n n.parent.redden();\n sibling.blacken();\n if (n === n.parent.left) {\n n.parent.rotateLeft(this);\n } else if (n === n.parent.right) {\n n.parent.rotateRight(this);\n } else {\n throw new Error(\"Impossible #2\");\n }\n sibling = n.sibling;\n }\n // parent, sibling, and children of n are black\n if ( n.parent.isBlack() &&\n sibling.isBlack() &&\n isBlack(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden();\n this._fixDelete(n.parent);\n } else if ( n.parent.isRed() &&\n sibling.isBlack() &&\n isBlack(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden();\n n.parent.blacken();\n } else {\n if ( n === n.parent.left &&\n sibling.isBlack() &&\n isRed(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden();\n sibling.left.blacken();\n sibling.rotateRight(this);\n sibling = n.sibling;\n } else if ( n === n.parent.right &&\n sibling.isBlack() &&\n isRed(sibling.right) &&\n isBlack(sibling.left)\n ) {\n sibling.redden();\n sibling.right.blacken();\n sibling.rotateLeft(this);\n sibling = n.sibling;\n }\n sibling.color = n.parent.color;\n n.parent.blacken();\n if (n === n.parent.left) {\n sibling.right.blacken();\n n.parent.rotateLeft(this);\n } else {\n sibling.left.blacken();\n n.parent.rotateRight(this);\n }\n }\n }\n add (v) {\n var node = new N(v);\n if (this.root !== null) {\n var p = this.root; // p abbrev. parent\n while (true) {\n if (node.val.id < p.val.id) {\n if (p.left === null) {\n p.left = node;\n break;\n } else {\n p = p.left;\n }\n } else if (p.val.id < node.val.id) {\n if (p.right === null) {\n p.right = node;\n break;\n } else {\n p = p.right;\n }\n } else {\n return false;\n }\n }\n this._fixInsert(node);\n } else {\n this.root = node;\n }\n this.root.blacken();\n }\n _fixInsert (n) {\n if (n.parent === null) {\n n.blacken();\n return;\n } else if (n.parent.isBlack()) {\n return;\n }\n var uncle = n.getUncle();\n if (uncle !== null && uncle.isRed()) {\n // Note: parent: red, uncle: red\n n.parent.blacken();\n uncle.blacken();\n n.grandparent.redden();\n this._fixInsert(n.grandparent);\n } else {\n // Note: parent: red, uncle: black or null\n // Now we transform the tree in such a way that\n // either of these holds:\n // 1) grandparent.left.isRed\n // and grandparent.left.left.isRed\n // 2) grandparent.right.isRed\n // and grandparent.right.right.isRed\n if (n === n.parent.right\n && n.parent === n.grandparent.left) {\n n.parent.rotateLeft(this);\n // Since we rotated and want to use the previous\n // cases, we need to set n in such a way that\n // n.parent.isRed again\n n = n.left;\n } else if (n === n.parent.left\n && n.parent === n.grandparent.right) {\n n.parent.rotateRight(this);\n // see above\n n = n.right;\n }\n // Case 1) or 2) hold from here on.\n // Now traverse grandparent, make parent a black node\n // on the highest level which holds two red nodes.\n n.parent.blacken();\n n.grandparent.redden();\n if (n === n.parent.left) {\n // Case 1\n n.grandparent.rotateRight(this);\n } else {\n // Case 2\n n.grandparent.rotateLeft(this);\n }\n }\n }\n}\n","\n\n(function(){\n\n class List {\n constructor (_model) {\n this._model = _model;\n }\n *val (pos) {\n var t = yield \"transaction\";\n if (pos != null) {\n var o = yield* Y.Struct.List.ref.call(t, this._model, pos);\n return o ? o.content : null;\n } else {\n return yield* Y.Struct.List.map.call(t, this._model, function(c){return c; });\n }\n }\n *insert (pos, contents) {\n if (typeof pos !== \"number\") {\n throw new Error(\"pos must be a number!\");\n }\n if (!(contents instanceof Array)) {\n throw new Error(\"contents must be an Array of objects!\");\n }\n var t = yield \"transaction\";\n yield* Y.Struct.List.insert.call(t, this._model, pos, contents);\n }\n *delete (pos) {\n if (typeof pos !== \"number\") {\n throw new Error(\"pos must be a number!\");\n }\n var t = yield \"transaction\";\n yield* Y.Struct.List.delete.call(t, this._model, pos);\n }\n }\n\n Y.List = function* YList(){\n var t = yield \"transaction\";\n var model = yield* Y.Struct.List.create.call(t, {type: \"List\"});\n return new List(model);\n };\n Y.List.Create = List;\n})();\n","\n(function(){\n class Map {\n constructor (_model) {\n this._model = _model;\n }\n *val () {\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n if (arguments.length === 0) {\n var res = {};\n for (var key in model.map) {\n var v = yield* Y.Struct.Map.get.call(t, model, key);\n if (v != null) {\n res[key] = v;\n }\n }\n return res;\n } else if (arguments.length === 1) {\n return yield* Y.Struct.Map.get.call(t, model, arguments[0]);\n } else if (arguments.length === 2) {\n return yield* Y.Struct.Map.set.call(t, model, arguments[0], arguments[1]);\n } else {\n throw new Error(\"Implement this case!\");\n }\n }\n *delete (key) {\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n yield* Y.Struct.Map.delete.call(t, model, key);\n }\n }\n\n Y.Map = function* YMap(){\n var t = yield \"transaction\";\n if (this instanceof Y.AbstractOperationStore) {\n var model = yield* Y.Struct.map.create.call(t, {type: \"Map\"});\n return new Map(model);\n } else {\n throw new Error(\"Don't use `new` to create this type!\");\n }\n };\n Y.Map.Create = Map;\n})();\n","\nclass AbstractConnector { //eslint-disable-line no-unused-vars\n /*\n opts\n .role : String Role of this client (\"master\" or \"slave\")\n .userId : String that uniquely defines the user.\n */\n constructor (y, opts) {\n this.y = y;\n if (opts == null){\n opts = {};\n }\n if (opts.role == null || opts.role === \"master\") {\n this.role = \"master\";\n } else if (opts.role === \"slave\") {\n this.role = \"slave\";\n } else {\n throw new Error(\"Role must be either 'master' or 'slave'!\");\n }\n this.role = opts.role;\n this.connections = {};\n this.userEventListeners = [];\n this.whenSyncedListeners = [];\n this.currentSyncTarget = null;\n this.syncingClients = [];\n this.forwardToSyncingClients = (opts.forwardToSyncingClients === false) ? false : true;\n this.debug = opts.debug ? true : false;\n }\n setUserId (userId) {\n this.userId = userId;\n this.y.db.setUserId(userId);\n }\n onUserEvent (f) {\n this.userEventListeners.push(f);\n }\n userLeft (user : string) {\n delete this.connections[user];\n if (user === this.currentSyncTarget){\n this.currentSyncTarget = null;\n this.findNextSyncTarget();\n }\n for (var f of this.userEventListeners){\n f({\n action: \"userLeft\",\n user: user\n });\n }\n }\n userJoined (user, role) {\n if(role == null){\n throw new Error(\"You must specify the role of the joined user!\");\n }\n if (this.connections[user] != null) {\n throw new Error(\"This user already joined!\");\n }\n this.connections[user] = {\n isSynced: false,\n role: role\n };\n for (var f of this.userEventListeners) {\n f({\n action: \"userJoined\",\n user: user,\n role: role\n });\n }\n if (this.currentSyncTarget == null) {\n this.findNextSyncTarget();\n }\n }\n // Execute a function _when_ we are connected.\n // If not connected, wait until connected\n whenSynced (f) {\n if (this.isSynced === true) {\n f();\n } else {\n this.whenSyncedListeners.push(f);\n }\n }\n // returns false, if there is no sync target\n // true otherwise\n findNextSyncTarget () {\n if (this.currentSyncTarget != null && this.connections[this.currentSyncTarget].isSynced === false) {\n throw new Error(\"The current sync has not finished!\");\n }\n\n var syncUser = null;\n for (var uid in this.connections) {\n syncUser = this.connections[uid];\n if (!syncUser.isSynced) {\n break;\n }\n }\n if (syncUser != null){\n var conn = this;\n this.y.db.requestTransaction(function*(){\n conn.currentSyncTarget = uid;\n conn.send(uid, {\n type: \"sync step 1\",\n stateVector: yield* this.getStateVector()\n });\n });\n }\n // set the state to synced!\n if (!this.isSynced) {\n this.isSynced = true;\n for (var f of this.whenSyncedListeners) {\n f();\n }\n this.whenSyncedListeners = null;\n }\n return false;\n }\n // You received a raw message, and you know that it is intended for to Yjs. Then call this function.\n receiveMessage (sender, m){\n if (this.debug) {\n console.log(`${sender} -> ${this.userId}: ${JSON.stringify(m)}`); //eslint-disable-line\n }\n if (m.type === \"sync step 1\") {\n // TODO: make transaction, stream the ops\n let conn = this;\n this.y.db.requestTransaction(function*(){\n var ops = yield* this.getOperations(m.stateVector);\n var sv = yield* this.getStateVector();\n conn.send(sender, {\n type: \"sync step 2\",\n os: ops,\n stateVector: sv\n });\n if (this.forwardToSyncingClients) {\n conn.syncingClients.push(sender);\n setTimeout(function(){\n conn.syncingClients = conn.syncingClients.filter(function(cli){\n return cli !== sender;\n });\n conn.send(sender, {\n type: \"sync done\"\n });\n }, conn.syncingClientDuration);\n }\n });\n } else if (m.type === \"sync step 2\") {\n this.y.db.apply(m.os);\n let conn = this;\n this.y.db.requestTransaction(function*(){\n var ops = yield* this.getOperations(m.stateVector);\n if (ops.length > 0) {\n conn.broadcast({\n type: \"update\",\n ops: ops\n });\n }\n });\n } else if (m.type === \"sync done\") {\n this.connections[sender].isSynced = true;\n this.findNextSyncTarget();\n } else if (m.type === \"update\") {\n if (this.forwardToSyncingClients) {\n for (var client of this.syncingClients) {\n this.send(client, m);\n }\n }\n this.y.db.apply(m.ops);\n }\n }\n // Currently, the HB encodes operations as JSON. For the moment I want to keep it\n // that way. Maybe we support encoding in the HB as XML in the future, but for now I don't want\n // too much overhead. Y is very likely to get changed a lot in the future\n //\n // Because we don't want to encode JSON as string (with character escaping, wich makes it pretty much unreadable)\n // we encode the JSON as XML.\n //\n // When the HB support encoding as XML, the format should look pretty much like this.\n //\n // does not support primitive values as array elements\n // expects an ltx (less than xml) object\n parseMessageFromXml (m) {\n function parseArray (node) {\n for (var n of node.children){\n if (n.getAttribute(\"isArray\") === \"true\") {\n return parseArray(n);\n } else {\n return parseObject(n);\n }\n }\n }\n function parseObject (node) {\n var json = {};\n for (var attrName in node.attrs) {\n var value = node.attrs[attrName];\n var int = parseInt(value);\n if (isNaN(int) || (\"\" + int) !== value){\n json[attrName] = value;\n } else {\n json[attrName] = int;\n }\n }\n for (var n in node.children){\n var name = n.name;\n if (n.getAttribute(\"isArray\") === \"true\") {\n json[name] = parseArray(n);\n } else {\n json[name] = parseObject(n);\n }\n }\n return json;\n }\n parseObject(m);\n }\n // encode message in xml\n // we use string because Strophe only accepts an \"xml-string\"..\n // So {a:4,b:{c:5}} will look like\n // \n // \n // \n // m - ltx element\n // json - Object\n encodeMessageToXml (msg, obj) {\n // attributes is optional\n function encodeObject (m, json) {\n for (var name in json) {\n var value = json[name];\n if (name == null) {\n // nop\n } else if (value.constructor === Object) {\n encodeObject(m.c(name), value);\n } else if (value.constructor === Array) {\n encodeArray(m.c(name), value);\n } else {\n m.setAttribute(name, value);\n }\n }\n }\n function encodeArray (m, array) {\n m.setAttribute(\"isArray\", \"true\");\n for (var e of array) {\n if (e.constructor === Object) {\n encodeObject(m.c(\"array-element\"), e);\n } else {\n encodeArray(m.c(\"array-element\"), e);\n }\n }\n }\n if (obj.constructor === Object) {\n encodeObject(msg.c(\"y\", { xmlns: \"http://y.ninja/connector-stanza\" }), obj);\n } else if (obj.constructor === Array) {\n encodeArray(msg.c(\"y\", { xmlns: \"http://y.ninja/connector-stanza\" }), obj);\n } else {\n throw new Error(\"I can't encode this json!\");\n }\n }\n}\n","/* @flow */\nclass AbstractTransaction { //eslint-disable-line no-unused-vars\n constructor (store : OperationStore) {\n this.store = store;\n }\n *getType (id) {\n var op = yield* this.getOperation(id);\n return new Y[op.type].Create(op);\n }\n // returns false if operation is not expected.\n *addOperation (op) {\n var state = yield* this.getState(op.id[0]);\n if (op.id[1] === state.clock){\n state.clock++;\n yield* this.setState(state);\n this.os.add(op);\n this.store.operationAdded(op);\n return true;\n } else if (op.id[1] < state.clock) {\n return false;\n } else {\n throw new Error(\"Operations must arrive in order!\");\n }\n }\n}\n\ntype Listener = {\n f : GeneratorFunction, // is called when all operations are available\n missing : number // number of operations that are missing\n}\n\ntype Id = [string, number];\n\nclass AbstractOperationStore { //eslint-disable-line no-unused-vars\n constructor (y) {\n this.y = y;\n this.parentListeners = {};\n this.parentListenersRequestPending = false;\n this.parentListenersActivated = {};\n // E.g. this.listenersById[id] : Array\n this.listenersById = {};\n // Execute the next time a transaction is requested\n this.listenersByIdExecuteNow = [];\n // A transaction is requested\n this.listenersByIdRequestPending = false;\n /* To make things more clear, the following naming conventions:\n * ls : we put this.listenersById on ls\n * l : Array\n * id : Id (can't use as property name)\n * sid : String (converted from id via JSON.stringify\n so we can use it as a property name)\n\n Always remember to first overwrite\n a property before you iterate over it!\n */\n }\n setUserId (userId) {\n this.userId = userId;\n }\n apply (ops) {\n for (var key in ops) {\n var o = ops[key];\n var required = Y.Struct[o.struct].requiredOps(o);\n this.whenOperationsExist(required, o);\n }\n }\n // op is executed as soon as every operation requested is available.\n // Note that Transaction can (and should) buffer requests.\n whenOperationsExist (ids : Array, op : Operation) {\n if (ids.length > 0) {\n let listener : Listener = {\n op: op,\n missing: ids.length\n };\n\n for (let key in ids) {\n let id = ids[key];\n let sid = JSON.stringify(id);\n let l = this.listenersById[sid];\n if (l == null){\n l = [];\n this.listenersById[sid] = l;\n }\n l.push(listener);\n }\n } else {\n this.listenersByIdExecuteNow.push({\n op: op\n });\n }\n\n if (this.listenersByIdRequestPending){\n return;\n }\n\n this.listenersByIdRequestPending = true;\n var store = this;\n\n this.requestTransaction(function*(){\n var exeNow = store.listenersByIdExecuteNow;\n store.listenersByIdExecuteNow = [];\n\n var ls = store.listenersById;\n store.listenersById = {};\n\n store.listenersByIdRequestPending = false;\n\n for (let key in exeNow) {\n let o = exeNow[key].op;\n yield* Struct[o.struct].execute.call(this, o);\n }\n\n for (var sid in ls){\n var l = ls[sid];\n var id = JSON.parse(sid);\n if ((yield* this.getOperation(id)) == null){\n store.listenersById[sid] = l;\n } else {\n for (let key in l) {\n let listener = l[key];\n let o = listener.op;\n if (--listener.missing === 0){\n yield* Struct[o.struct].execute.call(this, o);\n }\n }\n }\n }\n });\n }\n // called by a transaction when an operation is added\n operationAdded (op) {\n var sid = JSON.stringify(op.id);\n var l = this.listenersById[sid];\n delete this.listenersById[sid];\n\n // notify whenOperation listeners (by id)\n if (l != null) {\n for (var key in l){\n var listener = l[key];\n if (--listener.missing === 0){\n this.whenOperationsExist([], listener.op);\n }\n }\n }\n // notify parent listeners, if possible\n var listeners = this.parentListeners[op.parent];\n if ( this.parentListenersRequestPending\n || ( listeners == null )\n || ( listeners.length === 0 )) {\n return;\n }\n var al = this.parentListenersActivated[JSON.stringify(op.parent)];\n if ( al == null ){\n al = [];\n this.parentListenersActivated[JSON.stringify(op.parent)] = al;\n }\n al.push(op);\n\n this.parentListenersRequestPending = true;\n var store = this;\n this.requestTransaction(function*(){\n store.parentListenersRequestPending = false;\n var activatedOperations = store.parentListenersActivated;\n store.parentListenersActivated = {};\n for (var parentId in activatedOperations){\n var parent = yield* this.getOperation(parentId);\n Struct[parent.struct].notifyObservers(activatedOperations[parentId]);\n }\n });\n\n }\n removeParentListener (id, f) {\n var ls = this.parentListeners[id];\n if (ls != null) {\n this.parentListeners[id] = ls.filter(function(g){\n return (f !== g);\n });\n }\n }\n addParentListener (id, f) {\n var ls = this.parentListeners[JSON.stringify(id)];\n if (ls == null) {\n ls = [];\n this.parentListeners[JSON.stringify(id)] = ls;\n }\n ls.push(f);\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["y.js","Connectors/Test.js","OperationStores/Memory.js","Struct.js","runtime.js","Connectors/WebRTC.js","OperationStores/IndexedDB.js","OperationStores/RedBlackTree.js","Types/List.js","Types/Map.js","Connector.js","OperationStore.js"],"names":["_inherits","subClass","superClass","TypeError","prototype","Object","create","constructor","value","enumerable","writable","configurable","__proto__","_classCallCheck","instance","Constructor","_flushOne","bufs","i","globalRoom","buffers","length","push","userId","getRandom","m","shift","user","users","receiveMessage","copyObject","o","c","key","compareIds","id1","id2","_createClass","defineProperties","target","props","descriptor","defineProperty","protoProps","staticProps","global","wrap","innerFn","outerFn","self","tryLocsList","generator","Generator","_invoke","makeInvokeMethod","Context","tryCatch","fn","obj","arg","type","call","err","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","forEach","method","this","AwaitArgument","AsyncIterator","invoke","result","Promise","resolve","then","invokeNext","invokeThrow","unwrapped","enqueue","enqueueResult","previousPromise","invokeReturn","process","domain","bind","context","state","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","iterator","undefined","returnMethod","record","info","done","GenStateSuspendedYield","resultName","next","nextLoc","sent","dispatchException","abrupt","ContinueSentinel","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","values","iterable","iteratorMethod","iteratorSymbol","isNaN","hasOwn","hasOwnProperty","Symbol","inModule","module","runtime","regeneratorRuntime","exports","Gp","displayName","isGeneratorFunction","genFun","ctor","name","mark","awrap","async","iter","toString","keys","object","reverse","pop","prev","tempName","tempIndex","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","window","callee$0$0","context$1$0","Y","opts","db","connector","requestTransaction","callee$2$0","model","context$3$0","id","struct","map","addOperation","createType","transact","destroy","disconnect","removeDatabase","AbstractTransaction","AbstractOperationStore","Struct","removeUser","userLeft","addUser","uname","u","userJoined","userIdCounter","Test","_AbstractConnector","y","options","role","forwardToSyncingClients","setUserId","send","message","JSON","parse","stringify","broadcast","flushAll","flushOne","AbstractConnector","WebRTC","_AbstractConnector2","room","url","swr","SimpleWebRTC","once","joinRoom","webrtc","peers","on","peer","room_","payload","uid","success","getPeers","sendDirectly","setTimeout","sendDirectlyToAll","IndexedDB","Transaction","_AbstractTransaction","store","transaction","sv","objectStore","os","buffer","setOperation","op","put","getOperation","get","removeOperation","setState","getState","t0","clock","getStateVector","stateVector","cursorResult","cursor","openCursor","getStateSet","ss","_iterator","_isArray","_i","_ref","Array","isArray","getOperations","startSS","ops","endSV","_iterator2","_isArray2","_i2","_ref2","endState","startPos","endPos","range","IDBKeyRange","bound","t1","OperationStore","_AbstractOperationStore","handleTransactions","t","request","IDBRequest","IDBCursor","onsuccess","tGen","onerror","transactionQueue","queue","onRequest","IDBOpenDBRequest","event","onupgradeneeded","createObjectStore","keyPath","e","namespace","idbVersion","transactionGen","cont","context$4$0","indexedDB","open","makeGen","close","deleteDatabase","Memory","_AbstractTransaction2","n","findNode","val","find","_iterator3","_isArray3","_i3","_ref3","res","_iterator4","_isArray4","_i4","_ref4","iterate","encode","makeOperationReady","t3","t2","right","_AbstractOperationStore2","RBTree","gen","getType","N","color","_left","_right","_parent","isRed","isBlack","redden","blacken","rotateLeft","tree","parent","newParent","newRight","left","root","p","rotateRight","newLeft","getUncle","set","findNodeWithLowerBound","from","to","f","d","isFakeChild","child","_fixDelete","node","sibling","add","v","_fixInsert","uncle","grandparent","List","_model","pos","ref","content","insert","contents","_delete","_changed","YList","context$2$0","Create","Map","args$3$0","arguments","t4","t5","YMap","connections","userEventListeners","whenSyncedListeners","currentSyncTarget","syncingClients","debug","onUserEvent","findNextSyncTarget","_iterator5","_isArray5","_i5","_ref5","action","isSynced","_iterator6","_isArray6","_i6","_ref6","whenSynced","syncUser","conn","_iterator7","_isArray7","_i7","_ref7","sender","_this","console","log","callee$3$0","filter","cli","syncingClientDuration","apply","_iterator8","_isArray8","_i8","_ref8","client","parseMessageFromXml","parseArray","_x","_again","_function","_iterator9","_isArray9","_i9","_ref9","children","getAttribute","parseObject","json","attrName","attrs","int","parseInt","encodeMessageToXml","msg","encodeObject","encodeArray","setAttribute","array","_iterator10","_isArray10","_i10","_ref10","xmlns","sid","initializedTypes","operationAdded","listenersById","listenersByIdExecuteNow","listenersByIdRequestPending","required","requiredOps","whenOperationsExist","ids","listener","missing","_id","l","exeNow","ls","execute","t6","t7","t8","removeParentListener","parentListeners","g","addParentListener","Operation","Delete","deleted","Insert","start","end","origin","parentSub","opContent","getDistanceToOrigin","distanceToOrigin","startId","oOriginDistance","t9","t10","t11","t12","t14","t13","t17","t16","t18","delete","operation","oid"],"mappings":"AAUA,YAIA,SAASA,WAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIC,WAAU,iEAAoED,GAAeD,GAASG,UAAYC,OAAOC,OAAOJ,GAAcA,EAAWE,WAAaG,aAAeC,MAAOP,EAAUQ,YAAY,EAAOC,UAAU,EAAMC,cAAc,KAAeT,IAAYD,EAASW,UAAYV,GAE3Z,QAASW,iBAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIZ,WAAU,qCCOhH,QAAAa,aACA,GAAAC,KACA,KAAA,GAAAC,KAAAC,YAAAC,QACAD,WAAAC,QAAAF,GAAAG,OAAA,GACAJ,EAAAK,KAAAJ,EAGA,IAAAD,EAAAI,OAAA,EAAA,CACA,GAAAE,GAAAC,UAAAP,GACAQ,EAAAN,WAAAC,QAAAG,GAAAG,QACAC,EAAAR,WAAAS,MAAAL,EAEA,OADAI,GAAAE,eAAAJ,EAAA,GAAAA,EAAA,KACA,EAEA,OAAA,EC9BA,QAAAK,YAAAC,GACA,GAAAC,KACA,KAAA,GAAAC,KAAAF,GACAC,EAAAC,GAAAF,EAAAE,EAEA,OAAAD,GCSA,QAAAE,YAAAC,EAAAC,GAEA,MAAA,OAAAD,GAAA,MAAAC,EACA,MAAAD,GAAA,MAAAC,GACA,GAEA,EAEAD,EAAA,KAAAC,EAAA,IAAAD,EAAA,KAAAC,EAAA,IACA,GAEA,EHpBA,GAAIC,cAAe,WAAe,QAASC,GAAiBC,EAAQC,GAAS,IAAK,GAAItB,GAAI,EAAGA,EAAIsB,EAAMnB,OAAQH,IAAK,CAAE,GAAIuB,GAAaD,EAAMtB,EAAIuB,GAAWhC,WAAagC,EAAWhC,aAAc,EAAOgC,EAAW9B,cAAe,EAAU,SAAW8B,KAAYA,EAAW/B,UAAW,GAAML,OAAOqC,eAAeH,EAAQE,EAAWR,IAAKQ,IAAiB,MAAO,UAAU1B,EAAa4B,EAAYC,GAAiJ,MAA9HD,IAAYL,EAAiBvB,EAAYX,UAAWuC,GAAiBC,GAAaN,EAAiBvB,EAAa6B,GAAqB7B,OIFjiB,SAAA8B,GAyBA,QAAAC,GAAAC,EAAAC,EAAAC,EAAAC,GAEA,GAAAC,GAAA9C,OAAAC,QAAA0C,GAAAI,GAAAhD,UAOA,OALA+C,GAAAE,QAAAC,EACAP,EAAAE,GAAA,KACA,GAAAM,GAAAL,QAGAC,EAcA,QAAAK,GAAAC,EAAAC,EAAAC,GACA,IACA,OAAAC,KAAA,SAAAD,IAAAF,EAAAI,KAAAH,EAAAC,IACA,MAAAG,GACA,OAAAF,KAAA,QAAAD,IAAAG,IAiBA,QAAAV,MACA,QAAAW,MACA,QAAAC,MASA,QAAAC,GAAA7D,IACA,OAAA,QAAA,UAAA8D,QAAA,SAAAC,GACA/D,EAAA+D,GAAA,SAAAR,GACA,MAAAS,MAAAf,QAAAc,EAAAR,MA8BA,QAAAU,GAAAV,GACAS,KAAAT,IAAAA,EAGA,QAAAW,GAAAnB,GAGA,QAAAoB,GAAAJ,EAAAR,GACA,GAAAa,GAAArB,EAAAgB,GAAAR,GACAnD,EAAAgE,EAAAhE,KACA,OAAAA,aAAA6D,GACAI,QAAAC,QAAAlE,EAAAmD,KAAAgB,KAAAC,EAAAC,GACAJ,QAAAC,QAAAlE,GAAAmE,KAAA,SAAAG,GAEA,MADAN,GAAAhE,MAAAsE,EACAN,GACAK,GAYA,QAAAE,GAAAZ,EAAAR,GACA,GAAAqB,GAaAC,EAAAA,EAAAN,KAAA,WACA,MAAAJ,GAAAJ,EAAAR,KACA,GAAAc,SAAA,SAAAC,GACAA,EAAAH,EAAAJ,EAAAR,KAQA,OAFAsB,GAAAD,EAAA,SAAAE,GAEAF,EAlCA,gBAAAG,UAAAA,QAAAC,SACAb,EAAAY,QAAAC,OAAAC,KAAAd,GAGA,IAGAU,GAHAL,EAAAL,EAAAc,KAAAlC,EAAA,QACA0B,EAAAN,EAAAc,KAAAlC,EAAA,SACA+B,EAAAX,EAAAc,KAAAlC,EAAA,SAiCAiB,MAAAf,QAAA0B,EAoBA,QAAAzB,GAAAP,EAAAE,EAAAqC,GACA,GAAAC,GAAAC,CAEA,OAAA,UAAArB,EAAAR,GACA,GAAA4B,IAAAE,EACA,KAAA,IAAAC,OAAA,+BAGA,IAAAH,IAAAI,EAGA,MAAAC,IAGA,QAAA,CACA,GAAAC,GAAAP,EAAAO,QACA,IAAAA,EAAA,CACA,GAAA,WAAA1B,GACA,UAAAA,GAAA0B,EAAAC,SAAA3B,KAAA4B,EAAA,CAGAT,EAAAO,SAAA,IAIA,IAAAG,GAAAH,EAAAC,SAAA,SACA,IAAAE,EAAA,CACA,GAAAC,GAAAzC,EAAAwC,EAAAH,EAAAC,SAAAnC,EACA,IAAA,UAAAsC,EAAArC,KAAA,CAGAO,EAAA,QACAR,EAAAsC,EAAAtC,GACA,WAIA,GAAA,WAAAQ,EAGA,SAIA,GAAA8B,GAAAzC,EACAqC,EAAAC,SAAA3B,GACA0B,EAAAC,SACAnC,EAGA,IAAA,UAAAsC,EAAArC,KAAA,CACA0B,EAAAO,SAAA,KAIA1B,EAAA,QACAR,EAAAsC,EAAAtC,GACA,UAMAQ,EAAA,OACAR,EAAAoC,CAEA,IAAAG,GAAAD,EAAAtC,GACA,KAAAuC,EAAAC,KAKA,MADAZ,GAAAa,EACAF,CAJAZ,GAAAO,EAAAQ,YAAAH,EAAA1F,MACA8E,EAAAgB,KAAAT,EAAAU,QAMAjB,EAAAO,SAAA,KAGA,GAAA,SAAA1B,EACAoB,IAAAa,EACAd,EAAAkB,KAAA7C,QAEA2B,GAAAkB,SAGA,IAAA,UAAArC,EAAA,CACA,GAAAoB,IAAAC,EAEA,KADAD,GAAAI,EACAhC,CAGA2B,GAAAmB,kBAAA9C,KAGAQ,EAAA,OACAR,EAAAoC,OAGA,WAAA5B,GACAmB,EAAAoB,OAAA,SAAA/C,EAGA4B,GAAAE,CAEA,IAAAQ,GAAAzC,EAAAT,EAAAE,EAAAqC,EACA,IAAA,WAAAW,EAAArC,KAAA,CAGA2B,EAAAD,EAAAa,KACAR,EACAS,CAEA,IAAAF,IACA1F,MAAAyF,EAAAtC,IACAwC,KAAAb,EAAAa,KAGA,IAAAF,EAAAtC,MAAAgD,EAOA,MAAAT,EANAZ,GAAAO,UAAA,SAAA1B,IAGAR,EAAAoC,OAMA,UAAAE,EAAArC,OACA2B,EAAAI,EAGAxB,EAAA,QACAR,EAAAsC,EAAAtC,OAkBA,QAAAiD,GAAAC,GACA,GAAAC,IAAAC,OAAAF,EAAA,GAEA,KAAAA,KACAC,EAAAE,SAAAH,EAAA,IAGA,IAAAA,KACAC,EAAAG,WAAAJ,EAAA,GACAC,EAAAI,SAAAL,EAAA,IAGAzC,KAAA+C,WAAA7F,KAAAwF,GAGA,QAAAM,GAAAN,GACA,GAAAb,GAAAa,EAAAO,cACApB,GAAArC,KAAA,eACAqC,GAAAtC,IACAmD,EAAAO,WAAApB,EAGA,QAAA1C,GAAAL,GAIAkB,KAAA+C,aAAAJ,OAAA,SACA7D,EAAAgB,QAAA0C,EAAAxC,MACAA,KAAAkD,QA8BA,QAAAC,GAAAC,GACA,GAAAA,EAAA,CACA,GAAAC,GAAAD,EAAAE,EACA,IAAAD,EACA,MAAAA,GAAA5D,KAAA2D,EAGA,IAAA,kBAAAA,GAAAlB,KACA,MAAAkB,EAGA,KAAAG,MAAAH,EAAAnG,QAAA,CACA,GAAAH,GAAA,GAAAoF,EAAA,QAAAA,KACA,OAAApF,EAAAsG,EAAAnG,QACA,GAAAuG,EAAA/D,KAAA2D,EAAAtG,GAGA,MAFAoF,GAAA9F,MAAAgH,EAAAtG,GACAoF,EAAAH,MAAA,EACAG,CAOA,OAHAA,GAAA9F,MAAAuF,EACAO,EAAAH,MAAA,EAEAG,EAGA,OAAAA,GAAAA,KAAAA,GAKA,OAAAA,KAAAV,GAIA,QAAAA,KACA,OAAApF,MAAAuF,EAAAI,MAAA,GAhbA,GACAJ,GADA6B,EAAAvH,OAAAD,UAAAyH,eAEAH,EACA,kBAAAI,SAAAA,OAAAhC,UAAA,aAEAiC,EAAA,gBAAAC,QACAC,EAAApF,EAAAqF,kBACA,IAAAD,EAQA,YAPAF,IAGAC,OAAAG,QAAAF,GASAA,GAAApF,EAAAqF,mBAAAH,EAAAC,OAAAG,WAaAF,EAAAnF,KAAAA,CAoBA,IAAA0C,GAAA,iBACAY,EAAA,iBACAX,EAAA,YACAE,EAAA,YAIAgB,KAUAyB,EAAApE,EAAA5D,UAAAgD,EAAAhD,SACA2D,GAAA3D,UAAAgI,EAAA7H,YAAAyD,EACAA,EAAAzD,YAAAwD,EACAA,EAAAsE,YAAA,oBAYAJ,EAAAK,oBAAA,SAAAC,GACA,GAAAC,GAAA,kBAAAD,IAAAA,EAAAhI,WACA,OAAAiI,GACAA,IAAAzE,GAGA,uBAAAyE,EAAAH,aAAAG,EAAAC,OACA,GAGAR,EAAAS,KAAA,SAAAH,GAGA,MAFAA,GAAA3H,UAAAoD,EACAuE,EAAAnI,UAAAC,OAAAC,OAAA8H,GACAG,GAQAN,EAAAU,MAAA,SAAAhF,GACA,MAAA,IAAAU,GAAAV,IA+DAM,EAAAK,EAAAlE,WAKA6H,EAAAW,MAAA,SAAA7F,EAAAC,EAAAC,EAAAC,GACA,GAAA2F,GAAA,GAAAvE,GACAxB,EAAAC,EAAAC,EAAAC,EAAAC,GAGA,OAAA+E,GAAAK,oBAAAtF,GACA6F,EACAA,EAAAvC,OAAA3B,KAAA,SAAAH,GACA,MAAAA,GAAA2B,KAAA3B,EAAAhE,MAAAqI,EAAAvC,UAgJArC,EAAAmE,GAEAA,EAAAV,GAAA,WACA,MAAAtD,OAGAgE,EAAAU,SAAA,WACA,MAAA,sBAkCAb,EAAAc,KAAA,SAAAC,GACA,GAAAD,KACA,KAAA,GAAA9G,KAAA+G,GACAD,EAAAzH,KAAAW,EAMA,OAJA8G,GAAAE,UAIA,QAAA3C,KACA,KAAAyC,EAAA1H,QAAA,CACA,GAAAY,GAAA8G,EAAAG,KACA,IAAAjH,IAAA+G,GAGA,MAFA1C,GAAA9F,MAAAyB,EACAqE,EAAAH,MAAA,EACAG,EAQA,MADAA,GAAAH,MAAA,EACAG,IAsCA2B,EAAAV,OAAAA,EAMAhE,EAAAnD,WACAG,YAAAgD,EAEA+D,MAAA,WACAlD,KAAA+E,KAAA,EACA/E,KAAAkC,KAAA,EACAlC,KAAAoC,KAAAT,EACA3B,KAAA+B,MAAA,EACA/B,KAAAyB,SAAA,KAEAzB,KAAA+C,WAAAjD,QAAAkD,EAIA,KAAA,GAAAgC,GAAAC,EAAA,EACAzB,EAAA/D,KAAAO,KAAAgF,EAAA,IAAAC,IAAA,GAAAA,IACAA,EACAjF,KAAAgF,GAAA,MAIAE,KAAA,WACAlF,KAAA+B,MAAA,CAEA,IAAAoD,GAAAnF,KAAA+C,WAAA,GACAqC,EAAAD,EAAAlC,UACA,IAAA,UAAAmC,EAAA5F,KACA,KAAA4F,GAAA7F,GAGA,OAAAS,MAAAqF,MAGAhD,kBAAA,SAAAiD,GAMA,QAAAC,GAAAC,EAAAC,GAIA,MAHA5D,GAAArC,KAAA,QACAqC,EAAAtC,IAAA+F,EACApE,EAAAgB,KAAAsD,IACAC,EATA,GAAAzF,KAAA+B,KACA,KAAAuD,EAWA,KAAA,GARApE,GAAAlB,KAQAlD,EAAAkD,KAAA+C,WAAA9F,OAAA,EAAAH,GAAA,IAAAA,EAAA,CACA,GAAA4F,GAAA1C,KAAA+C,WAAAjG,GACA+E,EAAAa,EAAAO,UAEA,IAAA,SAAAP,EAAAC,OAIA,MAAA4C,GAAA,MAGA,IAAA7C,EAAAC,QAAA3C,KAAA+E,KAAA,CACA,GAAAW,GAAAlC,EAAA/D,KAAAiD,EAAA,YACAiD,EAAAnC,EAAA/D,KAAAiD,EAAA,aAEA,IAAAgD,GAAAC,EAAA,CACA,GAAA3F,KAAA+E,KAAArC,EAAAE,SACA,MAAA2C,GAAA7C,EAAAE,UAAA,EACA,IAAA5C,KAAA+E,KAAArC,EAAAG,WACA,MAAA0C,GAAA7C,EAAAG,gBAGA,IAAA6C,GACA,GAAA1F,KAAA+E,KAAArC,EAAAE,SACA,MAAA2C,GAAA7C,EAAAE,UAAA,OAGA,CAAA,IAAA+C,EAMA,KAAA,IAAArE,OAAA,yCALA,IAAAtB,KAAA+E,KAAArC,EAAAG,WACA,MAAA0C,GAAA7C,EAAAG,gBAUAP,OAAA,SAAA9C,EAAAD,GACA,IAAA,GAAAzC,GAAAkD,KAAA+C,WAAA9F,OAAA,EAAAH,GAAA,IAAAA,EAAA,CACA,GAAA4F,GAAA1C,KAAA+C,WAAAjG,EACA,IAAA4F,EAAAC,QAAA3C,KAAA+E,MACAvB,EAAA/D,KAAAiD,EAAA,eACA1C,KAAA+E,KAAArC,EAAAG,WAAA,CACA,GAAA+C,GAAAlD,CACA,QAIAkD,IACA,UAAApG,GACA,aAAAA,IACAoG,EAAAjD,QAAApD,GACAA,GAAAqG,EAAA/C,aAGA+C,EAAA,KAGA,IAAA/D,GAAA+D,EAAAA,EAAA3C,aAUA,OATApB,GAAArC,KAAAA,EACAqC,EAAAtC,IAAAA,EAEAqG,EACA5F,KAAAkC,KAAA0D,EAAA/C,WAEA7C,KAAA6F,SAAAhE,GAGAU,GAGAsD,SAAA,SAAAhE,EAAAiB,GACA,GAAA,UAAAjB,EAAArC,KACA,KAAAqC,GAAAtC,GAGA,WAAAsC,EAAArC,MACA,aAAAqC,EAAArC,KACAQ,KAAAkC,KAAAL,EAAAtC,IACA,WAAAsC,EAAArC,MACAQ,KAAAqF,KAAAxD,EAAAtC,IACAS,KAAAkC,KAAA,OACA,WAAAL,EAAArC,MAAAsD,IACA9C,KAAAkC,KAAAY,IAIAgD,OAAA,SAAAjD,GACA,IAAA,GAAA/F,GAAAkD,KAAA+C,WAAA9F,OAAA,EAAAH,GAAA,IAAAA,EAAA,CACA,GAAA4F,GAAA1C,KAAA+C,WAAAjG,EACA,IAAA4F,EAAAG,aAAAA,EAGA,MAFA7C,MAAA6F,SAAAnD,EAAAO,WAAAP,EAAAI,UACAE,EAAAN,GACAH,IAKAwD,QAAA,SAAApD,GACA,IAAA,GAAA7F,GAAAkD,KAAA+C,WAAA9F,OAAA,EAAAH,GAAA,IAAAA,EAAA,CACA,GAAA4F,GAAA1C,KAAA+C,WAAAjG,EACA,IAAA4F,EAAAC,SAAAA,EAAA,CACA,GAAAd,GAAAa,EAAAO,UACA,IAAA,UAAApB,EAAArC,KAAA,CACA,GAAAwG,GAAAnE,EAAAtC,GACAyD,GAAAN,GAEA,MAAAsD,IAMA,KAAA,IAAA1E,OAAA,0BAGA2E,cAAA,SAAA7C,EAAAnB,EAAAE,GAOA,MANAnC,MAAAyB,UACAC,SAAAyB,EAAAC,GACAnB,WAAAA,EACAE,QAAAA,GAGAI,KAOA,gBAAA9D,QAAAA,OACA,gBAAAyH,QAAAA,OACA,gBAAArH,MAAAA,KAAA8C,OJlnBA,IAAAhC,mBAAAmE,mBAAAQ,KAAA,QAAA6B,KA6lBE,MAAOrC,oBAAmBpF,KAAK,SAAqB0H,GAClD,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACL,IAAK,MACH,MAAOkE,GAAYlB,SAEtBiB,EAAYnG,QAnmBjB7D,YAEAkK,EAAA,WACA,QADAA,GACAC,GAumBI7J,gBAAgBuD,KAxmBpBqG,GAEArG,KAAAuG,GAAA,GAAAF,GAAAC,EAAAC,GAAAlC,MAAArE,KAAAsG,EAAAC,IACAvG,KAAAwG,UAAA,GAAAH,GAAAC,EAAAE,UAAAnC,MAAArE,KAAAsG,EAAAE,WACAxG,KAAAuG,GAAAE,mBAAA3C,mBAAAQ,KAAA,QAAAoC,KAymBM,GAvmBNC,EAwmBM,OAAO7C,oBAAmBpF,KAAK,SAAqBkI,GAClD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAOH,MAjnBZyE,IACAE,IAAA,IAAA,GACAC,OAAA,MACAtH,KAAA,MACAuH,QA6mBmBH,EAAYX,cA3mB/BjG,KAAAgH,aAAAL,GAAA,KAAA,EA6mBU,KAAK,GA5mBf3G,KAAAiH,WAAAN,EA+mBU,KAAK,GACL,IAAK,MACH,MAAOC,GAAY1B,SAEtBwB,EAAY1G,SAqBnB,MArpBFqG,GAAArK,UAgBAkL,SAAA,SAAAnI,GACA,GAAAA,EAAA5C,cAAAwD,kBACA,KAAA,IAAA2B,OAAA,qEAEAtB,MAAAuG,GAAAE,mBAAA1H,IApBAsH,EAAArK,UAsBAmL,QAAA,WACAnH,KAAAwG,UAAAY,aACApH,KAAAuG,GAAAc,iBACArH,KAAAwG,UAAA,KACAxG,KAAAuG,GAAA,KACAvG,KAAAkH,SAAA,WACA,KAAA,IAAA5F,OAAA,2CA5BA+E,IAiCAA,GAAAiB,oBAAAA,oBACAjB,EAAAkB,uBAAAA,uBACAlB,EAAAmB,OAAAA,MCvCA,IAAAzK,aACAS,SACAR,WACAyK,WAAA,SAAAlK,GAEA,IAAA,GAAAT,KAAAkD,MAAAxC,MACAwC,KAAAxC,MAAAV,GAAA4K,SAAAnK,SAEAyC,MAAAxC,MAAAD,SACAyC,MAAAhD,QAAAO,IAEAoK,QAAA,SAAAnB,GACAxG,KAAAxC,MAAAgJ,EAAArJ,QAAAqJ,EACAxG,KAAAhD,QAAAwJ,EAAArJ,UACA,KAAA,GAAAyK,KAAA5H,MAAAxC,MACA,GAAAoK,IAAApB,EAAArJ,OAAA,CACA,GAAA0K,GAAA7H,KAAAxC,MAAAoK,EACAC,GAAAC,WAAAtB,EAAArJ,OAAA,UACAqJ,EAAAsB,WAAAD,EAAA1K,OAAA,aAwBA4K,cAAA,EAEAC,KAAA,SAAAC,GACA,QADAD,GACAE,EAAAC,GACA,GDgqBI1L,gBAAgBuD,KClqBpBgI,GAEArG,SAAAwG,EACA,KAAA,IAAA7G,OAAA,iCAEA6G,GAAAC,KAAA,SACAD,EAAAE,yBAAA,EACAJ,EAAAxI,KAAAO,KAAAkI,EAAAC,GACAnI,KAAAsI,UAAAP,iBAAA,IACAhL,WAAA4K,QAAA3H,MACAA,KAAAjD,WAAAA,WDgsBE,MA3BAnB,WC/qBFoM,EAAAC,GAAAD,EAAAhM,UAYAuM,KAAA,SAAApL,EAAAqL,GACAzL,WAAAC,QAAAG,GAAAD,KAAAuL,KAAAC,MAAAD,KAAAE,WAAA3I,KAAA7C,OAAAqL,OAbAR,EAAAhM,UAeA4M,UAAA,SAAAJ,GACA,IAAA,GAAA3K,KAAAd,YAAAC,QACAD,WAAAC,QAAAa,GAAAX,KAAAuL,KAAAC,MAAAD,KAAAE,WAAA3I,KAAA7C,OAAAqL,OAjBAR,EAAAhM,UAoBAoL,WAAA,WACArK,WAAA0K,WAAAzH,KAAA7C,SArBA6K,EAAAhM,UAuBA6M,SAAA,WAEA,IADA,GAAAjL,IAAA,EACAA,GACAA,EAAAhB,aA1BAoL,EAAAhM,UA6BA8M,SAAA,WACAlM,aA9BAoL,GAAAe,kBAkCA1C,GAAA2B,KAAAA,ID6qBA,IK1vBAgB,QAAA,SAAAC,GACA,QADAD,GACAb,GACA,GL0vBI1L,gBAAgBuD,KK5vBpBgJ,GAEArH,SAAAwG,EACA,KAAA,IAAA7G,OAAA,iCAEA2H,GAAAxJ,KAAAO,MACAoI,KAAA,SAGA,IAAAc,GAAAf,EAAAe,IAGA,OAAAf,EAAAgB,MACAhB,EAAAgB,IAAA,2BAGA,IAAAC,GAAA,GAAAC,cAAAlB,EACAnI,MAAAoJ,IAAAA,CACA,IAAAvK,GAAAmB,IAEAoJ,GAAAE,KAAA,kBAAA,SAAAnM,GAEAiM,EAAAG,SAAAL,GAEAE,EAAAE,KAAA,aAAA,WACAzK,EAAAyJ,UAAAnL,EACA,IAAAL,EAGA,KAAAA,IAAA+B,GAAAuK,IAAAI,OAAAC,MACA5K,EAAAiJ,WAAAjJ,EAAAuK,IAAAI,OAAAC,MAAA3M,GAAA+J,GAAA,SAEAuC,GAAAM,GAAA,iBAAA,SAAAC,EAAAC,EAAApB,GAIA,MAAAA,EAAAhJ,MACAX,EAAApB,eAAAkM,EAAA9C,GAAA2B,EAAAqB,aAKAT,EAAAM,GAAA,cAAA,SAAAC,GAIA9K,EAAAiJ,WAAA6B,EAAA9C,GAAA,YAGAuC,EAAAM,GAAA,oBAAA,SAAAC,GAIA9K,EAAA6I,SAAAiC,EAAA9C,QL2xBE,MA1BAjL,WKtzBFoN,EAAAC,GAAAD,EAAAhN,UAyDAuM,KAAA,QAAAA,GAAAuB,EAAAtB,GACA,GAAA3J,GAAAmB,KAEAuI,EAAA,QAAAA,KAEA,GACAwB,GADAJ,EAAA9K,EAAAuK,IAAAI,OAAAQ,SAAAF,GAAA,EAEAH,KAEAI,EAAAJ,EAAAM,aAAA,eAAA,MAAAzB,IAEAuB,GAEAG,WAAA3B,EAAA,KAIAA,MA1EAS,EAAAhN,UA4EA4M,UAAA,SAAAJ,GACAxI,KAAAoJ,IAAAe,kBAAA,eAAA,MAAA3B,IA7EAQ,GAAAD,kBAiFA1C,GAAA2C,OAAAA,OC9DA3C,EAAA+D,UAAA,WNq0BE,GMp0BFC,GAAA,SAAAC,GAMA,QANAD,GAMAE,GNg0BM9N,gBAAgBuD,KMt0BtBqK,GAOAC,EAAA7K,KAAAO,KAAAuK,GACAvK,KAAAwK,YAAAD,EAAAhE,GAAAiE,aAAA,iBAAA,eAAA,aACAxK,KAAAyK,GAAAzK,KAAAwK,YAAAE,YAAA,eACA1K,KAAA2K,GAAA3K,KAAAwK,YAAAE,YAAA,kBACA1K,KAAA4K,UNwmCI,MApSAhP,WM/0BJyO,EAAAC,GAAAD,EAAArO,UAaA6O,aAAA/G,mBAAAQ,KAAA,QAAAuG,GAAAC,GNq0BM,MAAOhH,oBAAmBpF,KAAK,SAAuBkI,GACpD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAEH,MADA0E,GAAY1E,KAAO,EMv0B/BlC,KAAA2K,GAAAI,IAAAD,EN00BU,KAAK,GAEH,MM30BZ9K,MAAA4K,OAAAnC,KAAAE,UAAAmC,EAAAjE,KAAAiE,EN20BmBlE,EAAYtE,OAAO,SM10BtCwI,EN40BU,KAAK,GACL,IAAK,MACH,MAAOlE,GAAY1B,SAEtB2F,EAAc7K,QMh2BvBqK,EAAArO,UAkBAgP,aAAAlH,mBAAAQ,KAAA,QAAA0G,GAAAnE,GNi1BM,GMh1BNiE,ENi1BM,OAAOhH,oBAAmBpF,KAAK,SAAuBkI,GACpD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAGH,GMt1BZ4I,EAAA9K,KAAA4K,OAAAnC,KAAAE,UAAA9B,IACA,MAAAiE,EAAA,CNs1BclE,EAAY1E,KAAO,CACnB,OAIF,MADA0E,GAAY1E,KAAO,EMz1B/BlC,KAAA2K,GAAAM,IAAApE,EN41BU,KAAK,GM51BfiE,EAAAlE,EAAAxE,KACApC,KAAA4K,OAAAnC,KAAAE,UAAA9B,IAAAiE,CNg2BU,KAAK,GACH,MAAOlE,GAAYtE,OAAO,SM/1BtCwI,ENi2BU,KAAK,GACL,IAAK,MACH,MAAOlE,GAAY1B,SAEtB8F,EAAchL,QM73BvBqK,EAAArO,UA0BAkP,gBAAApH,mBAAAQ,KAAA,QAAA4G,GAAArE,GNs2BM,MAAO/C,oBAAmBpF,KAAK,SAA0BkI,GACvD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAGH,MM12BZlC,MAAA4K,OAAAnC,KAAAE,UAAA9B,IAAA,KNy2BYD,EAAY1E,KAAO,EMx2B/BlC,KAAA2K,GAAA,UAAA9D,EN22BU,KAAK,GACH,MAAOD,GAAYtE,OAAO,SAAUsE,EAAYxE,KAElD,KAAK,GACL,IAAK,MACH,MAAOwE,GAAY1B,SAEtBgG,EAAiBlL,QM94B1BqK,EAAArO,UA8BAmP,SAAArH,mBAAAQ,KAAA,QAAA6G,GAAAhK,GNm3BM,MAAO2C,oBAAmBpF,KAAK,SAAmBkI,GAChD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAEH,MADA0E,GAAY1E,KAAO,EMr3B/BlC,KAAAyK,GAAAM,IAAA5J,ENw3BU,KAAK,GACH,MAAOyF,GAAYtE,OAAO,SAAUsE,EAAYxE,KAElD,KAAK,GACL,IAAK,MACH,MAAOwE,GAAY1B,SAEtBiG,EAAUnL,QM95BnBqK,EAAArO,UAiCAoP,SAAAtH,mBAAAQ,KAAA,QAAA8G,GAAA7N,GNg4BM,GM/3BN4D,ENg4BM,OAAO2C,oBAAmBpF,KAAK,SAAmBkI,GAChD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAEH,MADA0E,GAAY1E,KAAO,EMl4B/BlC,KAAAyK,GAAAQ,IAAA1N,ENq4BU,KAAK,GAGH,GAFAqJ,EAAYyE,GMt4BxBlK,EAAAyF,EAAAxE,KAAA,MNw4BkBwE,EAAYyE,GMx4B9B,CNy4BczE,EAAY1E,KAAO,CACnB,OAGF,MAAO0E,GAAYtE,OAAO,SM54BtCnB,EN84BU,KAAK,GACH,MAAOyF,GAAYtE,OAAO,UM54BtC/E,KAAAA,EACA+N,MAAA,GNg5BU,KAAK,GACL,IAAK,MACH,MAAO1E,GAAY1B,SAEtBkG,EAAUpL,QM57BnBqK,EAAArO,UA4CAuP,eAAAzH,mBAAAQ,KAAA,QAAAiH,KNm5BM,GMl5BNC,GACAC,EACAC,CNi5BM,OAAO5H,oBAAmBpF,KAAK,SAAyBkI,GACtD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GMr5BfsJ,KACAC,EAAAzL,KAAAyK,GAAAkB,YNw5BU,KAAK,GAEH,MADA/E,GAAY1E,KAAO,EMv5B/BuJ,CN05BU,KAAK,GAGH,GAFA7E,EAAYyE,GM35BxBK,EAAA9E,EAAAxE,KAAA,MN65BkBwE,EAAYyE,GM75B9B,CN85BczE,EAAY1E,KAAO,EACnB,OM95BdsJ,EAAAtO,KAAAwO,EAAAtP,OACAsP,EAAA,cNk6BY9E,EAAY1E,KAAO,CACnB,MAEF,KAAK,IACH,MAAO0E,GAAYtE,OAAO,SMp6BtCkJ,ENs6BU,KAAK,IACL,IAAK,MACH,MAAO5E,GAAY1B,SAEtBqG,EAAgBvL,QM99BzBqK,EAAArO,UAsDA4P,YAAA9H,mBAAAQ,KAAA,QAAAsH,KN26BM,GM16BNnB,GACAoB,EAAAC,EAAAC,EAAAC,EAAAC,EACA9K,CN06BM,OAAO2C,oBAAmBpF,KAAK,SAAsBkI,GACnD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GACH,MAAO0E,GAAYX,cM/6B/BjG,KAAAuL,iBAAA,KAAA,ENi7BU,KAAK,GMj7Bfd,EAAA7D,EAAAyE,GACAQ,KNm7BYC,EMl7BZrB,EAAAsB,EAAAG,MAAAC,QAAAL,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAApI,OAAAhC,WNo7BU,KAAK,GACH,IAAKqK,EAAU,CACbnF,EAAY1E,KAAO,EACnB,OAGF,KAAM8J,GAAMF,EAAU7O,QAAS,CAC7B2J,EAAY1E,KAAO,CACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,GACH2J,EAAOH,EAAUE,KACjBpF,EAAY1E,KAAO,EACnB,MAEF,KAAK,IAGH,GAFA8J,EAAKF,EAAU5J,QAEV8J,EAAGjK,KAAM,CACZ6E,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,IACH2J,EAAOD,EAAG5P,KAEZ,KAAK,IMn9Bf+E,EAAA8K,EACAJ,EAAA1K,EAAA5D,MAAA4D,EAAAmK,KNu9BU,KAAK,IACH1E,EAAY1E,KAAO,CACnB,MAEF,KAAK,IACH,MAAO0E,GAAYtE,OAAO,SM19BtCuJ,EN49BU,KAAK,IACL,IAAK,MACH,MAAOjF,GAAY1B,SAEtB0G,EAAa5L,QM5hCtBqK,EAAArO,UA+DAoQ,cAAAtI,mBAAAQ,KAAA,QAAA8H,GAAAC,GNg+BM,GM59BNC,GAEAC,EAAAC,EAAAC,EAAAC,EAAAC,EACAC,EACArP,EACAsP,EACAC,EACAC,EACAtB,EACAC,CNq9BM,OAAO5H,oBAAmBpF,KAAK,SAAwBkI,GACrD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAKH,MMx+BZ,OAAAmK,IACAA,MAEAC,KNq+BmB1F,EAAYX,cMn+B/BjG,KAAAuL,iBAAA,KAAA,ENq+BU,KAAK,GMr+BfgB,EAAA3F,EAAAyE,GNu+BYmB,EMt+BZD,EAAAE,EAAAP,MAAAC,QAAAK,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAA9I,OAAAhC,WNw+BU,KAAK,GACH,IAAK+K,EAAW,CACd7F,EAAY1E,KAAO,EACnB,OAGF,KAAMwK,GAAOF,EAAWvP,QAAS,CAC/B2J,EAAY1E,KAAO,CACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,GACHqK,EAAQH,EAAWE,KACnB9F,EAAY1E,KAAO,EACnB,MAEF,KAAK,IAGH,GAFAwK,EAAMF,EAAWtK,QAEZwK,EAAI3K,KAAM,CACb6E,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,IACHqK,EAAQD,EAAItQ,KAEd,KAAK,IMvgCfwQ,EAAAD,EACApP,EAAAqP,EAAArP,KACAsP,EAAAR,EAAA9O,IAAA,EACAuP,EAAAF,EAAAtB,MACAyB,EAAAC,YAAAC,OAAA1P,EAAAsP,IAAAtP,EAAAuP,IACArB,EAAAzL,KAAA2K,GAAAgB,WAAAoB,EN0gCU,KAAK,IAEH,MADAnG,GAAY1E,KAAO,GMzgC/BuJ,CN4gCU,KAAK,IAGH,GAFA7E,EAAYsG,GM7gCxBxB,EAAA9E,EAAAxE,KAAA,MN+gCkBwE,EAAYsG,GM/gC9B,CNghCctG,EAAY1E,KAAO,EACnB,OMhhCdoK,EAAApP,KAAAwO,EAAAtP,OACAsP,EAAA,cNohCY9E,EAAY1E,KAAO,EACnB,MAEF,KAAK,IACH0E,EAAY1E,KAAO,CACnB,MAEF,KAAK,IACH,MAAO0E,GAAYtE,OAAO,SMzhCtCgK,EN2hCU,KAAK,IACL,IAAK,MACH,MAAO1F,GAAY1B,SAEtBkH,EAAepM,QMjnCxBqK,GAAA/C,qBAqFA6F,EAAA,SAAAC,GAIA,QAJAD,GAIAjF,EAAA5B,GAwCA,QAAA+G,GAAAC,GACA,GAAAC,GAAAD,EAAAlR,KACAkR,GAAAvL,OAEAwL,EAAApR,cAAAqR,YACAD,EAAApR,cAAAsR,WACAF,EAAAG,UAAA,WACAL,EAAAM,EAAAzL,KAAAqL,EAAAnN,UAEAmN,EAAAK,QAAA,SAAAlO,GACAiO,EAAA,SAAAjO,KAEA6N,IAAAhD,EAAAsD,iBACAN,EAAAO,MAAA7Q,OAAA,EACAoQ,EAAAM,EAAAzL,KAAAqL,EAAAO,MAAAxQ,UAEAiQ,EAAAQ,UAAA,WACAR,EAAAQ,UAAA,KACAV,EAAAM,EAAAzL,KAAAqL,EAAAO,MAAAxQ,WAGAiQ,EAAApR,cAAA6R,kBACAT,EAAAG,UAAA,SAAAO,GACA,GAAA1H,GAAA0H,EAAA9P,OAAAiC,MACAiN,GAAAM,EAAAzL,KAAAqE,KAEAgH,EAAAK,QAAA,WACAD,EAAA,SAAA,sCAEAJ,EAAAW,gBAAA,SAAAD,GACA,GAAA1H,GAAA0H,EAAA9P,OAAAiC,MACA,KACAmG,EAAA4H,kBAAA,kBAAAC,QAAA,OACA7H,EAAA4H,kBAAA,eAAAC,QAAA,SACA,MAAAC,OAKAV,EAAA,SAAA,iCA1EA,GN0hCMlR,gBAAgBuD,KMniCtBmN,GAKAC,EAAA3N,KAAAO,KAAAkI,GACA,MAAA5B,IACAA,MAEA,MAAAA,EAAAgI,WAAA,gBAAAhI,GAAAgI,UACA,KAAA,IAAAhN,OAAA,+CAEAtB,MAAAsO,UAAAhI,EAAAgI,UAGAtO,KAAAuO,WADA,MAAAjI,EAAAiI,WACAjI,EAAAiI,WAEA,EAGAvO,KAAA6N,kBACAC,SACAC,UAAA,KAGA,IAAAxD,GAAAvK,KAEA2N,EAAA7J,mBAAAQ,KAAA,QAAAkK,KNiiCQ,GM/hCRX,GAEArD,EACAiE,EAEAlB,CN2hCQ,OAAOzJ,oBAAmBpF,KAAK,SAAyBgQ,GACtD,OAAU,OAAQA,EAAY3J,KAAO2J,EAAYxM,MAC/C,IAAK,GAEH,MADAwM,GAAYxM,KAAO,EMpiCjCyM,UAAAC,KAAAtI,EAAAgI,UAAA/D,EAAAgE,WNuiCY,KAAK,GMviCjBhE,EAAAhE,GAAAmI,EAAAtM,KACAyL,EAAAtD,EAAAsD,iBAEArD,EAAA,KACAiE,GAAA,CNyiCY,KAAK,GACH,IMziCdA,EAAA,CN0iCgBC,EAAYxM,KAAO,EACnB,OAIF,MADAwM,GAAYxM,KAAO,EM7iCjC2L,CNgjCY,KAAK,GAKH,MMrjCdN,GAAAmB,EAAAtM,KACAoI,EAAA,GAAAH,GAAAE,GNojCqBmE,EAAYzI,cMljCjCsH,EAAA9N,KAAA+K,EAAA+C,GAAA,KAAA,GNojCY,KAAK,IACHmB,EAAYxM,KAAO,CACnB,MAEF,KAAK,IACL,IAAK,MACH,MAAOwM,GAAYxJ,SMpkCjCsJ,EAAAxO,SA2DAqN,GAAAM,EAAAzL,QNglCI,MAvBAtG,WM/oCJuR,EAAAC,GAAAD,EAAAnR,UAyFAyK,mBAAA,SAAAoI,GACA7O,KAAA6N,iBAAAC,MAAA5Q,KAAA2R,GACA,MAAA7O,KAAA6N,iBAAAE,WACA/N,KAAA6N,iBAAAE,aA5FAZ,EAAAnR,UA+FAqL,eAAAvD,mBAAAQ,KAAA,QAAA+C,KN0jCM,MAAOvD,oBAAmBpF,KAAK,SAAyBkI,GACtD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAGH,MM9jCZlC,MAAAuG,GAAAuI,QN6jCYlI,EAAY1E,KAAO,EM5jC/ByM,UAAAI,eAAA/O,KAAAsO,UN+jCU,KAAK,GACL,IAAK,MACH,MAAO1H,GAAY1B,SAEtBmC,EAAgBrH,QMpqCzBmN,GAAA5F,uBAoGA,OAAA4F,MJ3LA9G,EAAA2I,OAAA,WFgxCE,GE/wCF3E,GAAA,SAAA4E,GAKA,QALA5E,GAKAE,GF4wCM9N,gBAAgBuD,KEjxCtBqK,GAMA4E,EAAAxP,KAAAO,KAAAuK,GACAvK,KAAA6L,GAAAtB,EAAAsB,GACA7L,KAAA2K,GAAAJ,EAAAI,GFijDI,MAjSA/O,WExxCJyO,EAAA4E,GAAA5E,EAAArO,UAUA6O,aAAA/G,mBAAAQ,KAAA,QAAAuG,GAAAC,GFixCM,GE/wCNoE,EFgxCM,OAAOpL,oBAAmBpF,KAAK,SAAuBkI,GACpD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAIH,MEtxCZgN,GAAAlP,KAAA2K,GAAAwE,SAAArE,EAAAjE,IACAqI,EAAAE,IAAAtE,EFqxCmBlE,EAAYtE,OAAO,SEpxCtCwI,EFsxCU,KAAK,GACL,IAAK,MACH,MAAOlE,GAAY1B,SAEtB2F,EAAc7K,QExyCvBqK,EAAArO,UAgBAgP,aAAAlH,mBAAAQ,KAAA,QAAA0G,GAAAnE,GF2xCM,MAAO/C,oBAAmBpF,KAAK,SAAuBkI,GACpD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GACH,GE7xCZ,MAAA2E,EAAA,CF8xCcD,EAAY1E,KAAO,CACnB,OAGF,KEjyCZ,IAAAZ,OAAA,sBFmyCU,KAAK,GACH,MAAOsF,GAAYtE,OAAO,SElyCtCtC,KAAA2K,GAAA0E,KAAAxI,GFoyCU,KAAK,GACL,IAAK,MACH,MAAOD,GAAY1B,SAEtB8F,EAAchL,QE5zCvBqK,EAAArO,UAsBAkP,gBAAApH,mBAAAQ,KAAA,QAAA4G,GAAArE,GFyyCM,MAAO/C,oBAAmBpF,KAAK,SAA0BkI,GACvD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GE1yCflC,KAAA2K,GAAA,UAAA9D,EF6yCU,KAAK,GACL,IAAK,MACH,MAAOD,GAAY1B,SAEtBgG,EAAiBlL,QEx0C1BqK,EAAArO,UAyBAmP,SAAArH,mBAAAQ,KAAA,QAAA6G,GAAAhK,GFkzCM,MAAO2C,oBAAmBpF,KAAK,SAAmBkI,GAChD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GEnzCflC,KAAA6L,GAAA1K,EAAA5D,MAAA4D,EAAAmK,KFszCU,KAAK,GACL,IAAK,MACH,MAAO1E,GAAY1B,SAEtBiG,EAAUnL,QEp1CnBqK,EAAArO,UA4BAoP,SAAAtH,mBAAAQ,KAAA,QAAA8G,GAAA7N,GF2zCM,GE1zCN+N,EF2zCM,OAAOxH,oBAAmBpF,KAAK,SAAmBkI,GAChD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAMH,MEn0CZoJ,GAAAtL,KAAA6L,GAAAtO,GACA,MAAA+N,IACAA,EAAA,GFi0CmB1E,EAAYtE,OAAO,UE9zCtC/E,KAAAA,EACA+N,MAAAA,GFk0CU,KAAK,GACL,IAAK,MACH,MAAO1E,GAAY1B,SAEtBkG,EAAUpL,QEz2CnBqK,EAAArO,UAsCAuP,eAAAzH,mBAAAQ,KAAA,QAAAiH,KFs0CM,GEr0CNC,GACAjO,EACA+N,CFo0CM,OAAOxH,oBAAmBpF,KAAK,SAAyBkI,GACtD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GEx0CfsJ,IACA,KAAAjO,IAAAyC,MAAA6L,GACAP,EAAAtL,KAAA6L,GAAAtO,GACAiO,EAAAtO,MACAK,KAAAA,EACA+N,MAAAA,GF80CY,OAAO1E,GAAYtE,OAAO,SE30CtCkJ,EF60CU,KAAK,GACL,IAAK,MACH,MAAO5E,GAAY1B,SAEtBqG,EAAgBvL,QEh4CzBqK,EAAArO,UAiDA4P,YAAA9H,mBAAAQ,KAAA,QAAAsH,KFk1CM,MAAO9H,oBAAmBpF,KAAK,SAAsBkI,GACnD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GACH,MAAO0E,GAAYtE,OAAO,SEp1CtCtC,KAAA6L,GFs1CU,KAAK,GACL,IAAK,MACH,MAAOjF,GAAY1B,SAEtB0G,EAAa5L,QE54CtBqK,EAAArO,UAoDAoQ,cAAAtI,mBAAAQ,KAAA,QAAA8H,GAAAC,GF21CM,GEt1CNC,GAEAC,EAAA+C,EAAAC,EAAAC,EAAAC,EACA7C,EACArP,EAIAsP,EACAC,EAMA4C,EAAAC,EAAAC,EAAAC,EAAAC,EACAhF,CFw0CM,OAAOhH,oBAAmBpF,KAAK,SAAwBkI,GACrD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAMH,MEn2CZ,OAAAmK,IACAA,MAEAC,KFg2CmB1F,EAAYX,cE91C/BjG,KAAAuL,iBAAA,KAAA,EFg2CU,KAAK,GEh2CfgB,EAAA3F,EAAAyE,GFk2CYiE,EEj2CZ/C,EAAAgD,EAAArD,MAAAC,QAAAmD,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAA5L,OAAAhC,WFm2CU,KAAK,GACH,IAAK6N,EAAW,CACd3I,EAAY1E,KAAO,EACnB,OAGF,KAAMsN,GAAOF,EAAWrS,QAAS,CAC/B2J,EAAY1E,KAAO,CACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,GACHmN,EAAQH,EAAWE,KACnB5I,EAAY1E,KAAO,EACnB,MAEF,KAAK,IAGH,GAFAsN,EAAMF,EAAWpN,QAEZsN,EAAIzN,KAAM,CACb6E,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,IACHmN,EAAQD,EAAIpT,KAEd,KAAK,IAIH,GEt4CZwQ,EAAA6C,EACAlS,EAAAqP,EAAArP,KACA,MAAAA,EAAA,CFq4CcqJ,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYtE,OAAO,WAAY,GAExC,KAAK,IEx4CfuK,EAAAR,EAAA9O,IAAA,EACAuP,EAAAF,EAAAtB,MAEAtL,KAAA2K,GAAAoF,SAAAxS,EAAAsP,IAAAtP,EAAAuP,GAAA,SAAAhC,GACAwB,EAAApP,KAAAsK,OAAAsD,EAAAhE,QAAAkJ,OAAAlF,KF64CU,KAAK,IACHlE,EAAY1E,KAAO,CACnB,MAEF,KAAK,IE94CfwN,KFg5CYC,EE/4CZrD,EAAAsD,EAAA1D,MAAAC,QAAAwD,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAAjM,OAAAhC,WFi5CU,KAAK,IACH,IAAKkO,EAAW,CACdhJ,EAAY1E,KAAO,EACnB,OAGF,KAAM2N,GAAOF,EAAW1S,QAAS,CAC/B2J,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,IACHwN,EAAQH,EAAWE,KACnBjJ,EAAY1E,KAAO,EACnB,MAEF,KAAK,IAGH,GAFA2N,EAAMF,EAAWzN,QAEZ2N,EAAI9N,KAAM,CACb6E,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,GAErC,KAAK,IACHwN,EAAQD,EAAIzT,KAEd,KAAK,IAGH,MEn7CZ0O,GAAAgF,EFk7CYlJ,EAAYsG,GEj7CxBwC,EFk7CmB9I,EAAYX,cEl7C/BjG,KAAAiQ,mBAAAxQ,KAAAO,KAAAqM,EAAAvB,GAAA,KAAA,GFo7CU,KAAK,IACHlE,EAAYsJ,GAAKtJ,EAAYuJ,GAC7BvJ,EAAYsG,GEt7CxBhQ,KAAAuC,KAAAmH,EAAAsG,GAAAtG,EAAAsJ,GFw7CU,KAAK,IACHtJ,EAAY1E,KAAO,EACnB,MAEF,KAAK,IACH,MAAO0E,GAAYtE,OAAO,SE37CtCoN,EF67CU,KAAK,IACL,IAAK,MACH,MAAO9I,GAAY1B,SAEtBkH,EAAepM,QE7gDxBqK,EAAArO,UA8EAiU,mBAAAnM,mBAAAQ,KAAA,QAAA2L,GAAApE,EAAAf,GFk8CM,GEh8CNQ,GACA3N,CFg8CM,OAAOmG,oBAAmBpF,KAAK,SAA6BkI,GAC1D,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GEl8CfvE,EAAAmN,CFq8CU,KAAK,GACH,GEr8CZ,MAAAnN,EAAAyS,MAAA,CFs8CcxJ,EAAY1E,KAAO,CACnB,OAGF,MAAO0E,GAAYX,cEx8C/BjG,KAAAgL,aAAArN,EAAAyS,OAAA,KAAA,EF08CU,KAAK,GAKH,GE/8CZzS,EAAAiJ,EAAAyE,GACAC,EAAAO,EAAAlO,EAAAkJ,GAAA,MACA,MAAAyE,GAAA3N,EAAAkJ,GAAA,GAAAyE,GAAA,CF88Cc1E,EAAY1E,KAAO,CACnB,OAGF,MAAO0E,GAAYtE,OAAO,QAAS,EAErC,KAAK,GACHsE,EAAY1E,KAAO,CACnB,MAEF,KAAK,GAGH,MEv9CZ4I,GAAApN,WAAAoN,GACAA,EAAAsF,MAAA,MAAAzS,EAAA,KAAAA,EAAAkJ,GFs9CmBD,EAAYtE,OAAO,SEr9CtCwI,EFu9CU,KAAK,IACL,IAAK,MACH,MAAOlE,GAAY1B,SAEtB+K,EAAoBjQ,QEvjD7BqK,GAAA/C,qBA+FA6F,EAAA,SAAAkD,GACA,QADAlD,GACAjF,GFg+CMzL,gBAAgBuD,KEj+CtBmN,GAEAkD,EAAA5Q,KAAAO,KAAAkI,GACAlI,KAAA2K,GAAA,GAAA2F,QACAtQ,KAAA6L,MF+/CI,MA3BAjQ,WEx+CJuR,EAAAkD,GAAAlD,EAAAnR,UAMAyK,mBAAA,SAAAoI,GAIA,IAHA,GAAAvB,GAAA,GAAAjD,GAAArK,MACAuQ,EAAA1B,EAAApP,KAAA6N,EAAAA,EAAAkD,SAAA,IAAA,IAAAtO,OAAA9F,OACAsT,EAAAa,EAAArO,QACAwN,EAAA3N,MAAA,CACA,GAAA,gBAAA2N,EAAAtT,MAGA,KAAA,IAAAkF,OAAA,mEAFAoO,GAAAa,EAAArO,KAAAoL,KAZAH,EAAAnR,UAkBAqL,eAAAvD,mBAAAQ,KAAA,QAAA+C,KFs+CM,MAAOvD,oBAAmBpF,KAAK,SAAyBkI,GACtD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,SEv+CflC,MAAA2K,EF0+CU,KAAK,GACL,IAAK,MACH,MAAO/D,GAAY1B,SAEtBmC,EAAgBrH,QEjgDzBmN,GAAA5F,uBAsBA,OAAA4F,KFm/CA,IO3nDAsD,GAAA,WAEA,QAFAA,GAEArB,GAMA,GPunDI3S,gBAAgBuD,KO/nDpByQ,GAGAzQ,KAAAoP,IAAAA,EACApP,KAAA0Q,OAAA,EACA1Q,KAAA2Q,MAAA,KACA3Q,KAAA4Q,OAAA,KACA5Q,KAAA6Q,QAAA,KACA,OAAAzB,EAAAvI,GACA,KAAA,IAAAvF,OAAA,uBPuvDE,MOhwDFmP,GAAAzU,UAYA8U,MAAA,WAAA,MAAA9Q,MAAA0Q,OAZAD,EAAAzU,UAaA+U,QAAA,WAAA,OAAA/Q,KAAA0Q,OAbAD,EAAAzU,UAcAgV,OAAA,WAAA,MAAAhR,MAAA0Q,OAAA,EAAA1Q,MAdAyQ,EAAAzU,UAeAiV,QAAA,WAAA,MAAAjR,MAAA0Q,OAAA,EAAA1Q,MAfAyQ,EAAAzU,UA4CAkV,WAAA,SAAAC,GACA,GAAAC,GAAApR,KAAAoR,OACAC,EAAArR,KAAAoQ,MACAkB,EAAAtR,KAAAoQ,MAAAmB,IAGA,IAFAF,EAAAE,KAAAvR,KACAA,KAAAoQ,MAAAkB,EACA,OAAAF,EACAD,EAAAK,KAAAH,EACAA,EAAAR,QAAA,SACA,IAAAO,EAAAG,OAAAvR,KACAoR,EAAAG,KAAAF,MACA,CAAA,GAAAD,EAAAhB,QAAApQ,KAGA,KAAA,IAAAsB,OAAA,sCAFA8P,GAAAhB,MAAAiB,IAxDAZ,EAAAzU,UA6DAkG,KAAA,WACA,GAAA,OAAAlC,KAAAoQ,MAAA,CAGA,IADA,GAAAzS,GAAAqC,KAAAoQ,MACA,OAAAzS,EAAA4T,MACA5T,EAAAA,EAAA4T,IAEA,OAAA5T,GAGA,IADA,GAAA8T,GAAAzR,KACA,OAAAyR,EAAAL,QAAAK,IAAAA,EAAAL,OAAAG,MACAE,EAAAA,EAAAL,MAEA,OAAAK,GAAAL,QA1EAX,EAAAzU,UA6EA0V,YAAA,SAAAP,GACA,GAAAC,GAAApR,KAAAoR,OACAC,EAAArR,KAAAuR,KACAI,EAAA3R,KAAAuR,KAAAnB,KAGA,IAFAiB,EAAAjB,MAAApQ,KACAA,KAAAuR,KAAAI,EACA,OAAAP,EACAD,EAAAK,KAAAH,EACAA,EAAAR,QAAA,SACA,IAAAO,EAAAG,OAAAvR,KACAoR,EAAAG,KAAAF,MACA,CAAA,GAAAD,EAAAhB,QAAApQ,KAGA,KAAA,IAAAsB,OAAA,sCAFA8P,GAAAhB,MAAAiB,IAzFAZ,EAAAzU,UA8FA4V,SAAA,WAEA,MAAA5R,MAAAoR,SAAApR,KAAAoR,OAAAA,OAAAG,KACAvR,KAAAoR,OAAAA,OAAAhB,MAEApQ,KAAAoR,OAAAA,OAAAG,MPsnDEtT,aOztDFwS,IP0tDI5S,IAAK,cACLoN,IO3sDJ,WACA,MAAAjL,MAAAoR,OAAAA,UP8sDIvT,IAAK,SACLoN,IO7sDJ,WACA,MAAAjL,MAAA6Q,WPgtDIhT,IAAK,UACLoN,IO/sDJ,WACA,MAAAjL,QAAAA,KAAAoR,OAAAG,KACAvR,KAAAoR,OAAAhB,MAAApQ,KAAAoR,OAAAG,QPitDI1T,IAAK,OACLoN,IOhtDJ,WACA,MAAAjL,MAAA2Q,OPktDIkB,IO7sDJ,SAAA3C,GACA,OAAAA,IACAA,EAAA2B,QAAA7Q,MAEAA,KAAA2Q,MAAAzB,KPgtDIrR,IAAK,QACLoN,IOxtDJ,WACA,MAAAjL,MAAA4Q,QP0tDIiB,IOltDJ,SAAA3C,GACA,OAAAA,IACAA,EAAA2B,QAAA7Q,MAEAA,KAAA4Q,OAAA1B,MA1CAuB,KAwGAH,OAAA,WACA,QADAA,KP+pDI7T,gBAAgBuD,KO/pDpBsQ,GAEAtQ,KAAAwR,KAAA,KPo6DE,MOt6DFlB,GAAAtU,UAIA8V,uBAAA,SAAAC,GACA,GAAApU,GAAAqC,KAAAwR,IACA,IAAA,OAAA7T,EACA,OAAA,CAEA,QACA,IAAA,OAAAoU,GAAAA,EAAApU,EAAAyR,IAAAvI,KAAA,OAAAlJ,EAAA4T,KAGA5T,EAAAA,EAAA4T,SACA,CAAA,KAAA5T,EAAAyR,IAAAvI,GAAAkL,GAUA,MAAApU,EARA,IAAA,OAAAA,EAAAyS,MAKA,MAAAzS,GAAAuE,MAJAvE,GAAAA,EAAAyS,QAjBAE,EAAAtU,UA6BA+T,QAAA,SAAAgC,EAAAC,EAAAC,GAEA,IADA,GAAAtU,GAAAqC,KAAA8R,uBAAAC,GACA,OAAApU,IAAA,OAAAqU,GAAArU,EAAAyR,IAAAvI,IAAAmL,IACAC,EAAAtU,EAAAyR,KACAzR,EAAAA,EAAAuE,MAEA,QAAA,GAnCAoO,EAAAtU,UAqCAqT,KAAA,SAAAxI,GACA,MAAA7G,MAAAmP,SAAAtI,GAAAuI,KAtCAkB,EAAAtU,UAwCAmT,SAAA,SAAAtI,GACA,GAAAlJ,GAAAqC,KAAAwR,IACA,IAAA,OAAA7T,EACA,OAAA,CAEA,QAAA,CACA,GAAA,OAAAA,EACA,OAAA,CAEA,IAAAkJ,EAAAlJ,EAAAyR,IAAAvI,GACAlJ,EAAAA,EAAA4T,SACA,CAAA,KAAA5T,EAAAyR,IAAAvI,GAAAA,GAGA,MAAAlJ,EAFAA,GAAAA,EAAAyS,SApDAE,EAAAtU,UAAA,UA2DA,SAAA6K,GACA,GAAAqL,GAAAlS,KAAAmP,SAAAtI,EACA,IAAA,OAAAqL,EAAAX,MAAA,OAAAW,EAAA9B,MAAA,CAKA,IAFA,GAAAzS,GAAAuU,EAAAX,KAEA,OAAA5T,EAAAyS,OACAzS,EAAAA,EAAAyS,KAGA8B,GAAA9C,IAAAzR,EAAAyR,IACA8C,EAAAvU,EAIA,GAAAwU,GACAC,EAAAF,EAAAX,MAAAW,EAAA9B,KAUA,IATA,OAAAgC,GACAD,GAAA,EACAC,EAAA,GAAA3B,IAAA5J,GAAA,IACAuL,EAAAnB,UACAiB,EAAA9B,MAAAgC,GAEAD,GAAA,EAGA,OAAAD,EAAAd,OAQA,YAPAe,EAKAnS,KAAAwR,KAAA,MAJAxR,KAAAwR,KAAAY,EACAA,EAAAnB,UACAmB,EAAAvB,QAAA,MAKA,IAAAqB,EAAAd,OAAAG,OAAAW,EACAA,EAAAd,OAAAG,KAAAa,MACA,CAAA,GAAAF,EAAAd,OAAAhB,QAAA8B,EAGA,KAAA,IAAA5Q,OAAA,cAFA4Q,GAAAd,OAAAhB,MAAAgC,EAYA,GARAF,EAAAnB,YACAqB,EAAAtB,QACAsB,EAAAnB,UAEAjR,KAAAqS,WAAAD,IAGApS,KAAAwR,KAAAP,UACAkB,EACA,GAAAC,EAAAhB,OAAAG,OAAAa,EACAA,EAAAhB,OAAAG,KAAA,SACA,CAAA,GAAAa,EAAAhB,OAAAhB,QAAAgC,EAGA,KAAA,IAAA9Q,OAAA,gBAFA8Q,GAAAhB,OAAAhB,MAAA,OAlHAE,EAAAtU,UAwHAqW,WAAA,SAAAnD,GACA,QAAA6B,GAAAuB,GACA,MAAA,QAAAA,EAAAA,EAAAvB,WAAA,EAEA,QAAAD,GAAAwB,GACA,MAAA,QAAAA,EAAAA,EAAAxB,SAAA,EAEA,GAAA,OAAA5B,EAAAkC,OAAA,CAOA,GAAAmB,GAAArD,EAAAqD,OACA,IAAAzB,EAAAyB,GAAA,CAIA,GAFArD,EAAAkC,OAAAJ,SACAuB,EAAAtB,UACA/B,IAAAA,EAAAkC,OAAAG,KACArC,EAAAkC,OAAAF,WAAAlR,UACA,CAAA,GAAAkP,IAAAA,EAAAkC,OAAAhB,MAGA,KAAA,IAAA9O,OAAA,gBAFA4N,GAAAkC,OAAAM,YAAA1R,MAIAuS,EAAArD,EAAAqD,QAGArD,EAAAkC,OAAAL,WACAwB,EAAAxB,WACAA,EAAAwB,EAAAhB,OACAR,EAAAwB,EAAAnC,QAEAmC,EAAAvB,SACAhR,KAAAqS,WAAAnD,EAAAkC,SACAlC,EAAAkC,OAAAN,SACAyB,EAAAxB,WACAA,EAAAwB,EAAAhB,OACAR,EAAAwB,EAAAnC,QAEAmC,EAAAvB,SACA9B,EAAAkC,OAAAH,YAEA/B,IAAAA,EAAAkC,OAAAG,MACAgB,EAAAxB,WACAD,EAAAyB,EAAAhB,OACAR,EAAAwB,EAAAnC,QAEAmC,EAAAvB,SACAuB,EAAAhB,KAAAN,UACAsB,EAAAb,YAAA1R,MACAuS,EAAArD,EAAAqD,SACArD,IAAAA,EAAAkC,OAAAhB,OACAmC,EAAAxB,WACAD,EAAAyB,EAAAnC,QACAW,EAAAwB,EAAAhB,QAEAgB,EAAAvB,SACAuB,EAAAnC,MAAAa,UACAsB,EAAArB,WAAAlR,MACAuS,EAAArD,EAAAqD,SAEAA,EAAA7B,MAAAxB,EAAAkC,OAAAV,MACAxB,EAAAkC,OAAAH,UACA/B,IAAAA,EAAAkC,OAAAG,MACAgB,EAAAnC,MAAAa,UACA/B,EAAAkC,OAAAF,WAAAlR,QAEAuS,EAAAhB,KAAAN,UACA/B,EAAAkC,OAAAM,YAAA1R,UA9LAsQ,EAAAtU,UAkMAwW,IAAA,SAAAC,GACA,GAAAH,GAAA,GAAA7B,GAAAgC,EACA,IAAA,OAAAzS,KAAAwR,KAAA,CAEA,IADA,GAAAC,GAAAzR,KAAAwR,OAEA,GAAAc,EAAAlD,IAAAvI,GAAA4K,EAAArC,IAAAvI,GAAA,CACA,GAAA,OAAA4K,EAAAF,KAAA,CACAE,EAAAF,KAAAe,CACA,OAEAb,EAAAA,EAAAF,SAEA,CAAA,KAAAE,EAAArC,IAAAvI,GAAAyL,EAAAlD,IAAAvI,IAQA,OAAA,CAPA,IAAA,OAAA4K,EAAArB,MAAA,CACAqB,EAAArB,MAAAkC,CACA,OAEAb,EAAAA,EAAArB,MAMApQ,KAAA0S,WAAAJ,OAEAtS,MAAAwR,KAAAc,CAEAtS,MAAAwR,KAAAP,WA7NAX,EAAAtU,UA+NA0W,WAAA,SAAAxD,GACA,GAAA,OAAAA,EAAAkC,OAEA,WADAlC,GAAA+B,SAEA,KAAA/B,EAAAkC,OAAAL,UAAA,CAGA,GAAA4B,GAAAzD,EAAA0C,UACA,QAAAe,GAAAA,EAAA7B,SAEA5B,EAAAkC,OAAAH,UACA0B,EAAA1B,UACA/B,EAAA0D,YAAA5B,SACAhR,KAAA0S,WAAAxD,EAAA0D,eASA1D,IAAAA,EAAAkC,OAAAhB,OACAlB,EAAAkC,SAAAlC,EAAA0D,YAAArB,MACArC,EAAAkC,OAAAF,WAAAlR,MAIAkP,EAAAA,EAAAqC,MACArC,IAAAA,EAAAkC,OAAAG,MACArC,EAAAkC,SAAAlC,EAAA0D,YAAAxC,QACAlB,EAAAkC,OAAAM,YAAA1R,MAEAkP,EAAAA,EAAAkB,OAKAlB,EAAAkC,OAAAH,UACA/B,EAAA0D,YAAA5B,SACA9B,IAAAA,EAAAkC,OAAAG,KAEArC,EAAA0D,YAAAlB,YAAA1R,MAGAkP,EAAA0D,YAAA1B,WAAAlR,SA5QAsQ,MCvGA,WRihEE,GQ/gEFuC,GAAA,WACA,QADAA,GACAC,GRghEMrW,gBAAgBuD,KQjhEtB6S,GAEA7S,KAAA8S,OAAAA,ERmoEI,MQroEJD,GAAA7W,UAIAoT,IAAAtL,mBAAAQ,KAAA,QAAA8K,GAAA2D,GRmhEM,GQlhENzF,GACA3G,EAEAhJ,CRghEM,OAAOmG,oBAAmBpF,KAAK,SAAckI,GAC3C,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAEH,MADA0E,GAAY1E,KAAO,EQthE/B,aRyhEU,KAAK,GAEH,MQ3hEZoL,GAAA1G,EAAAxE,KR2hEmBwE,EAAYX,cQ1hE/BqH,EAAAtC,aAAAhL,KAAA8S,QAAA,KAAA,ER4hEU,KAAK,GAGH,GQ/hEZnM,EAAAC,EAAAyE,GACA,MAAA0H,EAAA,CR+hEcnM,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYX,cQliE/BI,EAAAmB,OAAAqL,KAAAG,IAAAvT,KAAA6N,EAAA3G,EAAAoM,GAAA,KAAA,ERoiEU,KAAK,GAEH,MQtiEZpV,GAAAiJ,EAAAsG,GRsiEmBtG,EAAYtE,OAAO,SQriEtC3E,EAAAA,EAAAsV,QAAA,KRuiEU,KAAK,IACH,MAAOrM,GAAYX,cQtiE/BI,EAAAmB,OAAAqL,KAAA9L,IAAAtH,KAAA6N,EAAA3G,EAAA,SAAA/I,GAAA,MAAAA,KAAA,KAAA,GR0iEU,KAAK,IACH,MAAOgJ,GAAYtE,OAAO,SAAUsE,EAAYuJ,GAElD,KAAK,IACL,IAAK,MACH,MAAOvJ,GAAY1B,SAEtBkK,EAAKpP,QQ5jEd6S,EAAA7W,UAcAkX,OAAApP,mBAAAQ,KAAA,QAAA4O,GAAAH,EAAAI,GRijEM,GQ1iEN7F,GACA3G,CR0iEM,OAAO7C,oBAAmBpF,KAAK,SAAiBkI,GAC9C,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GACH,GQpjEZ,gBAAA6Q,GAAA,CRqjEcnM,EAAY1E,KAAO,CACnB,OAGF,KQxjEZ,IAAAZ,OAAA,wBR0jEU,KAAK,GACH,GQzjEZ6R,YAAAjH,OAAA,CR0jEctF,EAAY1E,KAAO,CACnB,OAGF,KQ7jEZ,IAAAZ,OAAA,wCR+jEU,KAAK,GAEH,MADAsF,GAAY1E,KAAO,EQ9jE/B,aRikEU,KAAK,GAEH,MQnkEZoL,GAAA1G,EAAAxE,KRmkEmBwE,EAAYX,cQlkE/BqH,EAAAtC,aAAAhL,KAAA8S,QAAA,KAAA,ERokEU,KAAK,GAEH,MQtkEZnM,GAAAC,EAAAyE,GRskEmBzE,EAAYX,cQrkE/BI,EAAAmB,OAAAqL,KAAAK,OAAAzT,KAAA6N,EAAA3G,EAAAoM,EAAAI,GAAA,KAAA,GRukEU,KAAK,IACL,IAAK,MACH,MAAOvM,GAAY1B,SAEtBgO,EAAQlT,QQlmEjB6S,EAAA7W,UAAA,UAAA8H,mBAAAQ,KAyBA,QAAA8O,GAAAL,GR4kEM,GQxkENzF,GACA3G,CRwkEM,OAAO7C,oBAAmBpF,KAAK,SAAkBkI,GAC/C,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GACH,GQ/kEZ,gBAAA6Q,GAAA,CRglEcnM,EAAY1E,KAAO,CACnB,OAGF,KQnlEZ,IAAAZ,OAAA,wBRqlEU,KAAK,GAEH,MADAsF,GAAY1E,KAAO,EQplE/B,aRulEU,KAAK,GAEH,MQzlEZoL,GAAA1G,EAAAxE,KRylEmBwE,EAAYX,cQxlE/BqH,EAAAtC,aAAAhL,KAAA8S,QAAA,KAAA,ER0lEU,KAAK,GAEH,MQ5lEZnM,GAAAC,EAAAyE,GR4lEmBzE,EAAYX,cQ3lE/BI,EAAAmB,OAAAqL,KAAA,UAAApT,KAAA6N,EAAA3G,EAAAoM,GAAA,KAAA,ER6lEU,KAAK,GACL,IAAK,MACH,MAAOnM,GAAY1B,SAEtBkO,EAASpT,QQhoElB6S,EAAA7W,UAiCAqX,SAAA,aAjCAR,IAqCAxM,GAAAwM,KAAA/O,mBAAAQ,KAAA,QAAAgP,KRomEI,GQnmEJhG,GACA3G,CRmmEI,OAAO7C,oBAAmBpF,KAAK,SAAgB6U,GAC7C,OAAU,OAAQA,EAAYxO,KAAOwO,EAAYrR,MAC/C,IAAK,GAEH,MADAqR,GAAYrR,KAAO,EQvmE7B,aR0mEQ,KAAK,GAEH,MQ5mEVoL,GAAAiG,EAAAnR,KR4mEiBmR,EAAYtN,cQ3mE7BI,EAAAmB,OAAAqL,KAAA3W,OAAAuD,KAAA6N,GAAA9N,KAAA,SAAA,KAAA,ER6mEQ,KAAK,GAEH,MQ/mEVmH,GAAA4M,EAAAlI,GR+mEiBkI,EAAYjR,OAAO,SQ9mEpCgL,EAAArG,WAAAN,GRgnEQ,KAAK,GACL,IAAK,MACH,MAAO4M,GAAYrO,SQrnE7BoO,EAAAtT,QAKAqG,EAAAwM,KAAAW,OAAAX,KC7CA,WTqqEE,GSpqEFY,GAAA,WACA,QADAA,GACAX,GTqqEMrW,gBAAgBuD,KStqEtByT,GAEAzT,KAAA8S,OAAAA,ETkxEI,MSpxEJW,GAAAzX,UAIAoT,IAAAtL,mBAAAQ,KAAA,QAAA8K,KTwqEM,GSvqEN9B,GACA3G,EAEA+I,EACA7R,EACA4U,ETuqEUiB,EAAWC,SACf,OAAO7P,oBAAmBpF,KAAK,SAAckI,GAC3C,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAEH,MADA0E,GAAY1E,KAAO,EShrE/B,aTmrEU,KAAK,GAEH,MSrrEZoL,GAAA1G,EAAAxE,KTqrEmBwE,EAAYX,cSprE/BqH,EAAAtC,aAAAhL,KAAA8S,QAAA,KAAA,ETsrEU,KAAK,GAGH,GSzrEZnM,EAAAC,EAAAyE,GACA,IAAAqI,EAAAzW,OAAA,CTyrEc2J,EAAY1E,KAAO,EACnB,OSzrEdwN,KT6rEY9I,EAAYsG,GAAKpJ,mBAAmBa,KS5rEhDgC,EAAAI,IT8rEU,KAAK,GACH,IAAKH,EAAYuJ,GAAKvJ,EAAYsG,MAAMnL,KAAM,CAC5C6E,EAAY1E,KAAO,EACnB,OAIF,MSrsEZrE,GAAA+I,EAAAuJ,GAAA/T,MTqsEmBwK,EAAYX,cSpsE/BI,EAAAmB,OAAAiM,IAAAxI,IAAAxL,KAAA6N,EAAA3G,EAAA9I,GAAA,KAAA,GTssEU,KAAK,IStsEf4U,EAAA7L,EAAAsJ,GACA,MAAAuC,IACA/C,EAAA7R,GAAA4U,GT0sEY7L,EAAY1E,KAAO,CACnB,MAEF,KAAK,IACH,MAAO0E,GAAYtE,OAAO,SS3sEtCoN,ET6sEU,KAAK,IACH,GS7sEZ,IAAAgE,EAAAzW,OAAA,CT8sEc2J,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYX,cSjtE/BI,EAAAmB,OAAAiM,IAAAxI,IAAAxL,KAAA6N,EAAA3G,EAAA+M,EAAA,IAAA,KAAA,GTmtEU,KAAK,IACH,MAAO9M,GAAYtE,OAAO,SAAUsE,EAAYgN,GAElD,KAAK,IACH,GSttEZ,IAAAF,EAAAzW,OAAA,CTutEc2J,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYX,cS1tE/BI,EAAAmB,OAAAiM,IAAA5B,IAAApS,KAAA6N,EAAA3G,EAAA+M,EAAA,GAAAA,EAAA,IAAA,KAAA,GT4tEU,KAAK,IACH,MAAO9M,GAAYtE,OAAO,SAAUsE,EAAYiN,GAElD,KAAK,IACH,KS9tEZ,IAAAvS,OAAA,uBTguEU,KAAK,IACL,IAAK,MACH,MAAOsF,GAAY1B,SAEtBkK,EAAKpP,QSzvEdyT,EAAAzX,UAAA,UAAA8H,mBAAAQ,KAwBA,QAAA8O,GAAAvV,GTouEM,GSnuENyP,GACA3G,CTmuEM,OAAO7C,oBAAmBpF,KAAK,SAAkBkI,GAC/C,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAEH,MADA0E,GAAY1E,KAAO,ESvuE/B,aT0uEU,KAAK,GAEH,MS5uEZoL,GAAA1G,EAAAxE,KT4uEmBwE,EAAYX,cS3uE/BqH,EAAAtC,aAAAhL,KAAA8S,QAAA,KAAA,ET6uEU,KAAK,GAEH,MS/uEZnM,GAAAC,EAAAyE,GT+uEmBzE,EAAYX,cS9uE/BI,EAAAmB,OAAAiM,IAAA,UAAAhU,KAAA6N,EAAA3G,EAAA9I,GAAA,KAAA,ETgvEU,KAAK,GACL,IAAK,MACH,MAAO+I,GAAY1B,SAEtBkO,EAASpT,QS/wElByT,EAAAzX,UA6BAqX,SAAA,aA7BAI,IAiCApN,GAAAoN,IAAA3P,mBAAAQ,KAAA,QAAAwP,KTuvEI,GStvEJxG,GAEA3G,CTqvEI,OAAO7C,oBAAmBpF,KAAK,SAAe6U,GAC5C,OAAU,OAAQA,EAAYxO,KAAOwO,EAAYrR,MAC/C,IAAK,GAEH,MADAqR,GAAYrR,KAAO,ES1vE7B,aT6vEQ,KAAK,GAGH,GShwEVoL,EAAAiG,EAAAnR,OACApC,eAAAqG,GAAAkB,wBAAA,CTgwEYgM,EAAYrR,KAAO,CACnB,OAGF,MAAOqR,GAAYtN,cSnwE7BI,EAAAmB,OAAAT,IAAA7K,OAAAuD,KAAA6N,GAAA9N,KAAA,QAAA,KAAA,ETqwEQ,KAAK,GAEH,MSvwEVmH,GAAA4M,EAAAlI,GTuwEiBkI,EAAYjR,OAAO,SStwEpCgL,EAAArG,WAAAN,GTwwEQ,KAAK,GACH,KSvwEV,IAAArF,OAAA,uCTywEQ,KAAK,IACL,IAAK,MACH,MAAOiS,GAAYrO,SSjxE7B4O,EAAA9T,QASAqG,EAAAoN,IAAAD,OAAAC,IT+wEA,IU1zEA1K,mBAAA,WAMA,QANAA,GAMAb,EAAA5B,GAKA,GVwzEI7J,gBAAgBuD,KUn0EpB+I,GAOA/I,KAAAkI,EAAAA,EACA,MAAA5B,IACAA,MAEA,MAAAA,EAAA8B,MAAA,WAAA9B,EAAA8B,KACApI,KAAAoI,KAAA,aACA,CAAA,GAAA,UAAA9B,EAAA8B,KAGA,KAAA,IAAA9G,OAAA,2CAFAtB,MAAAoI,KAAA,QAIApI,KAAAoI,KAAA9B,EAAA8B,KACApI,KAAA+T,eACA/T,KAAAgU,sBACAhU,KAAAiU,uBACAjU,KAAAkU,kBAAA,KACAlU,KAAAmU,kBACAnU,KAAAqI,wBAAA/B,EAAA+B,2BAAA,GAAA,GAAA,EACArI,KAAAoU,MAAA9N,EAAA8N,OAAA,GAAA,EVyrFE,MUltFFrL,GAAA/M,UA2BAsM,UAAA,SAAAnL,GACA6C,KAAA7C,OAAAA,EACA6C,KAAAkI,EAAA3B,GAAA+B,UAAAnL,IA7BA4L,EAAA/M,UA+BAqY,YAAA,SAAApC,GACAjS,KAAAgU,mBAAA9W,KAAA+U,IAhCAlJ,EAAA/M,UAkCA0L,SAAA,SAAAnK,SACAyC,MAAA+T,YAAAxW,GACAA,IAAAyC,KAAAkU,oBACAlU,KAAAkU,kBAAA,KACAlU,KAAAsU,qBAEA,KAAA,GAAAC,GAAAvU,KAAAgU,mBAAAQ,EAAAtI,MAAAC,QAAAoI,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAA7Q,OAAAhC,cAAA,CVk0EM,GAAIgT,EAEJ,IAAIF,EAAW,CACb,GAAIC,GAAOF,EAAWtX,OAAQ,KAC9ByX,GAAQH,EAAWE,SACd,CAEL,GADAA,EAAMF,EAAWrS,OACbuS,EAAI1S,KAAM,KACd2S,GAAQD,EAAIrY,MAGd,GU70EN6V,GAAAyC,CACAzC,IACA0C,OAAA,WACApX,KAAAA,MA3CAwL,EAAA/M,UA+CA8L,WAAA,SAAAvK,EAAA6K,GACA,GAAA,MAAAA,EACA,KAAA,IAAA9G,OAAA,gDAEA,IAAA,MAAAtB,KAAA+T,YAAAxW,GACA,KAAA,IAAA+D,OAAA,4BAEAtB,MAAA+T,YAAAxW,IACAqX,UAAA,EACAxM,KAAAA,EAEA,KAAA,GAAAyM,GAAA7U,KAAAgU,mBAAAc,EAAA5I,MAAAC,QAAA0I,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAAnR,OAAAhC,cAAA,CVg1EM,GAAIsT,EAEJ,IAAIF,EAAW,CACb,GAAIC,GAAOF,EAAW5X,OAAQ,KAC9B+X,GAAQH,EAAWE,SACd,CAEL,GADAA,EAAMF,EAAW3S,OACb6S,EAAIhT,KAAM,KACdiT,GAAQD,EAAI3Y,MAGd,GU31EN6V,GAAA+C,CACA/C,IACA0C,OAAA,aACApX,KAAAA,EACA6K,KAAAA,IAGA,MAAApI,KAAAkU,mBACAlU,KAAAsU,sBAlEAvL,EAAA/M,UAuEAiZ,WAAA,SAAAhD,GACAjS,KAAA4U,YAAA,EACA3C,IAEAjS,KAAAiU,oBAAA/W,KAAA+U,IA3EAlJ,EAAA/M,UAgFAsY,mBAAA,WACA,GAAA,MAAAtU,KAAAkU,mBAAAlU,KAAA+T,YAAA/T,KAAAkU,mBAAAU,YAAA,EACA,KAAA,IAAAtT,OAAA,qCAGA,IAAA4T,GAAA,IACA,KAAA,GAAApL,KAAA9J,MAAA+T,YAEA,GADAmB,EAAAlV,KAAA+T,YAAAjK,IACAoL,EAAAN,SACA,KAGA,IAAA,MAAAM,EAAA,CACA,GAAAC,GAAAnV,IACAA,MAAAkI,EAAA3B,GAAAE,mBAAA3C,mBAAAQ,KAAA,QAAAoC,KVi2EQ,MAAO5C,oBAAmBpF,KAAK,SAAqBkI,GAClD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GAIH,MUt2EdiT,GAAAjB,kBAAApK,EVo2EclD,EAAYyE,GUn2E1B8J,EVo2EcvO,EAAYsG,GUp2E1BpD,EVq2EqBlD,EAAYX,cUn2EjCjG,KAAAuL,iBAAA,KAAA,EVq2EY,KAAK,GACH3E,EAAYsJ,GAAKtJ,EAAYuJ,GAC7BvJ,EAAYgN,IUx2E1BpU,KAAA,cACAgM,YAAA5E,EAAAsJ,IV22EctJ,EAAYyE,GU72E1B9C,KAAA9I,KAAAmH,EAAAyE,GAAAzE,EAAAsG,GAAAtG,EAAAgN,GV+2EY,KAAK,GACL,IAAK,MACH,MAAOhN,GAAY1B,SAEtBwB,EAAY1G,SU52EvB,IAAAA,KAAA4U,SAAA,CACA5U,KAAA4U,UAAA,CACA,KAAA,GAAAQ,GAAApV,KAAAiU,oBAAAoB,EAAAnJ,MAAAC,QAAAiJ,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAA1R,OAAAhC,cAAA,CVi3EQ,GAAI6T,EAEJ,IAAIF,EAAW,CACb,GAAIC,GAAOF,EAAWnY,OAAQ,KAC9BsY,GAAQH,EAAWE,SACd,CAEL,GADAA,EAAMF,EAAWlT,OACboT,EAAIvT,KAAM,KACdwT,GAAQD,EAAIlZ,MAGd,GU53ER6V,GAAAsD,CACAtD,KAEAjS,KAAAiU,oBAAA,KAEA,OAAA,GA9GAlL,EAAA/M,UAiHAyB,eAAA,SAAA+X,EAAAnY,GVg4EI,GAAIoY,GAAQzV,IU53EhB,IAHAA,KAAAoU,OACAsB,QAAAC,IAAAH,EAAA,OAAAxV,KAAA7C,OAAA,KAAAsL,KAAAE,UAAAtL,IAEA,gBAAAA,EAAAmC,MVk4EM,WUh4EN,GAAA2V,GAAAM,CACAA,GAAAvN,EAAA3B,GAAAE,mBAAA3C,mBAAAQ,KAAA,QAAAsR,KVm4EU,GUl4EVtJ,GACA7B,CVk4EU,OAAO3G,oBAAmBpF,KAAK,SAAqBgQ,GAClD,OAAU,OAAQA,EAAY3J,KAAO2J,EAAYxM,MAC/C,IAAK,GACH,MAAOwM,GAAYzI,cUt4EnCjG,KAAAoM,cAAA/O,EAAAmO,aAAA,KAAA,EVw4Ec,KAAK,GAEH,MU14EhBc,GAAAoC,EAAArD,GV04EuBqD,EAAYzI,cUz4EnCjG,KAAAuL,iBAAA,KAAA,EV24Ec,KAAK,GU34EnBd,EAAAiE,EAAAxB,GACAiI,EAAA5M,KAAAiN,GACAhW,KAAA,cACAmL,GAAA2B,EACAd,YAAAf,IAEAzK,KAAAqI,0BACA8M,EAAAhB,eAAAjX,KAAAsY,GACAtL,WAAA,WACAiL,EAAAhB,eAAAgB,EAAAhB,eAAA0B,OAAA,SAAAC,GACA,MAAAA,KAAAN,IAEAL,EAAA5M,KAAAiN,GACAhW,KAAA,eAEA2V,EAAAY,uBVg5Ec,KAAK,GACL,IAAK,MACH,MAAOrH,GAAYxJ,SAEtB0Q,EAAY5V,gBUj5EzB,IAAA,gBAAA3C,EAAAmC,MVq5EM,WUp5ENiW,EAAAvN,EAAA3B,GAAAyP,MAAA3Y,EAAAsN,GACA,IAAAwK,GAAAM,CACAA,GAAAvN,EAAA3B,GAAAE,mBAAA3C,mBAAAQ,KAAA,QAAAsR,KVs5EU,GUr5EVtJ,EVs5EU,OAAOxI,oBAAmBpF,KAAK,SAAqBgQ;AAClD,OAAU,OAAQA,EAAY3J,KAAO2J,EAAYxM,MAC/C,IAAK,GACH,MAAOwM,GAAYzI,cUz5EnCjG,KAAAoM,cAAA/O,EAAAmO,aAAA,KAAA,EV25Ec,KAAK,GU35EnBc,EAAAoC,EAAArD,GACAiB,EAAArP,OAAA,GACAkY,EAAAvM,WACApJ,KAAA,SACA8M,IAAAA,GVi6Ec,KAAK,GACL,IAAK,MACH,MAAOoC,GAAYxJ,SAEtB0Q,EAAY5V,gBUj6EzB,IAAA,cAAA3C,EAAAmC,KACAQ,KAAA+T,YAAAyB,GAAAZ,UAAA,EACA5U,KAAAsU,yBACA,IAAA,WAAAjX,EAAAmC,KAAA,CACA,GAAAQ,KAAAqI,wBACA,IAAA,GAAA4N,GAAAjW,KAAAmU,eAAA+B,EAAAhK,MAAAC,QAAA8J,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAAvS,OAAAhC,cAAA,CVq6EU,GAAI0U,EAEJ,IAAIF,EAAW,CACb,GAAIC,GAAOF,EAAWhZ,OAAQ,KAC9BmZ,GAAQH,EAAWE,SACd,CAEL,GADAA,EAAMF,EAAW/T,OACbiU,EAAIpU,KAAM,KACdqU,GAAQD,EAAI/Z,MAGd,GUh7EVia,GAAAD,CACApW,MAAAuI,KAAA8N,EAAAhZ,GAGA2C,KAAAkI,EAAA3B,GAAAyP,MAAA3Y,EAAAiP,OAjKAvD,EAAA/M,UA+KAsa,oBAAA,SAAAjZ,GACA,QAAAkZ,GAAAC,GVo7EM,GAAIC,IAAS,CAEbC,GAAW,KAAOD,GUt7ExB,CVu7EQ,GUv7ERnE,GAAAkE,CVw7EQG,GAAaC,EAAYC,EAAMF,EAAaG,EUv7EpD5H,EAAAvN,OVw7EQ8U,GAAS,CUx7EjB,KAAA,GAAAE,GAAArE,EAAAyE,SAAAH,EAAA1K,MAAAC,QAAAwK,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAAjT,OAAAhC,cAAA,CV27EU,GAAIoV,EAEJ,IAAIF,EAAW,CACb,GAAIC,GAAOF,EAAW1Z,OAAQ,KAC9B6Z,GAAQH,EAAWE,SACd,CAEL,GADAA,EAAMF,EAAWzU,OACb2U,EAAI9U,KAAM,KACd+U,GAAQD,EAAIza,MAGd,GUt8EV8S,GAAA4H,CACA,IAAA,SAAA5H,EAAA8H,aAAA,WAAA,CVw8EYR,EUv8EZtH,EVw8EYuH,GAAS,CACT,SAASC,GUv8ErB,MAAAO,GAAA/H,KAIA,QAAA+H,GAAA3E,GACA,GAAA4E,KACA,KAAA,GAAAC,KAAA7E,GAAA8E,MAAA,CACA,GAAAhb,GAAAkW,EAAA8E,MAAAD,GACAE,EAAAC,SAAAlb,EAEA8a,GAAAC,GADA5T,MAAA8T,IAAA,GAAAA,IAAAjb,EACAA,EAEAib,EAGA,IAAA,GAAAnI,KAAAoD,GAAAyE,SAAA,CACA,GAAA1S,GAAA6K,EAAA7K,IAEA6S,GAAA7S,GADA,SAAA6K,EAAA8H,aAAA,WACAT,EAAArH,GAEA+H,EAAA/H,GAGA,MAAAgI,GAEAD,EAAA5Z,IA9MA0L,EAAA/M,UAwNAub,mBAAA,SAAAC,EAAAlY,GAEA,QAAAmY,GAAApa,EAAA6Z,GACA,IAAA,GAAA7S,KAAA6S,GAAA,CACA,GAAA9a,GAAA8a,EAAA7S,EACA,OAAAA,IAEAjI,EAAAD,cAAAF,OACAwb,EAAApa,EAAAO,EAAAyG,GAAAjI,GACAA,EAAAD,cAAA+P,MACAwL,EAAAra,EAAAO,EAAAyG,GAAAjI,GAEAiB,EAAAsa,aAAAtT,EAAAjI,KAIA,QAAAsb,GAAAra,EAAAua,GACAva,EAAAsa,aAAA,UAAA,OACA,KAAA,GAAAE,GAAAD,EAAAE,EAAA5L,MAAAC,QAAA0L,GAAAE,EAAA,EAAAF,EAAAC,EAAAD,EAAAA,EAAAnU,OAAAhC,cAAA,CV28EQ,GAAIsW,EAEJ,IAAIF,EAAY,CACd,GAAIC,GAAQF,EAAY5a,OAAQ,KAChC+a,GAASH,EAAYE,SAChB,CAEL,GADAA,EAAOF,EAAY3V,OACf6V,EAAKhW,KAAM,KACfiW,GAASD,EAAK3b,MAGhB,GUt9ERiS,GAAA2J,CACA3J,GAAAlS,cAAAF,OACAwb,EAAApa,EAAAO,EAAA,iBAAAyQ,GAEAqJ,EAAAra,EAAAO,EAAA,iBAAAyQ,IAIA,GAAA/O,EAAAnD,cAAAF,OACAwb,EAAAD,EAAA5Z,EAAA,KAAAqa,MAAA,oCAAA3Y,OACA,CAAA,GAAAA,EAAAnD,cAAA+P,MAGA,KAAA,IAAA5K,OAAA,4BAFAoW,GAAAF,EAAA5Z,EAAA,KAAAqa,MAAA,oCAAA3Y,KArPAyJ,KCAAzB,oBAAA,WACA,QADAA,GACAiD,GX0tFI9N,gBAAgBuD,KW3tFpBsH,GAEAtH,KAAAuK,MAAAA,EX+yFE,MWjzFFjD,GAAAtL,UAIAwU,QAAA1M,mBAAAQ,KAAA,QAAAkM,GAAA3J,GX6tFI,GW5tFJqR,GACA5K,EAEAxC,CX0tFI,OAAOhH,oBAAmBpF,KAAK,SAAkB6U,GAC/C,OAAU,OAAQA,EAAYxO,KAAOwO,EAAYrR,MAC/C,IAAK,GAIH,GWnuFVgW,EAAAzP,KAAAE,UAAA9B,GACAyG,EAAAtN,KAAAuK,MAAA4N,iBAAAD,GACA,MAAA5K,EAAA,CXkuFYiG,EAAYrR,KAAO,CACnB,OAGF,MAAOqR,GAAYtN,cWruF7BjG,KAAAgL,aAAAnE,GAAA,KAAA,EXuuFQ,KAAK,GWvuFbiE,EAAAyI,EAAAlI,GACA,MAAAP,IACAwC,EAAA,GAAAjH,GAAAyE,EAAAtL,MAAAgU,OAAA1I,EAAAjE,IACA7G,KAAAuK,MAAA4N,iBAAAD,GAAA5K,EX4uFQ,KAAK,GACH,MAAOiG,GAAYjR,OAAO,SW1uFpCgL,EX4uFQ,KAAK,GACL,IAAK,MACH,MAAOiG,GAAYrO,SAEtBsL,EAASxQ,QW9vFhBsH,EAAAtL,UAgBAiL,WAAA,SAAAN,GACA,GAAAuR,GAAAzP,KAAAE,UAAAhC,EAAAE,IACAyG,EAAA,GAAAjH,GAAAM,EAAAnH,MAAAgU,OAAA7M,EAAAE,GAEA,OADA7G,MAAAuK,MAAA4N,iBAAAD,GAAA5K,EACAA,GApBAhG,EAAAtL,UAuBAgL,aAAAlD,mBAAAQ,KAAA,QAAA0C,GAAA8D,GXmvFI,GWlvFJ3J,EXmvFI,OAAO2C,oBAAmBpF,KAAK,SAAuB6U,GACpD,OAAU,OAAQA,EAAYxO,KAAOwO,EAAYrR,MAC/C,IAAK,GACH,MAAOqR,GAAYtN,cWtvF7BjG,KAAAoL,SAAAN,EAAAjE,GAAA,IAAA,KAAA,EXwvFQ,KAAK,GAGH,GW3vFV1F,EAAAoS,EAAAlI,GACAP,EAAAjE,GAAA,KAAA1F,EAAAmK,MAAA,CX2vFYiI,EAAYrR,KAAO,EACnB,OAIF,MW/vFVf,GAAAmK,QX+vFiBiI,EAAYtN,cW9vF7BjG,KAAAmL,SAAAhK,GAAA,KAAA,EXgwFQ,KAAK,GAGH,MWlwFVnB,MAAA2K,GAAA6H,IAAA1H,GACA9K,KAAAuK,MAAA6N,eAAAtN,GXiwFiByI,EAAYjR,OAAO,UWhwFpC,EXkwFQ,KAAK,IACH,KWlwFVwI,EAAAjE,GAAA,GAAA1F,EAAAmK,OAAA,CXmwFYiI,EAAYrR,KAAO,EACnB,OAGF,MAAOqR,GAAYjR,OAAO,UWtwFpC,EXwwFQ,KAAK,IACH,KWvwFV,IAAAhB,OAAA,mCXywFQ,KAAK,IACL,IAAK,MACH,MAAOiS,GAAYrO,SAEtB8B,EAAchH,QW/yFrBsH,KA8CAC,uBAAA,WACA,QADAA,GACAW,GXywFIzL,gBAAgBuD,KW1wFpBuH,GAEAvH,KAAAkI,EAAAA,EAEAlI,KAAAqY,iBAEArY,KAAAsY,2BAEAtY,KAAAuY,6BAAA,EAaAvY,KAAAmY,oBX+7FE,MWp9FF5Q,GAAAvL,UAuBAsM,UAAA,SAAAnL,GACA6C,KAAA7C,OAAAA,GAxBAoK,EAAAvL,UA0BAga,MAAA,SAAA1J,GACA,IAAA,GAAAzO,KAAAyO,GAAA,CACA,GAAA3O,GAAA2O,EAAAzO,GACA2a,EAAAnS,EAAAmB,OAAA7J,EAAAmJ,QAAA2R,YAAA9a,EACAqC,MAAA0Y,oBAAAF,EAAA7a,KA9BA4J,EAAAvL,UAmCA0c,oBAAA,SAAAC,EAAA7N,GACA,GAAA6N,EAAA1b,OAAA,EAAA,CACA,GAAA2b,IACA9N,GAAAA,EACA+N,QAAAF,EAAA1b,OAGA,KAAA,GAAAY,KAAA8a,GAAA,CACA,GAAAG,GAAAH,EAAA9a,GACAqa,EAAAzP,KAAAE,UAAAmQ,GACAC,EAAA/Y,KAAAqY,cAAAH,EACA,OAAAa,IACAA,KACA/Y,KAAAqY,cAAAH,GAAAa,GAEAA,EAAA7b,KAAA0b,QAGA5Y,MAAAsY,wBAAApb,MACA4N,GAAAA,GAIA,KAAA9K,KAAAuY,4BAAA,CAIAvY,KAAAuY,6BAAA,CACA,IAAAhO,GAAAvK,IAEAA,MAAAyG,mBAAA3C,mBAAAQ,KAAA,QAAAoC,KX8wFM,GW7wFNsS,GAGAC,EAgBApb,EAEAF,EARAua,EACAa,EACAlS,EAKA+R,CX0vFM,OAAO9U,oBAAmBpF,KAAK,SAAqBkI,GAClD,OAAU,OAAQA,EAAY7B,KAAO6B,EAAY1E,MAC/C,IAAK,GWhxFf8W,EAAAzO,EAAA+N,wBACA/N,EAAA+N,2BAEAW,EAAA1O,EAAA8N,cACA9N,EAAA8N,iBAEA9N,EAAAgO,6BAAA,EXqxFY3R,EAAYyE,GAAKvH,mBAAmBa,KWnxFhDqU,EXqxFU,KAAK,GACH,IAAKpS,EAAYsG,GAAKtG,EAAYyE,MAAMtJ,KAAM,CAC5C6E,EAAY1E,KAAO,EACnB,OAKF,MW7xFZrE,GAAA+I,EAAAsG,GAAA9Q,MACAuB,EAAAqb,EAAAnb,GAAAiN,GX4xFmBlE,EAAYX,cW3xF/BuB,OAAA7J,EAAAmJ,QAAAoS,QAAAzZ,KAAAO,KAAArC,GAAA,KAAA,GX6xFU,KAAK,IACHiJ,EAAY1E,KAAO,CACnB,MAEF,KAAK,IACH0E,EAAYsJ,GAAKpM,mBAAmBa,KW/xFhDsU,EXiyFU,KAAK,IACH,IAAKrS,EAAYgN,GAAKhN,EAAYsJ,MAAMnO,KAAM,CAC5C6E,EAAY1E,KAAO,EACnB,OAMF,MW1yFZgW,GAAAtR,EAAAgN,GAAAxX,MACA2c,EAAAE,EAAAf,GACArR,EAAA4B,KAAAC,MAAAwP,GXwyFmBtR,EAAYX,cWvyF/BjG,KAAAgL,aAAAnE,GAAA,KAAA,GXyyFU,KAAK,IAGH,GAFAD,EAAYuS,GAAKvS,EAAYiN,GW1yFzC,MX4yFkBjN,EAAYuS,GW5yF9B,CX6yFcvS,EAAY1E,KAAO,EACnB,OW7yFdqI,EAAA8N,cAAAH,GAAAa,EXizFYnS,EAAY1E,KAAO,EACnB,MAEF,KAAK,IACH0E,EAAYwS,GAAKtV,mBAAmBa,KWnzFhDoU,EXqzFU,KAAK,IACH,IAAKnS,EAAYyS,GAAKzS,EAAYwS,MAAMrX,KAAM,CAC5C6E,EAAY1E,KAAO,EACnB,OAOF,GW/zFZrE,EAAA+I,EAAAyS,GAAAjd,MACAwc,EAAAG,EAAAlb,GACAF,EAAAib,EAAA9N,GACA,MAAA8N,EAAAC,QAAA,CX6zFcjS,EAAY1E,KAAO,EACnB,OAGF,MAAO0E,GAAYX,cWh0F/BuB,OAAA7J,EAAAmJ,QAAAoS,QAAAzZ,KAAAO,KAAArC,GAAA,KAAA,GXk0FU,KAAK,IACHiJ,EAAY1E,KAAO,EACnB,MAEF,KAAK,IACH0E,EAAY1E,KAAO,EACnB,MAEF,KAAK,IACL,IAAK,MACH,MAAO0E,GAAY1B,SAEtBwB,EAAY1G,WWv6FrBuH,EAAAvL,UAiGAoc,eAAA,SAAAtN,GACA,GAAAoN,GAAAzP,KAAAE,UAAAmC,EAAAjE,IACAkS,EAAA/Y,KAAAqY,cAAAH,EAIA,UAHAlY,MAAAqY,cAAAH,GAGA,MAAAa,EACA,IAAA,GAAAlb,KAAAkb,GAAA,CACA,GAAAH,GAAAG,EAAAlb,EACA,OAAA+a,EAAAC,SACA7Y,KAAA0Y,uBAAAE,EAAA9N,IAKA,GAAAwC,GAAAtN,KAAAmY,iBAAA1P,KAAAE,UAAAmC,EAAAsG,QACA,OAAA9D,GACAA,EAAA+F,SAAAvI,IAlHAvD,EAAAvL,UAqHAsd,qBAAA,SAAAzS,EAAAoL,GACA,GAAAgH,GAAAjZ,KAAAuZ,gBAAA1S,EACA,OAAAoS,IACAjZ,KAAAuZ,gBAAA1S,GAAAoS,EAAApD,OAAA,SAAA2D,GACA,MAAAvH,KAAAuH,MAzHAjS,EAAAvL,UA6HAyd,kBAAA,SAAA5S,EAAAoL,GACA,GAAAgH,GAAAjZ,KAAAuZ,gBAAA9Q,KAAAE,UAAA9B,GACA,OAAAoS,IACAA,KACAjZ,KAAAuZ,gBAAA9Q,KAAAE,UAAA9B,IAAAoS,GAEAA,EAAA/b,KAAA+U,IAnIA1K,KRXAC,QACAkS,WACAxd,OAAA4H,mBAAAQ,KAAA,QAAApI,GAAA4O,GHs/FM,GGr/FNvN,GACA4D,CHq/FM,OAAO2C,oBAAmBpF,KAAK,SAAiB0H,GAC9C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GAEH,MG1/FZ3E,GAAAyC,KAAAuK,MAAArC,EAAA1B,UAAArJ,OH0/FmBiJ,EAAYH,cGz/F/BjG,KAAAoL,SAAA7N,GAAA,KAAA,EH2/FU,KAAK,GAIH,MG//FZ4D,GAAAiF,EAAAiF,GACAP,EAAAjE,IAAAtJ,EAAA4D,EAAAmK,OH8/FmBlF,EAAYH,cG7/F/BjG,KAAAgH,aAAA8D,GAAA,KAAA,EH+/FU,KAAK,GAGH,GAFA1E,EAAY+J,GAAK/J,EAAY8G,GAEvB9G,EAAY+J,MGlgG9B,EAAA,CHmgGc/J,EAAYlE,KAAO,CACnB,OAGF,KGtgGZ,IAAAZ,OAAA,+BHwgGU,KAAK,GAKH,MG3gGZtB,MAAAuK,MAAArC,EAAA1B,UAAAoC,WACApJ,KAAA,SACA8M,KAAA9E,OAAAsD,EAAAhE,QAAAkJ,OAAAlF,MHygGmB1E,EAAY9D,OAAO,SGvgGtCwI,EHygGU,KAAK,IACL,IAAK,MACH,MAAO1E,GAAYlB,SAEtBhJ,EAAQ8D,SG1gGjB2Z,QACAzd,OAAA4H,mBAAAQ,KAAA,QAAApI,GAAA4O,GH8gGM,GGvgGN3M,EHwgGM,OAAO2F,oBAAmBpF,KAAK,SAAiB0H,GAC9C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,GGjhGZ,MAAA4I,EAAA3M,OAAA,CHkhGciI,EAAYlE,KAAO,CACnB,OAGF,KGrhGZ,IAAAZ,OAAA,mCHuhGU,KAAK,GAEH,MGvhGZwJ,GAAAhE,OAAA,SHuhGmBV,EAAYH,cGthG/BuB,OAAAkS,UAAAxd,OAAAuD,KAAAO,KAAA8K,GAAA,KAAA,EHwhGU,KAAK,GACH,MAAO1E,GAAYH,cGvhG/BjG,KAAAgL,aAAAF,EAAA3M,QAAA,KAAA,EHyhGU,KAAK,GAIH,MG7hGZA,GAAAiI,EAAA8G,GACA/O,EAAAyb,SAAA,EH4hGmBxT,EAAYH,cG3hG/BjG,KAAA6K,aAAA1M,GAAA,KAAA,EH6hGU,KAAK,GACL,IAAK,MACH,MAAOiI,GAAYlB,SAEtBhJ,EAAQ8D,QG/hGjBgQ,OAAA,SAAAlF,GACA,MAAAA,IAEA2N,YAAA,SAAA3N,GACA,OAAAA,EAAA3M,SAEA+a,QAAApV,mBAAAQ,KAAA,QAAA4U,GAAApO,GHkiGM,GG9hGN3M,EH+hGM,OAAO2F,oBAAmBpF,KAAK,SAAkB0H,GAC/C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,MAAOkE,GAAYH,cGriG/BjG,KAAAgH,aAAA8D,GAAA,KAAA,EHuiGU,KAAK,GAGH,GAFA1E,EAAY8G,GAAK9G,EAAYiF,GAEvBjF,EAAY8G,MG1iG9B,EAAA,CH2iGc9G,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAY9D,OAAO,SAE5B,KAAK,GACH,MAAO8D,GAAYH,cG/iG/BjG,KAAAgL,aAAAF,EAAA3M,QAAA,KAAA,EHijGU,KAAK,GAIH,MGrjGZA,GAAAiI,EAAA+J,GACAhS,EAAAyb,SAAA,EHojGmBxT,EAAYH,cGnjG/BjG,KAAA6K,aAAA1M,GAAA,KAAA,EHqjGU,KAAK,GACL,IAAK,MACH,MAAOiI,GAAYlB,SAEtBgU,EAASlZ,SGtjGlB6Z,QASA3d,OAAA4H,mBAAAQ,KAAA,QAAApI,GAAA4O,GH0jGM,GG/iGNyG,GAKAnB,EAIAgB,EAOA0I,EACAC,CH+hGM,OAAOjW,oBAAmBpF,KAAK,SAAiB0H,GAC9C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,GG7jGZP,SAAAmJ,EAAAyG,MACA5P,SAAAmJ,EAAAsF,OACAzO,SAAAmJ,EAAAsG,OAAA,CH4jGchL,EAAYlE,KAAO,CACnB,OAGF,KG/jGZ,IAAAZ,OAAA,2CHikGU,KAAK,GAGH,MGlkGZwJ,GAAAkP,OAAAlP,EAAAyG,KACAzG,EAAAhE,OAAA,SHikGmBV,EAAYH,cGhkG/BuB,OAAAkS,UAAAxd,OAAAuD,KAAAO,KAAA8K,GAAA,KAAA,EHkkGU,KAAK,GACH,GGjkGZ,MAAAA,EAAAyG,KAAA,CHkkGcnL,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cGrkG/BjG,KAAAgL,aAAAF,EAAAyG,MAAA,KAAA,EHukGU,KAAK,GAIH,MG3kGZA,GAAAnL,EAAA8G,GACAqE,EAAAnB,MAAAtF,EAAAjE,GH0kGmBT,EAAYH,cGzkG/BjG,KAAA6K,aAAA0G,GAAA,KAAA,GH2kGU,KAAK,IACH,GG1kGZ,MAAAzG,EAAAsF,MAAA,CH2kGchK,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cG9kG/BjG,KAAAgL,aAAAF,EAAAsF,OAAA,KAAA,GHglGU,KAAK,IAIH,MGplGZA,GAAAhK,EAAA8J,GACAE,EAAAmB,KAAAzG,EAAAjE,GHmlGmBT,EAAYH,cGllG/BjG,KAAA6K,aAAAuF,GAAA,KAAA,GHolGU,KAAK,IACH,MAAOhK,GAAYH,cGnlG/BjG,KAAAgL,aAAAF,EAAAsG,QAAA,KAAA,GHqlGU,KAAK,IAGH,GGxlGZA,EAAAhL,EAAAyN,GACA,MAAA/I,EAAAmP,UAAA,CHwlGc7T,EAAYlE,KAAO,EACnB,OAGF,IG3lGZpE,WAAAsT,EAAArK,IAAA+D,EAAAmP,WAAAnP,EAAAsF,OAAA,CH4lGchK,EAAYlE,KAAO,EACnB,OAIF,MGhmGZkP,GAAArK,IAAA+D,EAAAmP,WAAAnP,EAAAjE,GHgmGmBT,EAAYH,cG/lG/BjG,KAAA6K,aAAAuG,GAAA,KAAA,GHimGU,KAAK,IACHhL,EAAYlE,KAAO,EACnB,MAEF,KAAK,IAIH,GGtmGZ4X,EAAAhc,WAAAsT,EAAA0I,MAAAhP,EAAAsF,OACA2J,EAAAjc,WAAAsT,EAAA2I,IAAAjP,EAAAyG,OACAuI,IAAAC,EAAA,CHqmGc3T,EAAYlE,KAAO,EACnB,OASF,MG9mGZ4X,KACA1I,EAAA0I,MAAAhP,EAAAjE,IAEAkT,IACA3I,EAAA2I,IAAAjP,EAAAjE,IH0mGmBT,EAAYH,cGxmG/BjG,KAAA6K,aAAAuG,GAAA,KAAA,GH0mGU,KAAK,IACH,MAAOhL,GAAY9D,OAAO,SGxmGtCwI,EH0mGU,KAAK,IACL,IAAK,MACH,MAAO1E,GAAYlB,SAEtBhJ,EAAQ8D,QG5mGjBgQ,OAAA,SAAAlF,GAcA,MAAAA,IAEA2N,YAAA,SAAA3N,GACA,GAAA6N,KAaA,OAZA,OAAA7N,EAAAyG,MACAoH,EAAAzb,KAAA4N,EAAAyG,MAEA,MAAAzG,EAAAsF,OACAuI,EAAAzb,KAAA4N,EAAAsF,OAEA,MAAAtF,EAAAsF,OAAA,MAAAtF,EAAAyG,MACAoH,EAAAzb,KAAA4N,EAAAsG,QAEA,MAAAtG,EAAAoP,WACAvB,EAAAzb,KAAA4N,EAAAoP,WAEAvB,GAEAwB,oBAAArW,mBAAAQ,KAAA,QAAA6V,GAAArP,GH+mGM,GG3mGNoH,GACAvU,CH2mGM,OAAOmG,oBAAmBpF,KAAK,SAA8B0H,GAC3D,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,GGlnGZ,MAAA4I,EAAAyG,KAAA,CHmnGcnL,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAY9D,OAAO,SGtnGtC,EHwnGU,KAAK,GAEH,MGxnGZ4P,GAAA,EHwnGmB9L,EAAYH,cGvnG/BjG,KAAAgL,aAAAF,EAAAyG,MAAA,KAAA,EHynGU,KAAK,GGznGf5T,EAAAyI,EAAAiF,EH4nGU,KAAK,GACH,GG5nGZvN,WAAAgN,EAAAkP,OAAArc,EAAAA,EAAAkJ,GAAA,MAAA,CH6nGcT,EAAYlE,KAAO,EACnB,OAKF,GGloGZgQ,IACA,MAAAvU,EAAA4T,KAAA,CHkoGcnL,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAY9D,OAAO,QAAS,GAErC,KAAK,IACH,MAAO8D,GAAYH,cGtoG/BjG,KAAAgL,aAAArN,EAAA4T,MAAA,KAAA,GHwoGU,KAAK,IGxoGf5T,EAAAyI,EAAA8G,EH2oGU,KAAK,IACH9G,EAAYlE,KAAO,CACnB,MAEF,KAAK,IACH,MAAOkE,GAAY9D,OAAO,SG7oGtC4P,EH+oGU,KAAK,IACL,IAAK,MACH,MAAO9L,GAAYlB,SAEtBiV,EAAqBna,QGjoG9BkZ,QAAApV,mBAAAQ,KAAA,QAAA4U,GAAApO,GHmpGM,GGlpGNhO,GACAsd,EACAzc,EACAyT,EACA0I,EAQAO,EAQAC,EAwBA/I,EACAnB,CHsmGM,OAAOtM,oBAAmBpF,KAAK,SAAkB0H,GAC/C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,MAAOkE,GAAYH,cGrpG/BuB,OAAAqS,OAAAM,oBAAA1a,KAAAO,KAAA8K,GAAA,KAAA,EHupGU,KAAK,GAGH,GG1pGZsP,EAAAtd,EAAAsJ,EAAAiF,GAMA,MAAAP,EAAAyG,KAAA,CHqpGcnL,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cGxpG/BjG,KAAAgL,aAAAF,EAAAyG,MAAA,KAAA,EH0pGU,KAAK,GAGH,GG7pGZ5T,EAAAyI,EAAA8G,GACA,MAAAvP,EAAAyS,MAAA,CH6pGchK,EAAYlE,KAAO,CACnB,OAGFkE,EAAY+J,GGjqGxB,KHkqGY/J,EAAYlE,KAAO,EACnB,MAEF,KAAK,GACH,MAAOkE,GAAYH,cGtqG/BjG,KAAAgL,aAAArN,EAAAyS,OAAA,KAAA,GHwqGU,KAAK,IACHhK,EAAY+J,GAAK/J,EAAY8J,EAE/B,KAAK,IG3qGfvS,EAAAyI,EAAA+J,GH6qGY/J,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,MAAOkE,GAAYH,cG/qG/BjG,KAAAgL,aAAAF,EAAAsG,QAAA,KAAA,GHirGU,KAAK,IAIH,GGrrGZA,EAAAhL,EAAAwN,GACAyG,EAAAvP,EAAAmP,UAAA7I,EAAArK,IAAA+D,EAAAmP,WAAA7I,EAAA0I,MACA,MAAAO,EAAA,CHorGcjU,EAAYlE,KAAO,EACnB,OAGFkE,EAAYyN,GGxrGxB,KHyrGYzN,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,MAAOkE,GAAYH,cG7rG/BjG,KAAAgL,aAAAqP,GAAA,KAAA,GH+rGU,KAAK,IACHjU,EAAYyN,GAAKzN,EAAY+S,EAE/B,KAAK,IGlsGfW,EAAA1T,EAAAyN,GACAlW,EAAAmc,CHssGU,KAAK,IAMH,GGvsGZ,MAAAnc,GAAAG,WAAAH,EAAAkJ,GAAAiE,EAAAsF,OAAA,CHwsGchK,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cG3sG/BuB,OAAAqS,OAAAM,oBAAA1a,KAAAO,KAAArC,GAAA,KAAA,GH6sGU,KAAK,IAGH,GGhtGZ2c,EAAAlU,EAAAgT,GACAkB,IAAAxd,EAAA,CHgtGcsJ,EAAYlE,KAAO,EACnB,OG/sGdvE,EAAAkJ,GAAA,GAAAiE,EAAAjE,GAAA,KACAiE,EAAAyG,KAAA5T,EAAAkJ,GACAuT,EAAAtd,EAAA,GHqtGYsJ,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,KGvtGZpF,EAAAwd,GAAA,CHwtGclU,EAAYlE,KAAO,EACnB,OGvtGdoY,GAAAxd,EAAAsd,IACAtP,EAAAyG,KAAA5T,EAAAkJ,GACAuT,EAAAtd,EAAA,GH6tGYsJ,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,MAAOkE,GAAY9D,OAAO,QAAS,GAErC,KAAK,IAGH,GGjuGZxF,KACAa,EAAAyS,MAAA,CHiuGchK,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cGruG/BjG,KAAAgL,aAAArN,EAAAyS,OAAA,KAAA,GHuuGU,KAAK,IACHhK,EAAYiT,GAAKjT,EAAYmU,GAC7BnU,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACHkE,EAAYiT,GG7uGxB,IH+uGU,KAAK,IG/uGf1b,EAAAyI,EAAAiT,GHivGYjT,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,MAAOkE,GAAY9D,OAAO,QAAS,GAErC,KAAK,IACH8D,EAAYlE,KAAO,EACnB,MAEF,KAAK,IAKH,GGzvGZqP,EAAA,KACAnB,EAAA,KHsvGYhK,EAAYoU,IGrvGxBpJ,EHuvGgBhL,EAAYoU,IAAK,CACnBpU,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cG5vG/BjG,KAAAgL,aAAAF,EAAAsG,QAAA,MAAA,GH8vGU,KAAK,IACHhL,EAAYoU,IAAMpU,EAAYqU,GAEhC,KAAK,IAGH,GGpwGZrJ,EAAAhL,EAAAoU,IAKA,MAAA1P,EAAAyG,KAAA,CHgwGcnL,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cGnwG/BjG,KAAAgL,aAAAF,EAAAyG,MAAA,MAAA,GHqwGU,KAAK,IAIH,MGzwGZA,GAAAnL,EAAAsU,IACA5P,EAAAsF,MAAAmB,EAAAnB,MHwwGmBhK,EAAYH,cGvwG/BjG,KAAAgH,aAAA8D,GAAA,MAAA,GHywGU,KAAK,IAGH,GAFA1E,EAAYuU,IAAMvU,EAAYwU,IAExBxU,EAAYuU,OG5wG9B,EAAA,CH6wGcvU,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAY9D,OAAO,SAE5B,KAAK,IAEH,MGlxGZiP,GAAAnB,MAAAtF,EAAAjE,GHkxGmBT,EAAYH,cGjxG/BjG,KAAA6K,aAAA0G,GAAA,MAAA,GHmxGU,KAAK,IACHnL,EAAYlE,KAAO,EACnB,MAEF,KAAK,IAEH,MGvxGZ4I,GAAAsF,MAAAtF,EAAAmP,UAAA7I,EAAArK,IAAA+D,EAAAmP,YAAA,KAAA7I,EAAA0I,MHuxGmB1T,EAAYH,cGtxG/BjG,KAAAgH,aAAA8D,GAAA,MAAA,GHwxGU,KAAK,IAGH,GAFA1E,EAAYyU,IAAMzU,EAAY0U,IAExB1U,EAAYyU,OG3xG9B,EAAA,CH4xGczU,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAY9D,OAAO,SAE5B,KAAK,IACH,GG9xGZ,MAAAwI,EAAAsF,MAAA,CH+xGchK,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cGlyG/BjG,KAAAgL,aAAAF,EAAAsF,OAAA,MAAA,GHoyGU,KAAK,IAIH,MGxyGZA,GAAAhK,EAAA2U,IACA3K,EAAAmB,KAAAzG,EAAAjE,GHuyGmBT,EAAYH,cGtyG/BjG,KAAA6K,aAAAuF,GAAA,MAAA,GHwyGU,KAAK,IACH,GGryGZ,MAAAtF,EAAAmP,UAAA,CHsyGc7T,EAAYlE,KAAO,EACnB,OAGF,GGzyGZ,MAAAqP,EAAA,CH0yGcnL,EAAYlE,KAAO,EACnB,OAIF,MG9yGZkP,GAAArK,IAAA+D,EAAAmP,WAAAnP,EAAAjE,GH8yGmBT,EAAYH,cG7yG/BjG,KAAA6K,aAAAuG,GAAA,MAAA,GH+yGU,KAAK,IACHhL,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,GGjzGZ,MAAAkO,GAAA,MAAAmB,EAAA,CHkzGcnL,EAAYlE,KAAO,EACnB,OASF,MG3zGZ,OAAAkO,IACAgB,EAAA2I,IAAAjP,EAAAjE,IAEA,MAAA0K,IACAH,EAAA0I,MAAAhP,EAAAjE,IHuzGmBT,EAAYH,cGrzG/BjG,KAAA6K,aAAAuG,GAAA,MAAA,GHuzGU,KAAK,IACL,IAAK,MACH,MAAOhL,GAAYlB,SAEtBgU,EAASlZ,SGtzGlB6S,MACA3W,OAAA4H,mBAAAQ,KAAA,QAAApI,GAAA4O,GH0zGM,MAAOhH,oBAAmBpF,KAAK,SAAiB0H,GAC9C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GAIH,MG/zGZ4I,GAAAgP,MAAA,KACAhP,EAAAiP,IAAA,KACAjP,EAAAhE,OAAA,OH6zGmBV,EAAYH,cG5zG/BuB,OAAAkS,UAAAxd,OAAAuD,KAAAO,KAAA8K,GAAA,KAAA,EH8zGU,KAAK,GACH,MAAO1E,GAAY9D,OAAO,SAAU8D,EAAYiF,GAElD,KAAK,GACL,IAAK,MACH,MAAOjF,GAAYlB,SAEtBhJ,EAAQ8D,QGn0GjBgQ,OAAA,SAAAlF,GACA,OACAhE,OAAA,OACAD,GAAAiE,EAAAjE,GACArH,KAAAsL,EAAAtL,OAGAiZ,YAAA,WAWA,UAEAS,QAAApV,mBAAAQ,KAAA,QAAA4U,GAAApO,GHs0GM,MAAOhH,oBAAmBpF,KAAK,SAAkB0H,GAC/C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GAGH,MG10GZ4I,GAAAgP,MAAA,KACAhP,EAAAiP,IAAA,KHy0GmB3T,EAAYH,cGx0G/BjG,KAAAgH,aAAA8D,GAAA,KAAA,EH00GU,KAAK,GAGH,GAFA1E,EAAY8G,GAAK9G,EAAYiF,GAEvBjF,EAAY8G,MG70G9B,EAAA,CH80Gc9G,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAY9D,OAAO,SAE5B,KAAK,GACL,IAAK,MACH,MAAO8D,GAAYlB,SAEtBgU,EAASlZ,QGp1GlBgT,IAAAlP,mBAAAQ,KAAA,QAAA0O,GAAAlI,EAAAiI,GHu1GM,GGn1GNrD,GACA/R,CHm1GM,OAAOmG,oBAAmBpF,KAAK,SAAc0H,GAC3C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,GG11GZ,MAAA4I,EAAAgP,MAAA,CH21Gc1T,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAY9D,OAAO,SG91GtC,KHg2GU,KAAK,GAEH,MGh2GZoN,GAAA,KHg2GmBtJ,EAAYH,cG/1G/BjG,KAAAgL,aAAAF,EAAAgP,OAAA,KAAA,EHi2GU,KAAK,GGj2Gfnc,EAAAyI,EAAAiF,EHo2GU,KAAK,GAWH,GG52GZ1N,EAAAic,UACAlK,EAAA/R,EACAoV,OAEAA,GAAA,GAAA,MAAApV,EAAAyS,OAAA,CHy2GchK,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cG52G/BjG,KAAAgL,aAAArN,EAAAyS,OAAA,KAAA,EH82GU,KAAK,GG92GfzS,EAAAyI,EAAA8G,GHg3GY9G,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,MAAOkE,GAAY9D,OAAO,QAAS,GAErC,KAAK,IACH8D,EAAYlE,KAAO,CACnB,MAEF,KAAK,IACH,MAAOkE,GAAY9D,OAAO,SGt3GtCoN,EHw3GU,KAAK,IACL,IAAK,MACH,MAAOtJ,GAAYlB,SAEtB8N,EAAKhT,QG13Gdgb,SAAAlX,mBAAAQ,KAAA,QAAA8O,GAAAtI,EAAAiI,GH63GM,GG53GNC,EH63GM,OAAOlP,oBAAmBpF,KAAK,SAAkB0H,GAC/C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,MAAOkE,GAAYH,cGh4G/BuB,OAAAqL,KAAAG,IAAAvT,KAAAO,KAAA8K,EAAAiI,GAAA,KAAA,EHk4GU,KAAK,GAGH,GGr4GZC,EAAA5M,EAAAiF,GACA,MAAA2H,EAAA,CHq4Gc5M,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAYH,cGx4G/BuB,OAAAmS,OAAAzd,OAAAuD,KAAAO,MACA7B,OAAA6U,EAAAnM,KACA,KAAA,EH04GU,KAAK,GACL,IAAK,MACH,MAAOT,GAAYlB,SAEtBkO,EAASpT,QG34GlB+G,IAAAjD,mBAAAQ,KAAA,QAAAyC,GAAApJ,EAAAsU,GH84GM,GG54GNvC,GAEAuL,CH24GM,OAAOnX,oBAAmBpF,KAAK,SAAc0H,GAC3C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GGh5GfvE,EAAAA,EAAAmc,MACApK,IHm5GU,KAAK,GACH,GGn5GZ,MAAA/R,EAAA,CHo5GcyI,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAYH,cGv5G/BjG,KAAAgL,aAAArN,GAAA,KAAA,EHy5GU,KAAK,GGz5Gfsd,EAAA7U,EAAAiF,GACA4P,EAAArB,SACAlK,EAAAxS,KAAA+U,EAAAgJ,EAAAhI,UAEAtV,EAAAsd,EAAA7K,MH45GYhK,EAAYlE,KAAO,CACnB,MAEF,KAAK,GACH,MAAOkE,GAAY9D,OAAO,SG95GtCoN,EHg6GU,KAAK,IACL,IAAK,MACH,MAAOtJ,GAAYlB,SAEtB6B,EAAK/G,QGl6GdkT,OAAApP,mBAAAQ,KAAA,QAAA4O,GAAApI,EAAAiI,EAAAI,GHq6GM,GGp6GN5B,GAAAnB,EAKA4C,EASAnV,EACAqV,CHs5GM,OAAOpP,oBAAmBpF,KAAK,SAAiB0H,GAC9C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,GGv6GZ,IAAA6Q,EAAA,CHw6Gc3M,EAAYlE,KAAO,CACnB,OGx6GdqP,EAAA,KACAnB,EAAAtF,EAAAgP,MH46GY1T,EAAYlE,KAAO,CACnB,MAEF,KAAK,GACH,MAAOkE,GAAYH,cG96G/BuB,OAAAqL,KAAAG,IAAAvT,KAAAO,KAAA8K,EAAAiI,EAAA,GAAA,KAAA,EHg7GU,KAAK,GGh7GfC,EAAA5M,EAAAiF,GACA,OAAA2H,GACAzB,EAAAzG,EAAAiP,IACA3J,EAAA,OAEAmB,EAAAyB,EAAAnM,GACAuJ,EAAA4C,EAAA5C,MHq7GU,KAAK,GACHhK,EAAY8G,GAAKpJ,mBAAmBa,KGn7GhDwO,EHq7GU,KAAK,GACH,IAAK/M,EAAY+J,GAAK/J,EAAY8G,MAAMnL,KAAM,CAC5CqE,EAAYlE,KAAO,EACnB,OAUF,MGl8GZrE,GAAAuI,EAAA+J,GAAA/T,MACA8W,GACA3B,KAAAA,EACAnB,MAAAA,EACA6C,QAAAE,EAAAtV,GACAuT,OAAAtG,EAAAjE,IH67GmBT,EAAYH,cG37G/BuB,OAAAqS,OAAA3d,OAAAuD,KAAAO,KAAAkT,GAAA,KAAA,GH67GU,KAAK,IG77Gf3B,EAAAnL,EAAA8J,GAAArJ,GH+7GYT,EAAYlE,KAAO,CACnB,MAEF,KAAK,IACL,IAAK,MACH,MAAOkE,GAAYlB,SAEtBgO,EAAQlT,SGl8GjByT,KAMAvX,OAAA4H,mBAAAQ,KAAA,QAAApI,GAAA4O,GHs8GM,MAAOhH,oBAAmBpF,KAAK,SAAiB0H,GAC9C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GAGH,MG18GZ4I,GAAA/D,OACA+D,EAAAhE,OAAA,MHy8GmBV,EAAYH,cGx8G/BuB,OAAAkS,UAAAxd,OAAAuD,KAAAO,KAAA8K,GAAA,KAAA,EH08GU,KAAK,GACH,MAAO1E,GAAY9D,OAAO,SAAU8D,EAAYiF,GAElD,KAAK,GACL,IAAK,MACH,MAAOjF,GAAYlB,SAEtBhJ,EAAQ8D,QG/8GjBgQ,OAAA,SAAAlF,GACA,OACAhE,OAAA,MACAtH,KAAAsL,EAAAtL,KACAqH,GAAAiE,EAAAjE,KAGA4R,YAAA,WAQA,UAEAS,QAAApV,mBAAAQ,KAAA,QAAA4U,GAAApO,GHk9GM,MAAOhH,oBAAmBpF,KAAK,SAAkB0H,GAC/C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GACH,MAAOkE,GAAYH,cGp9G/BjG,KAAAgH,aAAA8D,GAAA,KAAA,EHs9GU,KAAK,GAGH,GAFA1E,EAAY8G,GAAK9G,EAAYiF,GAEvBjF,EAAY8G,MGz9G9B,EAAA,CH09Gc9G,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAY9D,OAAO,SAE5B,KAAK,GACL,IAAK,MACH,MAAO8D,GAAYlB,SAEtBgU,EAASlZ,QGh+GlBiL,IAAAnH,mBAAAQ,KAAA,QAAA2G,GAAAH,EAAAzG,GHm+GM,GGl+GN6W,GAEAxL,CHi+GM,OAAO5L,oBAAmBpF,KAAK,SAAc0H,GAC3C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GAGH,GGx+GZgZ,EAAApQ,EAAA/D,IAAA1C,GACA,MAAA6W,EAAA,CHw+Gc9U,EAAYlE,KAAO,EACnB,OAGF,MAAOkE,GAAYH,cG3+G/BjG,KAAAgL,aAAAkQ,GAAA,KAAA,EH6+GU,KAAK,GAGH,GGh/GZxL,EAAAtJ,EAAAiF,GACA,MAAAqE,IAAAA,EAAAkK,QAAA,CHg/GcxT,EAAYlE,KAAO,CACnB,OAGFkE,EAAY8G,GGp/GxB,OHq/GY9G,EAAYlE,KAAO,EACnB,MAEF,KAAK,GACH,GGz/GZ,MAAAwN,EAAAwK,UAAA,CH0/Gc9T,EAAYlE,KAAO,EACnB,OAGFkE,EAAY+J,GG7/GxBT,EAAAuD,QH8/GY7M,EAAYlE,KAAO,EACnB,MAEF,KAAK,IACH,MAAOkE,GAAYH,cGlgH/BjG,KAAAwQ,QAAAd,EAAAwK,WAAA,KAAA,GHogHU,KAAK,IACH9T,EAAY+J,GAAK/J,EAAY8J,EAE/B,KAAK,IACH9J,EAAY8G,GAAK9G,EAAY+J,EAE/B,KAAK,IACH,MAAO/J,GAAY9D,OAAO,SAAU8D,EAAY8G,GAElD,KAAK,IACL,IAAK,MACH,MAAO9G,GAAYlB,SAEtB+F,EAAKjL,QG9gHd6R,IAAA/N,mBAAAQ,KAAA,QAAAuN,GAAA/G,EAAAzG,EAAAjI,GHihHM,GGhhHNgU,GACA8C,CHghHM,OAAOpP,oBAAmBpF,KAAK,SAAc0H,GAC3C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GAcH,MGjiHZkO,GAAAtF,EAAA/D,IAAA1C,IAAA,KACA6O,GACA3B,KAAA,KACAnB,MAAAA,EACAgB,OAAAtG,EAAAjE,GACAoT,UAAA5V,GAEA,MAAAjI,GAAA,MAAAA,EAAA0W,QACA,IAAA1W,EAAA0W,OAAA7V,OACAiW,EAAAgH,UAAA9d,EAAA0W,OAEAI,EAAAD,QAAA7W,EHshHmBgK,EAAYH,cGphH/BuB,OAAAqS,OAAA3d,OAAAuD,KAAAO,KAAAkT,GAAA,KAAA,EHshHU,KAAK,GACL,IAAK,MACH,MAAO9M,GAAYlB,SAEtB2M,EAAK7R,QGxhHdgb,SAAAlX,mBAAAQ,KAAA,QAAA8O,GAAAtI,EAAAzG,GH2hHM,GG1hHNoO,EH2hHM,OAAO3O,oBAAmBpF,KAAK,SAAkB0H,GAC/C,OAAU,OAAQA,EAAYrB,KAAOqB,EAAYlE,MAC/C,IAAK,GAGH,GGhiHZuQ,EAAA3H,EAAA/D,IAAA1C,IAAA,KACA,MAAAoO,EAAA,CHgiHcrM,EAAYlE,KAAO,CACnB,OAGF,MAAOkE,GAAYH,cGniH/BuB,OAAAmS,OAAAzd,OAAAuD,KAAAO,MACA7B,OAAAsU,IACA,KAAA,EHqiHU,KAAK,GACL,IAAK,MACH,MAAOrM,GAAYlB,SAEtBkO,EAASpT","file":"y.js","sourcesContent":["/* @flow */\n\nconst GeneratorFunction = (function*(){}).constructor;\n\nclass Y { //eslint-disable-line no-unused-vars\n constructor (opts) {\n this.db = new Y[opts.db.name](this, opts.db);\n this.connector = new Y[opts.connector.name](this, opts.connector);\n this.db.requestTransaction(function*(){\n // create initial Map type\n var model = {\n id: [\"_\", 0],\n struct: \"Map\",\n type: \"Map\",\n map: {}\n };\n yield* this.addOperation(model);\n this.createType(model);\n });\n }\n transact (generator) {\n if (generator.constructor !== GeneratorFunction) {\n throw new Error(\"y.transact requires a Generator function! E.g. function*(){/*..*/}\");\n }\n this.db.requestTransaction(generator);\n }\n destroy () {\n this.connector.disconnect();\n this.db.removeDatabase();\n this.connector = null;\n this.db = null;\n this.transact = function(){\n throw new Error(\"Remember?, you destroyed this type ;)\");\n };\n }\n}\n\nY.AbstractTransaction = AbstractTransaction;\nY.AbstractOperationStore = AbstractOperationStore;\nY.Struct = Struct;\n","var globalRoom = {\n users: {},\n buffers: {},\n removeUser: function(user : AbstractConnector){\n\n for (var i in this.users) {\n this.users[i].userLeft(user);\n }\n delete this.users[user];\n delete this.buffers[user];\n },\n addUser: function(connector){\n this.users[connector.userId] = connector;\n this.buffers[connector.userId] = [];\n for (var uname in this.users) {\n if (uname !== connector.userId) {\n var u = this.users[uname];\n u.userJoined(connector.userId, \"master\");\n connector.userJoined(u.userId, \"master\");\n }\n }\n }\n};\nfunction flushOne(){\n var bufs = [];\n for (var i in globalRoom.buffers) {\n if (globalRoom.buffers[i].length > 0) {\n bufs.push(i);\n }\n }\n if (bufs.length > 0) {\n var userId = getRandom(bufs);\n var m = globalRoom.buffers[userId].shift();\n var user = globalRoom.users[userId];\n user.receiveMessage(m[0], m[1]);\n return true;\n } else {\n return false;\n }\n}\n// setInterval(flushOne, 10);\n\nvar userIdCounter = 0;\n\nclass Test extends AbstractConnector {\n constructor (y, options) {\n if(options === undefined){\n throw new Error(\"Options must not be undefined!\");\n }\n options.role = \"master\";\n options.forwardToSyncingClients = false;\n super(y, options);\n this.setUserId((userIdCounter++) + \"\");\n globalRoom.addUser(this);\n this.globalRoom = globalRoom;\n }\n send (userId, message) {\n globalRoom.buffers[userId].push(JSON.parse(JSON.stringify([this.userId, message])));\n }\n broadcast (message) {\n for (var key in globalRoom.buffers) {\n globalRoom.buffers[key].push(JSON.parse(JSON.stringify([this.userId, message])));\n }\n }\n disconnect () {\n globalRoom.removeUser(this.userId);\n }\n flushAll () {\n var c = true;\n while (c) {\n c = flushOne();\n }\n }\n flushOne() {\n flushOne();\n }\n}\n\nY.Test = Test;\n","\ntype State = {\n user: string,\n clock: number\n};\n\n\nfunction copyObject (o) {\n var c = {};\n for (var key in o) {\n c[key] = o[key];\n }\n return c;\n}\n\ntype StateVector = Array;\ntype OperationSet = Object; // os[Id] = op\ntype StateSet = Object;\n\nY.Memory = (function(){ //eslint-disable-line no-unused-vars\n class Transaction extends AbstractTransaction { //eslint-disable-line\n ss: StateSet;\n os: OperationSet;\n store: OperationStore;\n\n constructor (store : OperationStore) {\n super(store);\n this.ss = store.ss;\n this.os = store.os;\n }\n *setOperation (op) {\n // TODO: you can remove this step! probs..\n var n = this.os.findNode(op.id);\n n.val = op;\n return op;\n }\n *getOperation (id) {\n if (id == null) {\n throw new Error(\"You must define id!\");\n }\n return this.os.find(id);\n }\n *removeOperation (id) {\n this.os.delete(id);\n }\n *setState (state : State) : State {\n this.ss[state.user] = state.clock;\n }\n *getState (user : string) : State {\n var clock = this.ss[user];\n if (clock == null){\n clock = 0;\n }\n return {\n user: user,\n clock: clock\n };\n }\n *getStateVector () : StateVector {\n var stateVector = [];\n for (var user in this.ss) {\n var clock = this.ss[user];\n stateVector.push({\n user: user,\n clock: clock\n });\n }\n return stateVector;\n }\n *getStateSet () : StateSet {\n return this.ss;\n }\n *getOperations (startSS : StateSet) {\n // TODO: use bounds here!\n if (startSS == null){\n startSS = {};\n }\n var ops = [];\n\n var endSV : StateVector = yield* this.getStateVector();\n for (var endState of endSV) {\n var user = endState.user;\n if (user === \"_\") {\n continue;\n }\n var startPos = startSS[user] || 0;\n var endPos = endState.clock;\n\n this.os.iterate([user, startPos], [user, endPos], function(op){//eslint-disable-line\n ops.push(Struct[op.struct].encode(op));\n });\n }\n var res = [];\n for (var op of ops) {\n res.push(yield* this.makeOperationReady.call(this, startSS, op));\n }\n return res;\n }\n *makeOperationReady (ss, op) {\n // instead of ss, you could use currSS (a ss that increments when you add an operation)\n var clock;\n var o = op;\n while (o.right != null){\n // while unknown, go to the right\n o = yield* this.getOperation(o.right);\n clock = ss[o.id[0]];\n if (clock != null && o.id[1] < clock) {\n break;\n }\n }\n op = copyObject(op);\n op.right = (o == null) ? null : o.id;\n return op;\n }\n }\n class OperationStore extends AbstractOperationStore { //eslint-disable-line no-undef\n constructor (y) {\n super(y);\n this.os = new RBTree();\n this.ss = {};\n }\n requestTransaction (makeGen : Function) {\n var t = new Transaction(this);\n var gen = makeGen.call(t, t.getType([\"_\", 0]).next().value);\n var res = gen.next();\n while(!res.done){\n if (res.value === \"transaction\") {\n res = gen.next(t);\n } else {\n throw new Error(\"You must not yield this type. (Maybe you meant to use 'yield*'?)\");\n }\n }\n }\n *removeDatabase () {\n delete this.os;\n }\n }\n return OperationStore;\n})();\n","/* @flow */\n\n// Op is anything that we could get from the OperationStore.\ntype Op = Object;\ntype Id = [string, number];\n\ntype List = {\n id: Id,\n start: Insert,\n end: Insert\n};\n\ntype Insert = {\n id: Id,\n left: Insert,\n right: Insert,\n origin: Insert,\n parent: List,\n content: any\n};\n\nfunction compareIds(id1, id2) {\n\n if (id1 == null || id2 == null) {\n if (id1 == null && id2 == null) {\n return true;\n }\n return false;\n }\n if (id1[0] === id2[0] && id1[1] === id2[1]) {\n return true;\n } else {\n return false;\n }\n}\n\nvar Struct = {\n Operation: { //eslint-disable-line no-unused-vars\n create: function*(op : Op) : Struct.Operation {\n var user = this.store.y.connector.userId;\n var state = yield* this.getState(user);\n op.id = [user, state.clock];\n if ((yield* this.addOperation(op)) === false) {\n throw new Error(\"This is highly unexpected :(\");\n }\n this.store.y.connector.broadcast({\n type: \"update\",\n ops: [Struct[op.struct].encode(op)]\n });\n return op;\n }\n },\n Delete: {\n create: function* (op) {\n if (op.target == null) {\n throw new Error(\"You must define a delete target!\");\n }\n op.struct = \"Delete\";\n yield* Struct.Operation.create.call(this, op);\n\n var target = yield* this.getOperation(op.target);\n target.deleted = true;\n yield* this.setOperation(target);\n },\n encode: function (op) {\n return op;\n },\n requiredOps: function (op) {\n return [op.target];\n },\n execute: function* (op) {\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n var target = yield* this.getOperation(op.target);\n target.deleted = true;\n yield* this.setOperation(target);\n }\n },\n Insert: {\n /*{\n content: any,\n left: Id,\n right: Id,\n parent: Id,\n parentSub: string (optional)\n }\n */\n create: function*( op: Op ) : Insert {\n if ( op.left === undefined\n || op.right === undefined\n || op.parent === undefined ) {\n throw new Error(\"You must define left, right, and parent!\");\n }\n op.origin = op.left;\n op.struct = \"Insert\";\n yield* Struct.Operation.create.call(this, op);\n\n if (op.left != null) {\n var left = yield* this.getOperation(op.left);\n left.right = op.id;\n yield* this.setOperation(left);\n }\n if (op.right != null) {\n var right = yield* this.getOperation(op.right);\n right.left = op.id;\n yield* this.setOperation(right);\n }\n var parent = yield* this.getOperation(op.parent);\n if (op.parentSub != null){\n if (compareIds(parent.map[op.parentSub], op.right)) {\n parent.map[op.parentSub] = op.id;\n yield* this.setOperation(parent);\n }\n } else {\n var start = compareIds(parent.start, op.right);\n var end = compareIds(parent.end, op.left);\n if (start || end) {\n if (start) {\n parent.start = op.id;\n }\n if (end) {\n parent.end = op.id;\n }\n yield* this.setOperation(parent);\n }\n }\n return op;\n },\n encode: function(op){\n /*var e = {\n id: op.id,\n left: op.left,\n right: op.right,\n origin: op.origin,\n parent: op.parent,\n content: op.content,\n struct: \"Insert\"\n };\n if (op.parentSub != null){\n e.parentSub = op.parentSub;\n }\n return e;*/\n return op;\n },\n requiredOps: function(op){\n var ids = [];\n if(op.left != null){\n ids.push(op.left);\n }\n if(op.right != null){\n ids.push(op.right);\n }\n if(op.right == null && op.left == null) {\n ids.push(op.parent);\n }\n if (op.opContent != null) {\n ids.push(op.opContent);\n }\n return ids;\n },\n getDistanceToOrigin: function *(op){\n if (op.left == null) {\n return 0;\n } else {\n var d = 0;\n var o = yield* this.getOperation(op.left);\n while (!compareIds(op.origin, (o ? o.id : null))) {\n d++;\n if (o.left == null) {\n break;\n } else {\n o = yield* this.getOperation(o.left);\n }\n }\n return d;\n }\n },\n /*\n # $this has to find a unique position between origin and the next known character\n # case 1: $origin equals $o.origin: the $creator parameter decides if left or right\n # let $OL= [o1,o2,o3,o4], whereby $this is to be inserted between o1 and o4\n # o2,o3 and o4 origin is 1 (the position of o2)\n # there is the case that $this.creator < o2.creator, but o3.creator < $this.creator\n # then o2 knows o3. Since on another client $OL could be [o1,o3,o4] the problem is complex\n # therefore $this would be always to the right of o3\n # case 2: $origin < $o.origin\n # if current $this insert_position > $o origin: $this ins\n # else $insert_position will not change\n # (maybe we encounter case 1 later, then this will be to the right of $o)\n # case 3: $origin > $o.origin\n # $this insert_position is to the left of $o (forever!)\n */\n execute: function*(op){\n var i; // loop counter\n var distanceToOrigin = i = yield* Struct.Insert.getDistanceToOrigin.call(this, op); // most cases: 0 (starts from 0)\n var o;\n var parent;\n var start;\n\n // find o. o is the first conflicting operation\n if (op.left != null) {\n o = yield* this.getOperation(op.left);\n o = (o.right == null) ? null : yield* this.getOperation(o.right);\n } else { // left == null\n parent = yield* this.getOperation(op.parent);\n let startId = op.parentSub ? parent.map[op.parentSub] : parent.start;\n start = startId == null ? null : yield* this.getOperation(startId);\n o = start;\n }\n\n // handle conflicts\n while (true) {\n if (o != null && !compareIds(o.id, op.right)){\n var oOriginDistance = yield* Struct.Insert.getDistanceToOrigin.call(this, o);\n if (oOriginDistance === i) {\n // case 1\n if (o.id[0] < op.id[0]) {\n op.left = o.id;\n distanceToOrigin = i + 1;\n }\n } else if (oOriginDistance < i) {\n // case 2\n if (i - distanceToOrigin <= oOriginDistance) {\n op.left = o.id;\n distanceToOrigin = i + 1;\n }\n } else {\n break;\n }\n i++;\n o = o.right ? yield* this.getOperation(o.right) : null;\n } else {\n break;\n }\n }\n\n // reconnect..\n var left = null;\n var right = null;\n parent = parent || (yield* this.getOperation(op.parent));\n\n // NOTE: You you have to call addOperation before you set any other operation!\n\n // reconnect left and set right of op\n if (op.left != null) {\n left = yield* this.getOperation(op.left);\n op.right = left.right;\n if ((yield* this.addOperation(op)) === false) { // add here\n return;\n }\n left.right = op.id;\n yield* this.setOperation(left);\n } else {\n op.right = op.parentSub ? (parent.map[op.parentSub] || null) : parent.start;\n if ((yield* this.addOperation(op)) === false) { // or here\n return;\n }\n }\n // reconnect right\n if (op.right != null) {\n right = yield* this.getOperation(op.right);\n right.left = op.id;\n yield* this.setOperation(right);\n }\n\n // notify parent\n if (op.parentSub != null) {\n if (left == null) {\n parent.map[op.parentSub] = op.id;\n yield* this.setOperation(parent);\n }\n } else {\n if (right == null || left == null) {\n if (right == null) {\n parent.end = op.id;\n }\n if (left == null) {\n parent.start = op.id;\n }\n yield* this.setOperation(parent);\n }\n }\n }\n },\n List: {\n create: function*( op : Op){\n op.start = null;\n op.end = null;\n op.struct = \"List\";\n return yield* Struct.Operation.create.call(this, op);\n },\n encode: function(op){\n return {\n struct: \"List\",\n id: op.id,\n type: op.type\n };\n },\n requiredOps: function(){\n /*\n var ids = [];\n if (op.start != null) {\n ids.push(op.start);\n }\n if (op.end != null){\n ids.push(op.end);\n }\n return ids;\n */\n return [];\n },\n execute: function* (op) {\n op.start = null;\n op.end = null;\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n },\n ref: function* (op : Op, pos : number) : Insert {\n if (op.start == null) {\n return null;\n }\n var res = null;\n var o = yield* this.getOperation(op.start);\n\n while ( true ) {\n if (!o.deleted) {\n res = o;\n pos--;\n }\n if (pos >= 0 && o.right != null) {\n o = (yield* this.getOperation(o.right));\n } else {\n break;\n }\n }\n return res;\n },\n delete: function* (op, pos) {\n var ref = yield* Struct.List.ref.call(this, op, pos);\n if (ref != null) {\n yield* Struct.Delete.create.call(this, {\n target: ref.id\n });\n }\n },\n map: function* (o : Op, f : Function) : Array {\n o = o.start;\n var res = [];\n while ( o != null) {\n var operation = yield* this.getOperation(o);\n if (!operation.deleted) {\n res.push(f(operation.content));\n }\n o = operation.right;\n }\n return res;\n },\n insert: function* (op, pos : number, contents : Array) {\n var left, right;\n if (pos === 0) {\n left = null;\n right = op.start;\n } else {\n var ref = yield* Struct.List.ref.call(this, op, pos - 1);\n if (ref === null) {\n left = op.end;\n right = null;\n } else {\n left = ref.id;\n right = ref.right;\n }\n }\n for (var key in contents) {\n var insert = {\n left: left,\n right: right,\n content: contents[key],\n parent: op.id\n };\n left = (yield* Struct.Insert.create.call(this, insert)).id;\n }\n }\n },\n Map: {\n /*\n {\n // empty\n }\n */\n create: function*( op : Op ){\n op.map = {};\n op.struct = \"Map\";\n return yield* Struct.Operation.create.call(this, op);\n },\n encode: function(op){\n return {\n struct: \"Map\",\n type: op.type,\n id: op.id\n };\n },\n requiredOps: function(){\n /*\n var ids = [];\n for (var end in op.map) {\n ids.push(op.map[end]);\n }\n return ids;\n */\n return [];\n },\n execute: function* (op) {\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n },\n get: function* (op, name) {\n var oid = op.map[name];\n if (oid != null) {\n var res = yield* this.getOperation(oid);\n return (res == null || res.deleted) ? void 0 : (res.opContent == null\n ? res.content : yield* this.getType(res.opContent));\n }\n },\n set: function* (op, name, value) {\n var right = op.map[name] || null;\n var insert = {\n left: null,\n right: right,\n parent: op.id,\n parentSub: name\n };\n if ( value != null && value._model != null\n && value._model.length === 2) {\n insert.opContent = value._model;\n } else {\n insert.content = value;\n }\n yield* Struct.Insert.create.call(this, insert);\n },\n delete: function* (op, name) {\n var v = op.map[name] || null;\n if (v != null) {\n yield* Struct.Delete.create.call(this, {\n target: v\n });\n }\n }\n }\n};\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var iteratorSymbol =\n typeof Symbol === \"function\" && Symbol.iterator || \"@@iterator\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided, then outerFn.prototype instanceof Generator.\n var generator = Object.create((outerFn || Generator).prototype);\n\n generator._invoke = makeInvokeMethod(\n innerFn, self || null,\n new Context(tryLocsList || [])\n );\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n genFun.__proto__ = GeneratorFunctionPrototype;\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `value instanceof AwaitArgument` to determine if the yielded value is\n // meant to be awaited. Some may consider the name of this method too\n // cutesy, but they are curmudgeons.\n runtime.awrap = function(arg) {\n return new AwaitArgument(arg);\n };\n\n function AwaitArgument(arg) {\n this.arg = arg;\n }\n\n function AsyncIterator(generator) {\n // This invoke function is written in a style that assumes some\n // calling function (or Promise) will handle exceptions.\n function invoke(method, arg) {\n var result = generator[method](arg);\n var value = result.value;\n return value instanceof AwaitArgument\n ? Promise.resolve(value.arg).then(invokeNext, invokeThrow)\n : Promise.resolve(value).then(function(unwrapped) {\n result.value = unwrapped;\n return result;\n }, invokeThrow);\n }\n\n if (typeof process === \"object\" && process.domain) {\n invoke = process.domain.bind(invoke);\n }\n\n var invokeNext = invoke.bind(generator, \"next\");\n var invokeThrow = invoke.bind(generator, \"throw\");\n var invokeReturn = invoke.bind(generator, \"return\");\n var previousPromise;\n\n function enqueue(method, arg) {\n var enqueueResult =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(function() {\n return invoke(method, arg);\n }) : new Promise(function(resolve) {\n resolve(invoke(method, arg));\n });\n\n // Avoid propagating enqueueResult failures to Promises returned by\n // later invocations of the iterator, and call generator.return() to\n // allow the generator a chance to clean up.\n previousPromise = enqueueResult[\"catch\"](invokeReturn);\n\n return enqueueResult;\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n if (method === \"return\" ||\n (method === \"throw\" && delegate.iterator[method] === undefined)) {\n // A return or throw (when the delegate iterator has no throw\n // method) always terminates the yield* loop.\n context.delegate = null;\n\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n var returnMethod = delegate.iterator[\"return\"];\n if (returnMethod) {\n var record = tryCatch(returnMethod, delegate.iterator, arg);\n if (record.type === \"throw\") {\n // If the return method threw an exception, let that\n // exception prevail over the original return or throw.\n method = \"throw\";\n arg = record.arg;\n continue;\n }\n }\n\n if (method === \"return\") {\n // Continue with the outer return, now that the delegate\n // iterator has been terminated.\n continue;\n }\n }\n\n var record = tryCatch(\n delegate.iterator[method],\n delegate.iterator,\n arg\n );\n\n if (record.type === \"throw\") {\n context.delegate = null;\n\n // Like returning generator.throw(uncaught), but without the\n // overhead of an extra function call.\n method = \"throw\";\n arg = record.arg;\n continue;\n }\n\n // Delegate generator ran and handled its own exceptions so\n // regardless of what the method was, we continue as if it is\n // \"next\" with an undefined arg.\n method = \"next\";\n arg = undefined;\n\n var info = record.arg;\n if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n } else {\n state = GenStateSuspendedYield;\n return info;\n }\n\n context.delegate = null;\n }\n\n if (method === \"next\") {\n if (state === GenStateSuspendedYield) {\n context.sent = arg;\n } else {\n delete context.sent;\n }\n\n } else if (method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw arg;\n }\n\n if (context.dispatchException(arg)) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n method = \"next\";\n arg = undefined;\n }\n\n } else if (method === \"return\") {\n context.abrupt(\"return\", arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n var info = {\n value: record.arg,\n done: context.done\n };\n\n if (record.arg === ContinueSentinel) {\n if (context.delegate && method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n arg = undefined;\n }\n } else {\n return info;\n }\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(arg) call above.\n method = \"throw\";\n arg = record.arg;\n }\n }\n };\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset();\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function() {\n this.prev = 0;\n this.next = 0;\n this.sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.tryEntries.forEach(resetTryEntry);\n\n // Pre-initialize at least 20 temporary variables to enable hidden\n // class optimizations for simple generators.\n for (var tempIndex = 0, tempName;\n hasOwn.call(this, tempName = \"t\" + tempIndex) || tempIndex < 20;\n ++tempIndex) {\n this[tempName] = null;\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.next = finallyEntry.finallyLoc;\n } else {\n this.complete(record);\n }\n\n return ContinueSentinel;\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = record.arg;\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","\nclass WebRTC extends AbstractConnector {\n constructor (options) {\n if(options === undefined){\n throw new Error(\"Options must not be undefined!\");\n }\n super({\n role: \"slave\"\n });\n\n var room = options.room;\n\n // connect per default to our server\n if(options.url == null){\n options.url = \"https://yatta.ninja:8888\";\n }\n\n var swr = new SimpleWebRTC(options); //eslint-disable-line no-undef\n this.swr = swr;\n var self = this;\n\n swr.once(\"connectionReady\", function(userId){\n // SimpleWebRTC (swr) is initialized\n swr.joinRoom(room);\n\n swr.once(\"joinedRoom\", function(){\n self.setUserId(userId);\n var i;\n // notify the connector class about all the users that already\n // joined the session\n for(i in self.swr.webrtc.peers){\n self.userJoined(self.swr.webrtc.peers[i].id, \"master\");\n }\n swr.on(\"channelMessage\", function(peer, room_, message){\n // The client received a message\n // Check if the connector is already initialized,\n // only then forward the message to the connector class\n if(message.type != null ){\n self.receiveMessage(peer.id, message.payload);\n }\n });\n });\n\n swr.on(\"createdPeer\", function(peer){\n // a new peer/client joined the session.\n // Notify the connector class, if the connector\n // is already initialized\n self.userJoined(peer.id, \"master\");\n });\n\n swr.on(\"peerStreamRemoved\", function(peer){\n // a client left the session.\n // Notify the connector class, if the connector\n // is already initialized\n self.userLeft(peer.id);\n });\n });\n }\n send (uid, message) {\n var self = this;\n // we have to make sure that the message is sent under all circumstances\n var send = function(){\n // check if the clients still exists\n var peer = self.swr.webrtc.getPeers(uid)[0];\n var success;\n if(peer){\n // success is true, if the message is successfully sent\n success = peer.sendDirectly(\"simplewebrtc\", \"yjs\", message);\n }\n if(!success){\n // resend the message if it didn't work\n setTimeout(send, 500);\n }\n };\n // try to send the message\n send();\n }\n broadcast (message) {\n this.swr.sendDirectlyToAll(\"simplewebrtc\", \"yjs\", message);\n }\n}\n\nY.WebRTC = WebRTC;\n","\ntype State = {\n user: string,\n clock: number\n};\n\ntype StateVector = Array;\n\ntype StateSet = Object;\n\ntype IDBTransaction = Function;\ntype IDBObjectStore = Function;\ntype IDBRequest = Function;\ntype IDBCursor = Function;\ntype IDBKeyRange = Function;\n\ntype IDBOpenDBRequest = Function;\n\ndeclare var indexedDB : Object;\n\nY.IndexedDB = (function(){ //eslint-disable-line no-unused-vars\n class Transaction extends AbstractTransaction { //eslint-disable-line\n transaction: IDBTransaction;\n sv: IDBObjectStore;\n os: IDBObjectStore;\n store: OperationStore;\n\n constructor (store : OperationStore) {\n super(store);\n this.transaction = store.db.transaction([\"OperationStore\", \"StateVector\"], \"readwrite\");\n this.sv = this.transaction.objectStore(\"StateVector\");\n this.os = this.transaction.objectStore(\"OperationStore\");\n this.buffer = {};\n }\n *setOperation (op) {\n yield this.os.put(op);\n this.buffer[JSON.stringify(op.id)] = op;\n return op;\n }\n *getOperation (id) {\n var op = this.buffer[JSON.stringify(id)];\n if (op == null) {\n op = yield this.os.get(id);\n this.buffer[JSON.stringify(id)] = op;\n }\n return op;\n }\n *removeOperation (id) {\n this.buffer[JSON.stringify(id)] = null;\n return yield this.os.delete(id);\n }\n *setState (state : State) : State {\n return yield this.sv.put(state);\n }\n *getState (user : string) : State {\n var state;\n if ((state = yield this.sv.get(user)) != null){\n return state;\n } else {\n return {\n user: user,\n clock: 0\n };\n }\n }\n *getStateVector () : StateVector {\n var stateVector = [];\n var cursorResult = this.sv.openCursor();\n var cursor;\n while ((cursor = yield cursorResult) != null) {\n stateVector.push(cursor.value);\n cursor.continue();\n }\n return stateVector;\n }\n *getStateSet () : StateSet {\n var sv : StateVector = yield* this.getStateVector();\n var ss : StateSet = {};\n for (var state of sv){\n ss[state.user] = state.clock;\n }\n return ss;\n }\n\n *getOperations (startSS : StateSet) {\n if (startSS == null){\n startSS = {};\n }\n var ops = [];\n\n var endSV : StateVector = yield* this.getStateVector();\n for (var endState of endSV) {\n var user = endState.user;\n var startPos = startSS[user] || 0;\n var endPos = endState.clock;\n var range = IDBKeyRange.bound([user, startPos], [user, endPos]);\n var cursorResult = this.os.openCursor(range);\n var cursor;\n while ((cursor = yield cursorResult) != null) {\n ops.push(cursor.value);\n cursor.continue();\n }\n }\n return ops;\n }\n }\n class OperationStore extends AbstractOperationStore { //eslint-disable-line no-undef\n namespace: string;\n ready: Promise;\n whenReadyListeners: Array;\n constructor (y, opts) {\n super(y);\n if (opts == null) {\n opts = {};\n }\n if (opts.namespace == null || typeof opts.namespace !== \"string\") {\n throw new Error(\"IndexedDB: expect a string (opts.namespace)!\");\n } else {\n this.namespace = opts.namespace;\n }\n if (opts.idbVersion != null) {\n this.idbVersion = opts.idbVersion;\n } else {\n this.idbVersion = 5;\n }\n\n this.transactionQueue = {\n queue: [],\n onRequest: null\n };\n\n var store = this;\n\n var tGen = (function *transactionGen(){\n store.db = yield indexedDB.open(opts.namespace, store.idbVersion);\n var transactionQueue = store.transactionQueue;\n\n var transaction = null;\n var cont = true;\n while (cont) {\n var request = yield transactionQueue;\n transaction = new Transaction(store);\n\n yield* request.call(transaction, request);/*\n while (transactionQueue.queue.length > 0) {\n yield* transactionQueue.queue.shift().call(transaction);\n }*/\n }\n })();\n\n function handleTransactions(t){ //eslint-disable-line no-unused-vars\n var request = t.value;\n if (t.done){\n return;\n } else if (request.constructor === IDBRequest\n || request.constructor === IDBCursor ) {\n request.onsuccess = function(){\n handleTransactions(tGen.next(request.result));\n };\n request.onerror = function(err){\n tGen.throw(err);\n };\n } else if (request === store.transactionQueue) {\n if (request.queue.length > 0){\n handleTransactions(tGen.next(request.queue.shift()));\n } else {\n request.onRequest = function(){\n request.onRequest = null;\n handleTransactions(tGen.next(request.queue.shift()));\n };\n }\n } else if ( request.constructor === IDBOpenDBRequest ) {\n request.onsuccess = function(event){\n var db = event.target.result;\n handleTransactions(tGen.next(db));\n };\n request.onerror = function(){\n tGen.throw(\"Couldn't open IndexedDB database!\");\n };\n request.onupgradeneeded = function(event){\n var db = event.target.result;\n try {\n db.createObjectStore(\"OperationStore\", {keyPath: \"id\"});\n db.createObjectStore(\"StateVector\", {keyPath: \"user\"});\n } catch (e) {\n // console.log(\"Store already exists!\");\n }\n };\n } else {\n tGen.throw(\"You can not yield this type!\");\n }\n }\n handleTransactions(tGen.next());\n\n }\n requestTransaction (makeGen : Function) {\n this.transactionQueue.queue.push(makeGen);\n if (this.transactionQueue.onRequest != null) {\n this.transactionQueue.onRequest();\n }\n }\n *removeDatabase () {\n this.db.close();\n yield indexedDB.deleteDatabase(this.namespace);\n }\n }\n return OperationStore;\n})();\n","\nclass N {\n // A created node is always red!\n constructor (val) {\n this.val = val;\n this.color = true;\n this._left = null;\n this._right = null;\n this._parent = null;\n if (val.id === null) {\n throw new Error(\"You must define id!\");\n }\n }\n isRed () { return this.color; }\n isBlack () { return !this.color; }\n redden () { this.color = true; return this; }\n blacken () { this.color = false; return this; }\n get grandparent () {\n return this.parent.parent;\n }\n get parent () {\n return this._parent;\n }\n get sibling () {\n return (this === this.parent.left) ?\n this.parent.right : this.parent.left;\n }\n get left () {\n return this._left;\n }\n get right () {\n return this._right;\n }\n set left (n) {\n if (n !== null) {\n n._parent = this;\n }\n this._left = n;\n }\n set right (n) {\n if (n !== null) {\n n._parent = this;\n }\n this._right = n;\n }\n rotateLeft (tree) {\n var parent = this.parent;\n var newParent = this.right;\n var newRight = this.right.left;\n newParent.left = this;\n this.right = newRight;\n if (parent === null) {\n tree.root = newParent;\n newParent._parent = null;\n } else if (parent.left === this) {\n parent.left = newParent;\n } else if (parent.right === this) {\n parent.right = newParent;\n } else {\n throw new Error(\"The elements are wrongly connected!\");\n }\n }\n next () {\n if ( this.right !== null ) {\n // search the most left node in the right tree\n var o = this.right;\n while (o.left !== null) {\n o = o.left;\n }\n return o;\n } else {\n var p = this;\n while (p.parent !== null && p !== p.parent.left) {\n p = p.parent;\n }\n return p.parent;\n }\n }\n rotateRight (tree) {\n var parent = this.parent;\n var newParent = this.left;\n var newLeft = this.left.right;\n newParent.right = this;\n this.left = newLeft;\n if (parent === null) {\n tree.root = newParent;\n newParent._parent = null;\n } else if (parent.left === this) {\n parent.left = newParent;\n } else if (parent.right === this) {\n parent.right = newParent;\n } else {\n throw new Error(\"The elements are wrongly connected!\");\n }\n }\n getUncle () {\n // we can assume that grandparent exists when this is called!\n if (this.parent === this.parent.parent.left) {\n return this.parent.parent.right;\n } else {\n return this.parent.parent.left;\n }\n }\n}\n\nclass RBTree { //eslint-disable-line no-unused-vars\n constructor () {\n this.root = null;\n }\n findNodeWithLowerBound (from) {\n var o = this.root;\n if (o === null) {\n return false;\n } else {\n while (true) {\n if ((from === null || from < o.val.id) && o.left !== null) {\n // o is included in the bound\n // try to find an element that is closer to the bound\n o = o.left;\n } else if (o.val.id < from) {\n // o is not within the bound, maybe one of the right elements is..\n if (o.right !== null) {\n o = o.right;\n } else {\n // there is no right element. Search for the next bigger element,\n // this should be within the bounds\n return o.next();\n }\n } else {\n return o;\n }\n }\n }\n }\n iterate (from, to, f) {\n var o = this.findNodeWithLowerBound(from);\n while ( o !== null && (to === null || o.val.id <= to) ) {\n f(o.val);\n o = o.next();\n }\n return true;\n }\n find (id) {\n return this.findNode(id).val;\n }\n findNode (id) {\n var o = this.root;\n if (o === null) {\n return false;\n } else {\n while (true) {\n if (o === null) {\n return false;\n }\n if (id < o.val.id) {\n o = o.left;\n } else if (o.val.id < id) {\n o = o.right;\n } else {\n return o;\n }\n }\n }\n }\n delete (id) {\n var d = this.findNode(id);\n if (d.left !== null && d.right !== null) {\n // switch d with the greates element in the left subtree.\n // o should have at most one child.\n var o = d.left;\n // find\n while (o.right !== null) {\n o = o.right;\n }\n // switch\n d.val = o.val;\n d = o;\n }\n // d has at most one child\n // let n be the node that replaces d\n var isFakeChild;\n var child = d.left || d.right;\n if ( child === null) {\n isFakeChild = true;\n child = new N({id: 0});\n child.blacken();\n d.right = child;\n } else {\n isFakeChild = false;\n }\n\n if (d.parent === null) {\n if (!isFakeChild) {\n this.root = child;\n child.blacken();\n child._parent = null;\n } else {\n this.root = null;\n }\n return;\n } else if (d.parent.left === d) {\n d.parent.left = child;\n } else if (d.parent.right === d) {\n d.parent.right = child;\n } else {\n throw new Error(\"Impossible!\");\n }\n if ( d.isBlack() ) {\n if ( child.isRed() ) {\n child.blacken();\n } else {\n this._fixDelete(child);\n }\n }\n this.root.blacken();\n if (isFakeChild) {\n if (child.parent.left === child) {\n child.parent.left = null;\n } else if (child.parent.right === child) {\n child.parent.right = null;\n } else {\n throw new Error(\"Impossible #3\");\n }\n }\n }\n _fixDelete (n) {\n function isBlack (node) {\n return node !== null ? node.isBlack() : true;\n }\n function isRed(node) {\n return node !== null ? node.isRed() : false;\n }\n if (n.parent === null) {\n // this can only be called after the first iteration of fixDelete.\n return;\n }\n // d was already replaced by the child\n // d is not the root\n // d and child are black\n var sibling = n.sibling;\n if (isRed(sibling)) {\n // make sibling the grandfather\n n.parent.redden();\n sibling.blacken();\n if (n === n.parent.left) {\n n.parent.rotateLeft(this);\n } else if (n === n.parent.right) {\n n.parent.rotateRight(this);\n } else {\n throw new Error(\"Impossible #2\");\n }\n sibling = n.sibling;\n }\n // parent, sibling, and children of n are black\n if ( n.parent.isBlack() &&\n sibling.isBlack() &&\n isBlack(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden();\n this._fixDelete(n.parent);\n } else if ( n.parent.isRed() &&\n sibling.isBlack() &&\n isBlack(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden();\n n.parent.blacken();\n } else {\n if ( n === n.parent.left &&\n sibling.isBlack() &&\n isRed(sibling.left) &&\n isBlack(sibling.right)\n ) {\n sibling.redden();\n sibling.left.blacken();\n sibling.rotateRight(this);\n sibling = n.sibling;\n } else if ( n === n.parent.right &&\n sibling.isBlack() &&\n isRed(sibling.right) &&\n isBlack(sibling.left)\n ) {\n sibling.redden();\n sibling.right.blacken();\n sibling.rotateLeft(this);\n sibling = n.sibling;\n }\n sibling.color = n.parent.color;\n n.parent.blacken();\n if (n === n.parent.left) {\n sibling.right.blacken();\n n.parent.rotateLeft(this);\n } else {\n sibling.left.blacken();\n n.parent.rotateRight(this);\n }\n }\n }\n add (v) {\n var node = new N(v);\n if (this.root !== null) {\n var p = this.root; // p abbrev. parent\n while (true) {\n if (node.val.id < p.val.id) {\n if (p.left === null) {\n p.left = node;\n break;\n } else {\n p = p.left;\n }\n } else if (p.val.id < node.val.id) {\n if (p.right === null) {\n p.right = node;\n break;\n } else {\n p = p.right;\n }\n } else {\n return false;\n }\n }\n this._fixInsert(node);\n } else {\n this.root = node;\n }\n this.root.blacken();\n }\n _fixInsert (n) {\n if (n.parent === null) {\n n.blacken();\n return;\n } else if (n.parent.isBlack()) {\n return;\n }\n var uncle = n.getUncle();\n if (uncle !== null && uncle.isRed()) {\n // Note: parent: red, uncle: red\n n.parent.blacken();\n uncle.blacken();\n n.grandparent.redden();\n this._fixInsert(n.grandparent);\n } else {\n // Note: parent: red, uncle: black or null\n // Now we transform the tree in such a way that\n // either of these holds:\n // 1) grandparent.left.isRed\n // and grandparent.left.left.isRed\n // 2) grandparent.right.isRed\n // and grandparent.right.right.isRed\n if (n === n.parent.right\n && n.parent === n.grandparent.left) {\n n.parent.rotateLeft(this);\n // Since we rotated and want to use the previous\n // cases, we need to set n in such a way that\n // n.parent.isRed again\n n = n.left;\n } else if (n === n.parent.left\n && n.parent === n.grandparent.right) {\n n.parent.rotateRight(this);\n // see above\n n = n.right;\n }\n // Case 1) or 2) hold from here on.\n // Now traverse grandparent, make parent a black node\n // on the highest level which holds two red nodes.\n n.parent.blacken();\n n.grandparent.redden();\n if (n === n.parent.left) {\n // Case 1\n n.grandparent.rotateRight(this);\n } else {\n // Case 2\n n.grandparent.rotateLeft(this);\n }\n }\n }\n}\n","\n\n(function(){\n\n class List {\n constructor (_model) {\n this._model = _model;\n }\n *val (pos) {\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n if (pos != null) {\n var o = yield* Y.Struct.List.ref.call(t, model, pos);\n return o ? o.content : null;\n } else {\n return yield* Y.Struct.List.map.call(t, model, function(c){return c; });\n }\n }\n *insert (pos, contents) {\n if (typeof pos !== \"number\") {\n throw new Error(\"pos must be a number!\");\n }\n if (!(contents instanceof Array)) {\n throw new Error(\"contents must be an Array of objects!\");\n }\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n yield* Y.Struct.List.insert.call(t, model, pos, contents);\n }\n *delete (pos) {\n if (typeof pos !== \"number\") {\n throw new Error(\"pos must be a number!\");\n }\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n yield* Y.Struct.List.delete.call(t, model, pos);\n }\n _changed () {\n }\n }\n\n Y.List = function* YList(){\n var t = yield \"transaction\";\n var model = yield* Y.Struct.List.create.call(t, {type: \"List\"});\n return t.createType(model);\n };\n Y.List.Create = List;\n})();\n","\n(function(){\n class Map {\n constructor (_model) {\n this._model = _model;\n }\n *val () {\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n if (arguments.length === 0) {\n var res = {};\n for (var key in model.map) {\n var v = yield* Y.Struct.Map.get.call(t, model, key);\n if (v != null) {\n res[key] = v;\n }\n }\n return res;\n } else if (arguments.length === 1) {\n return yield* Y.Struct.Map.get.call(t, model, arguments[0]);\n } else if (arguments.length === 2) {\n return yield* Y.Struct.Map.set.call(t, model, arguments[0], arguments[1]);\n } else {\n throw new Error(\"Implement this case!\");\n }\n }\n *delete (key) {\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n yield* Y.Struct.Map.delete.call(t, model, key);\n }\n _changed () {\n }\n }\n\n Y.Map = function* YMap(){\n var t = yield \"transaction\";\n if (this instanceof Y.AbstractOperationStore) {\n var model = yield* Y.Struct.map.create.call(t, {type: \"Map\"});\n return t.createType(model);\n } else {\n throw new Error(\"Don't use `new` to create this type!\");\n }\n };\n Y.Map.Create = Map;\n})();\n","\nclass AbstractConnector { //eslint-disable-line no-unused-vars\n /*\n opts\n .role : String Role of this client (\"master\" or \"slave\")\n .userId : String that uniquely defines the user.\n */\n constructor (y, opts) {\n this.y = y;\n if (opts == null){\n opts = {};\n }\n if (opts.role == null || opts.role === \"master\") {\n this.role = \"master\";\n } else if (opts.role === \"slave\") {\n this.role = \"slave\";\n } else {\n throw new Error(\"Role must be either 'master' or 'slave'!\");\n }\n this.role = opts.role;\n this.connections = {};\n this.userEventListeners = [];\n this.whenSyncedListeners = [];\n this.currentSyncTarget = null;\n this.syncingClients = [];\n this.forwardToSyncingClients = (opts.forwardToSyncingClients === false) ? false : true;\n this.debug = opts.debug ? true : false;\n }\n setUserId (userId) {\n this.userId = userId;\n this.y.db.setUserId(userId);\n }\n onUserEvent (f) {\n this.userEventListeners.push(f);\n }\n userLeft (user : string) {\n delete this.connections[user];\n if (user === this.currentSyncTarget){\n this.currentSyncTarget = null;\n this.findNextSyncTarget();\n }\n for (var f of this.userEventListeners){\n f({\n action: \"userLeft\",\n user: user\n });\n }\n }\n userJoined (user, role) {\n if(role == null){\n throw new Error(\"You must specify the role of the joined user!\");\n }\n if (this.connections[user] != null) {\n throw new Error(\"This user already joined!\");\n }\n this.connections[user] = {\n isSynced: false,\n role: role\n };\n for (var f of this.userEventListeners) {\n f({\n action: \"userJoined\",\n user: user,\n role: role\n });\n }\n if (this.currentSyncTarget == null) {\n this.findNextSyncTarget();\n }\n }\n // Execute a function _when_ we are connected.\n // If not connected, wait until connected\n whenSynced (f) {\n if (this.isSynced === true) {\n f();\n } else {\n this.whenSyncedListeners.push(f);\n }\n }\n // returns false, if there is no sync target\n // true otherwise\n findNextSyncTarget () {\n if (this.currentSyncTarget != null && this.connections[this.currentSyncTarget].isSynced === false) {\n throw new Error(\"The current sync has not finished!\");\n }\n\n var syncUser = null;\n for (var uid in this.connections) {\n syncUser = this.connections[uid];\n if (!syncUser.isSynced) {\n break;\n }\n }\n if (syncUser != null){\n var conn = this;\n this.y.db.requestTransaction(function*(){\n conn.currentSyncTarget = uid;\n conn.send(uid, {\n type: \"sync step 1\",\n stateVector: yield* this.getStateVector()\n });\n });\n }\n // set the state to synced!\n if (!this.isSynced) {\n this.isSynced = true;\n for (var f of this.whenSyncedListeners) {\n f();\n }\n this.whenSyncedListeners = null;\n }\n return false;\n }\n // You received a raw message, and you know that it is intended for to Yjs. Then call this function.\n receiveMessage (sender, m){\n if (this.debug) {\n console.log(`${sender} -> ${this.userId}: ${JSON.stringify(m)}`); //eslint-disable-line\n }\n if (m.type === \"sync step 1\") {\n // TODO: make transaction, stream the ops\n let conn = this;\n this.y.db.requestTransaction(function*(){\n var ops = yield* this.getOperations(m.stateVector);\n var sv = yield* this.getStateVector();\n conn.send(sender, {\n type: \"sync step 2\",\n os: ops,\n stateVector: sv\n });\n if (this.forwardToSyncingClients) {\n conn.syncingClients.push(sender);\n setTimeout(function(){\n conn.syncingClients = conn.syncingClients.filter(function(cli){\n return cli !== sender;\n });\n conn.send(sender, {\n type: \"sync done\"\n });\n }, conn.syncingClientDuration);\n }\n });\n } else if (m.type === \"sync step 2\") {\n this.y.db.apply(m.os);\n let conn = this;\n this.y.db.requestTransaction(function*(){\n var ops = yield* this.getOperations(m.stateVector);\n if (ops.length > 0) {\n conn.broadcast({\n type: \"update\",\n ops: ops\n });\n }\n });\n } else if (m.type === \"sync done\") {\n this.connections[sender].isSynced = true;\n this.findNextSyncTarget();\n } else if (m.type === \"update\") {\n if (this.forwardToSyncingClients) {\n for (var client of this.syncingClients) {\n this.send(client, m);\n }\n }\n this.y.db.apply(m.ops);\n }\n }\n // Currently, the HB encodes operations as JSON. For the moment I want to keep it\n // that way. Maybe we support encoding in the HB as XML in the future, but for now I don't want\n // too much overhead. Y is very likely to get changed a lot in the future\n //\n // Because we don't want to encode JSON as string (with character escaping, wich makes it pretty much unreadable)\n // we encode the JSON as XML.\n //\n // When the HB support encoding as XML, the format should look pretty much like this.\n //\n // does not support primitive values as array elements\n // expects an ltx (less than xml) object\n parseMessageFromXml (m) {\n function parseArray (node) {\n for (var n of node.children){\n if (n.getAttribute(\"isArray\") === \"true\") {\n return parseArray(n);\n } else {\n return parseObject(n);\n }\n }\n }\n function parseObject (node) {\n var json = {};\n for (var attrName in node.attrs) {\n var value = node.attrs[attrName];\n var int = parseInt(value);\n if (isNaN(int) || (\"\" + int) !== value){\n json[attrName] = value;\n } else {\n json[attrName] = int;\n }\n }\n for (var n in node.children){\n var name = n.name;\n if (n.getAttribute(\"isArray\") === \"true\") {\n json[name] = parseArray(n);\n } else {\n json[name] = parseObject(n);\n }\n }\n return json;\n }\n parseObject(m);\n }\n // encode message in xml\n // we use string because Strophe only accepts an \"xml-string\"..\n // So {a:4,b:{c:5}} will look like\n // \n // \n // \n // m - ltx element\n // json - Object\n encodeMessageToXml (msg, obj) {\n // attributes is optional\n function encodeObject (m, json) {\n for (var name in json) {\n var value = json[name];\n if (name == null) {\n // nop\n } else if (value.constructor === Object) {\n encodeObject(m.c(name), value);\n } else if (value.constructor === Array) {\n encodeArray(m.c(name), value);\n } else {\n m.setAttribute(name, value);\n }\n }\n }\n function encodeArray (m, array) {\n m.setAttribute(\"isArray\", \"true\");\n for (var e of array) {\n if (e.constructor === Object) {\n encodeObject(m.c(\"array-element\"), e);\n } else {\n encodeArray(m.c(\"array-element\"), e);\n }\n }\n }\n if (obj.constructor === Object) {\n encodeObject(msg.c(\"y\", { xmlns: \"http://y.ninja/connector-stanza\" }), obj);\n } else if (obj.constructor === Array) {\n encodeArray(msg.c(\"y\", { xmlns: \"http://y.ninja/connector-stanza\" }), obj);\n } else {\n throw new Error(\"I can't encode this json!\");\n }\n }\n}\n","/* @flow */\nclass AbstractTransaction { //eslint-disable-line no-unused-vars\n constructor (store : OperationStore) {\n this.store = store;\n }\n *getType (id) {\n var sid = JSON.stringify(id);\n var t = this.store.initializedTypes[sid];\n if (t == null) {\n var op = yield* this.getOperation(id);\n if (op != null) {\n t = new Y[op.type].Create(op.id);\n this.store.initializedTypes[sid] = t;\n }\n }\n return t;\n }\n createType (model) {\n var sid = JSON.stringify(model.id);\n var t = new Y[model.type].Create(model.id);\n this.store.initializedTypes[sid] = t;\n return t;\n }\n // returns false if operation is not expected.\n *addOperation (op) {\n var state = yield* this.getState(op.id[0]);\n if (op.id[1] === state.clock){\n state.clock++;\n yield* this.setState(state);\n this.os.add(op);\n this.store.operationAdded(op);\n return true;\n } else if (op.id[1] < state.clock) {\n return false;\n } else {\n throw new Error(\"Operations must arrive in order!\");\n }\n }\n}\n\ntype Listener = {\n f : GeneratorFunction, // is called when all operations are available\n missing : number // number of operations that are missing\n}\n\ntype Id = [string, number];\n\nclass AbstractOperationStore { //eslint-disable-line no-unused-vars\n constructor (y) {\n this.y = y;\n // E.g. this.listenersById[id] : Array\n this.listenersById = {};\n // Execute the next time a transaction is requested\n this.listenersByIdExecuteNow = [];\n // A transaction is requested\n this.listenersByIdRequestPending = false;\n /* To make things more clear, the following naming conventions:\n * ls : we put this.listenersById on ls\n * l : Array\n * id : Id (can't use as property name)\n * sid : String (converted from id via JSON.stringify\n so we can use it as a property name)\n\n Always remember to first overwrite\n a property before you iterate over it!\n */\n // TODO: Use ES7 Weak Maps. This way types that are no longer user,\n // wont be kept in memory.\n this.initializedTypes = {};\n }\n setUserId (userId) {\n this.userId = userId;\n }\n apply (ops) {\n for (var key in ops) {\n var o = ops[key];\n var required = Y.Struct[o.struct].requiredOps(o);\n this.whenOperationsExist(required, o);\n }\n }\n // op is executed as soon as every operation requested is available.\n // Note that Transaction can (and should) buffer requests.\n whenOperationsExist (ids : Array, op : Operation) {\n if (ids.length > 0) {\n let listener : Listener = {\n op: op,\n missing: ids.length\n };\n\n for (let key in ids) {\n let id = ids[key];\n let sid = JSON.stringify(id);\n let l = this.listenersById[sid];\n if (l == null){\n l = [];\n this.listenersById[sid] = l;\n }\n l.push(listener);\n }\n } else {\n this.listenersByIdExecuteNow.push({\n op: op\n });\n }\n\n if (this.listenersByIdRequestPending){\n return;\n }\n\n this.listenersByIdRequestPending = true;\n var store = this;\n\n this.requestTransaction(function*(){\n var exeNow = store.listenersByIdExecuteNow;\n store.listenersByIdExecuteNow = [];\n\n var ls = store.listenersById;\n store.listenersById = {};\n\n store.listenersByIdRequestPending = false;\n\n for (let key in exeNow) {\n let o = exeNow[key].op;\n yield* Struct[o.struct].execute.call(this, o);\n }\n\n for (var sid in ls){\n var l = ls[sid];\n var id = JSON.parse(sid);\n if ((yield* this.getOperation(id)) == null){\n store.listenersById[sid] = l;\n } else {\n for (let key in l) {\n let listener = l[key];\n let o = listener.op;\n if (--listener.missing === 0){\n yield* Struct[o.struct].execute.call(this, o);\n }\n }\n }\n }\n });\n }\n // called by a transaction when an operation is added\n operationAdded (op) {\n var sid = JSON.stringify(op.id);\n var l = this.listenersById[sid];\n delete this.listenersById[sid];\n\n // notify whenOperation listeners (by id)\n if (l != null) {\n for (var key in l){\n var listener = l[key];\n if (--listener.missing === 0){\n this.whenOperationsExist([], listener.op);\n }\n }\n }\n // notify parent, if it has been initialized as a custom type\n var t = this.initializedTypes[JSON.stringify(op.parent)];\n if (t != null) {\n t._changed(op);\n }\n }\n removeParentListener (id, f) {\n var ls = this.parentListeners[id];\n if (ls != null) {\n this.parentListeners[id] = ls.filter(function(g){\n return (f !== g);\n });\n }\n }\n addParentListener (id, f) {\n var ls = this.parentListeners[JSON.stringify(id)];\n if (ls == null) {\n ls = [];\n this.parentListeners[JSON.stringify(id)] = ls;\n }\n ls.push(f);\n }\n}\n"],"sourceRoot":"/source/"} \ No newline at end of file