Socket
Socket
Sign inDemoInstall

@limble/limble-tree

Package Overview
Dependencies
Maintainers
2
Versions
51
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@limble/limble-tree - npm Package Compare versions

Comparing version 0.7.0 to 0.7.1

2

bundles/limble-limble-tree.umd.min.js

@@ -15,3 +15,3 @@ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators"),require("@angular/common")):"function"==typeof define&&define.amd?define("@limble/limble-tree",["exports","@angular/core","rxjs","rxjs/operators","@angular/common"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).limble=e.limble||{},e.limble["limble-tree"]={}),e.ng.core,e.rxjs,e.rxjs.operators,e.ng.common)}(this,(function(e,t,r,n,o){"use strict";

PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};Object.create;function a(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function l(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}Object.create;var d=function(){function e(){this.state="idle",this.state$=new r.BehaviorSubject(this.state)}return e.prototype.dragging=function(e){this._tempData=e,this.state="dragging",this.state$.next(this.state)},e.prototype.droppable=function(){if("dragging"!==this.state)throw new Error("Can only call `droppable` when state is `dragging`");this.state="droppable",this.state$.next(this.state)},e.prototype.notDroppable=function(){if("droppable"!==this.state)throw new Error("Can only call `notDroppable` when state is `droppable`");this.state="dragging",this.state$.next(this.state)},e.prototype.capture=function(){if("droppable"!==this.state)throw new Error("Can only move to `captured` state from `droppable` state");return this.state="captured",this.state$.next(this.state),this._tempData},e.prototype.release=function(){this._tempData=void 0,this.state="idle",this.state$.next(this.state)},e.prototype.getData=function(){return this._tempData},e.prototype.getState=function(){return this.state},e}();d.decorators=[{type:t.Injectable}],d.ctorParameters=function(){return[]};var h=function(){function e(e){this.factoryResolver=e,this.factoryResolver=e}return e.prototype.appendComponent=function(e,t,r){void 0===r&&(r=null);var n=this.factoryResolver.resolveComponentFactory(e),o=t.createComponent(n);if(null!==r){var i=t.indexOf(o.hostView);t.detach(i),t.insert(o.hostView,r)}return o},e}();h.decorators=[{type:t.Injectable}],h.ctorParameters=function(){return[{type:t.ComponentFactoryResolver}]};var p=function(){function e(e){this.dropZoneService=e,this.active=!1}return e.prototype.dragenterHandler=function(){!0!==this.active&&void 0!==this.coordinates&&this.dropZoneService.swapActiveDropZone(this.coordinates)},e}();function c(e,t){var r,n;if(e.length!==t.length)return!1;try{for(var o=a(e.entries()),i=o.next();!i.done;i=o.next()){var l=s(i.value,2),d=l[0],h=l[1],p=t[d];if(h instanceof Array&&p instanceof Array){if(!c(h,p))return!1}else if(h!==p)return!1}}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return!0}function u(e,t){return void 0!==e&&(!0===e.allowNesting||"function"==typeof e.allowNesting&&void 0!==t&&!0===e.allowNesting(t))}p.decorators=[{type:t.Component,args:[{selector:"drop-zone",template:'<div class="dropZoneContainer" (dragenter)="dragenterHandler()">\r\n <div [ngClass]="{ active: active, related: !active }"></div>\r\n</div>\r\n',styles:[".active{height:105px;border-radius:5px;background:#f0f9ff;border:2px dashed #bed2db}.active,.related{margin:10px 0;width:calc(100% - 20px);box-sizing:border-box}.related{height:30px;border-radius:5px;background:#fff6f0;border:1px dashed #dbccbe;opacity:.8}.dropZoneContainer{position:relative}"]}]}],p.ctorParameters=function(){return[{type:m}]},p.propDecorators={active:[{type:t.Input}],coordinates:[{type:t.Input}]};var v=function(){function e(e){this.data=e,this.children=[],this.parent=null}return e.prototype.isRoot=function(){return null===this.parent},e.prototype.getParent=function(){return this.parent},e.prototype.setParent=function(e){this.parent=e},e.prototype.findByCoordinates=function(e){var t,r,n=this;try{for(var o=a(e.values()),i=o.next();!i.done;i=o.next()){var s=i.value;if(void 0===(n=n.getChild(s)))throw new Error("Failed to get child. Coordinates are bad.")}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getCoordinates=function(){for(var e=[],t=this;null!==t.parent;){var r=t.getIndex();if(void 0===r)throw new Error("Could not get cursor index");e.unshift(r),t=t.parent}return e},e.prototype.getChild=function(e){return this.children[e]},e.prototype.getChildren=function(){return this.children},e.prototype.getIndex=function(){var e=this;if(null!==this.parent){var t=this.parent.children.findIndex((function(t){return t===e}));if(-1!==t)return t}},e.prototype.getDescendant=function(e){var t,r,n=this;try{for(var o=a(e),i=o.next();!i.done;i=o.next()){var s=i.value;if(void 0===(n=n.children[s]))return}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.findDescendant=function(e){var t,r;if(!0===e(this.data))return this;if(this.children.length>0)try{for(var n=a(this.children),o=n.next();!o.done;o=n.next()){var i=o.value.findDescendant(e);if(void 0!==i)return i}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},e.prototype.getAncestors=function(){for(var e=[],t=this;null!==t.parent;)e.push(t.parent),t=t.parent;return e},e.prototype.appendChild=function(e){return null!==e.getParent()&&e.remove(),e.setParent(this),this.children.push(e),e},e.prototype.insertChild=function(e,t){var r=this.children.indexOf(e);return-1===r?(null!==e.getParent()&&e.remove(),e.setParent(this),this.children.splice(t,0,e)):t>r?(this.children.splice(t,0,e),this.removeChild(r),e.setParent(this)):(e.remove(),this.children.splice(t,0,e),e.setParent(this)),e},e.prototype.removeChild=function(e){var t=this.children.splice(e,1)[0];return t.setParent(null),t},e.prototype.remove=function(){var e=this.getIndex();if(null===this.parent||void 0===e)throw new Error("can't remove root");return this.parent.removeChild(e)},e.prototype.copy=function(){var e=this.copyHelper();return e.setParent(null),e},e.prototype.copyHelper=function(){var t,r,n=new e(this.data);try{for(var o=a(this.children),i=o.next();!i.done;i=o.next()){var s=i.value;n.appendChild(s.copyHelper()).parent=n}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e}();function f(e){var t,r,n=new g(e.data);try{for(var o=a(e.getChildren()),i=o.next();!i.done;i=o.next()){var s=i.value;n.appendChild(g.fromBranch(s)).setParent(n)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n}var g=function(e){function t(t,r){void 0===r&&(r=!1);var n=e.call(this,t)||this;return n.hidden=r,n.hiddenChildren=new Map,n.children=[],n.parent=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(t,e),t.fromBranch=function(e){var t=f(e);return t.setParent(null),t},t.prototype.getHiddenChild=function(e){return this.hiddenChildren.get(e)},t.prototype.getParent=function(){return this.parent},t.prototype.addHiddenChild=function(e,t){return this.hiddenChildren.set(t,e),e.setHidden(!0),e.setParent(this),e},t.prototype.findByCoordinates=function(e,t){var r,n;void 0===t&&(t=!1);var o=this;try{for(var i=a(e.entries()),l=i.next();!l.done;l=i.next()){var d=s(l.value,2),h=d[0],p=d[1],c=void 0;if(void 0===(c=h===e.length-1&&!0===t?o.getHiddenChild(p):o.getChild(p)))throw new Error("Failed to get child. Coordinates are bad.");o=c}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return o},t.prototype.getChild=function(e){return this.children[e]},t.prototype.getIndex=function(){var e,t,r=this;if(null!==this.parent){if(!1===this.hidden){var n=this.parent.children.findIndex((function(e){return e===r}));if(-1===n)return;return n}try{for(var o=a(this.parent.hiddenChildren.entries()),i=o.next();!i.done;i=o.next()){var l=s(i.value,2),d=l[0];if(l[1]===this)return d}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}}},t.prototype.setHidden=function(e){this.hidden=e},t.prototype.isHidden=function(){return this.hidden},t.prototype.copy=function(){var e=this.copyHelper();return e.setParent(null),e},t.prototype.copyHelper=function(){var t,r,n=e.prototype.copyHelper.call(this);try{for(var o=a(this.hiddenChildren.entries()),i=o.next();!i.done;i=o.next()){var l=s(i.value,2),d=l[0],h=l[1];n.addHiddenChild(h.copyHelper(),d).parent=n}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},t}(v);function y(e,t){var r=e.getCoordinates(),n=t.getCoordinates();if(r.length>n.length)return-1;if(r.length<n.length)return 1;for(var o=r.length-1;o>=0;o--){if(r[o]>n[o])return-1;if(r[o]<n[o])return 1}return 0}var m=function(){function e(e,t){this.dragStateService=e,this.componentCreatorService=t,this.dropZoneStack=[],this.dropZoneInventory=[],this.dropZoneFamilies=[],this.visibleFamily=null,this.activeDropZone=null,this.tempFamilies=[],this.setActiveDropZone(null)}return e.prototype.addDropZone=function(e,t){if(void 0===this.dropZoneStack.find((function(t){return c(t.coordinates,e)}))){var r=new g({container:t});this.dropZoneStack.push({dropZone:r,coordinates:e})}},e.prototype.clear=function(){var e,t;if(null!==this.visibleFamily){try{for(var r=a(this.visibleFamily.members),n=r.next();!n.done;n=r.next()){n.value.data.container.clear()}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.visibleFamily=null}this.setActiveDropZone(null)},e.prototype.getActiveDropZone=function(){return this.activeDropZone},e.prototype.init=function(e,t){var r,n;this.tree=e,this.treeOptions=t,this.reset();var o=function(e){i.dropZoneInventory.find((function(t){return c(t.getCoordinates(),e.coordinates)}))||(i.dropZoneInventory.push(e.dropZone),i.addToTree(e.dropZone,e.coordinates))},i=this;try{for(var s=a(this.dropZoneStack),l=s.next();!l.done;l=s.next()){o(l.value)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}this.dropZoneStack.length=0,this.assignFamilies()},e.prototype.reset=function(){this.clear(),this.dropZoneFamilies.length=0,this.dropZoneInventory.length=0,this.tree&&(this.treeWithDropZones=g.fromBranch(this.tree))},e.prototype.restoreFamilies=function(){var e,t,r,n;if(2===this.tempFamilies.length){this.dropZoneFamilies.pop(),this.dropZoneFamilies.push(this.tempFamilies[0]);try{for(var o=a(this.tempFamilies[0].members),i=o.next();!i.done;i=o.next()){i.value.data.family=this.tempFamilies[0]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}if(null!==this.tempFamilies[1]){this.dropZoneFamilies.push(this.tempFamilies[1]);try{for(var s=a(this.tempFamilies[1].members),l=s.next();!l.done;l=s.next()){l.value.data.family=this.tempFamilies[1]}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}}}},e.prototype.showDropZoneFamily=function(e,t){var r,n,o,i,s,d;if(void 0===t&&(t={joinFamilies:!1,activateLowestInsteadOfFounder:!1}),null===this.activeDropZone||!c(this.activeDropZone.getCoordinates(),e)){if(null===this.visibleFamily&&null===this.activeDropZone||this.clear(),void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var h=this.treeWithDropZones.findByCoordinates(e,!0);if(void 0===h)throw new Error("Could not find drop zone to show");var p=h.data.family;if(!0===t.joinFamilies){var u=l(e);u[u.length-1]++;var v=this.treeWithDropZones.findByCoordinates(u,!0);if(void 0===v)throw new Error("Could not find drop zone to show");var f=v.data.family;if(void 0===p||void 0===f)throw new Error("No family");var g={founder:p.founder,members:l(p.members)};try{for(var m=a(p.members),w=m.next();!w.done;w=m.next()){(E=w.value).data.family=g,E===p.founder?this.showDropZone(E,!0):this.showDropZone(E)}}catch(e){r={error:e}}finally{try{w&&!w.done&&(n=m.return)&&n.call(m)}finally{if(r)throw r.error}}try{for(var b=a(f.members),Z=b.next();!Z.done;Z=b.next()){(E=Z.value).data.family=g,E.getCoordinates().length<v.getCoordinates().length&&(g.members.push(E),this.showDropZone(E))}}catch(e){o={error:e}}finally{try{Z&&!Z.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}this.tempFamilies=[p,f];var S=this.dropZoneFamilies.indexOf(p);this.dropZoneFamilies.splice(S,1);var C=this.dropZoneFamilies.indexOf(f);this.dropZoneFamilies.splice(C,1),this.dropZoneFamilies.push(g),this.visibleFamily=g}else{if(void 0===p)throw new Error("No family");this.visibleFamily=p;try{for(var D=a(p.members),x=D.next();!x.done;x=D.next()){var E;(E=x.value)===p.founder?this.showDropZone(E,!0):this.showDropZone(E)}}catch(e){s={error:e}}finally{try{x&&!x.done&&(d=D.return)&&d.call(D)}finally{if(s)throw s.error}}}if(!0===t.activateLowestInsteadOfFounder){var I=l(this.visibleFamily.members).sort(y).pop();if(void 0===I)throw new Error("Could not get lowest member");this.swapActiveDropZone(I.getCoordinates())}}},e.prototype.swapActiveDropZone=function(e){var t=this.getActiveDropZone();if(null===t)throw new Error("could not get active drop zone");if(null===this.visibleFamily)throw new Error("No visible family available for swapping");if(void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");if(-1===this.visibleFamily.members.findIndex((function(t){return c(t.getCoordinates(),e)})))throw new Error("failed to swap active drop zone");t.data.componentRef&&(t.data.componentRef.instance.active=!1),this.setActiveDropZone(this.treeWithDropZones.findByCoordinates(e,!0))},e.prototype.addToTree=function(e,t){if(void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var r=l(t);r.pop(),this.treeWithDropZones.findByCoordinates(r).addHiddenChild(e,t[t.length-1])},e.prototype.assignFamilies=function(){var e,t,r,n,o=l(this.dropZoneInventory),i=o.filter((function(e){var t=e.getCoordinates();return 0===t[t.length-1]||1===t.length})).sort(y),s=function(e){if(!o.includes(e))return"continue";var t={founder:e,members:[]};e.data.family=t;for(var r=l(e.getCoordinates());r.length>0;){var n=o.findIndex((function(e){return c(e.getCoordinates(),r)}));if(-1!==n){var i=o.splice(n,1)[0];t.members.push(i),i.data.family=t}r.pop(),r[r.length-1]++}d.dropZoneFamilies.push(t)},d=this;try{for(var h=a(i),p=h.next();!p.done;p=h.next()){s(p.value)}}catch(t){e={error:t}}finally{try{p&&!p.done&&(t=h.return)&&t.call(h)}finally{if(e)throw e.error}}if(0!==o.length){var u="";try{for(var v=a(o),f=v.next();!f.done;f=v.next()){var g=f.value;u+=JSON.stringify(g.getCoordinates())+", "}}catch(e){r={error:e}}finally{try{f&&!f.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}throw u=u.slice(0,u.length-2),new Error("Some zones were not assigned to a family. The orphan zones have the following coordinates: "+u)}},e.prototype.setActiveDropZone=function(e){var t;this.activeDropZone=e,null!==this.activeDropZone&&"droppable"!==this.dragStateService.getState()?this.dragStateService.droppable():null===this.activeDropZone&&"droppable"===this.dragStateService.getState()&&this.dragStateService.notDroppable(),(null===(t=this.activeDropZone)||void 0===t?void 0:t.data.componentRef)&&(this.activeDropZone.data.componentRef.instance.active=!0)},e.prototype.showDropZone=function(e,t){if(void 0===t&&(t=!1),!this.zoneIsAllowed(e))return!1;if(null===e.getParent())throw new Error("Bad family member");var r=this.componentCreatorService.appendComponent(p,e.data.container);return r.instance.active=t,r.instance.coordinates=e.getCoordinates(),!0===t&&this.setActiveDropZone(e),e.data.componentRef=r,!0},e.prototype.zoneIsAllowed=function(e){if(void 0===this.treeOptions)throw new Error("dropZoneService not initialized");var t=this.dragStateService.getData();if(void 0===t)throw new Error("Can't get dragged node");var r=e.getParent();if(null===r)throw new Error("Could not get drop zone parent");var n=e.getIndex();if(void 0===n)throw new Error("Could not get drop zone index");return!!this.treeOptions.allowDrop(t.data,r.data,n)},e}();m.decorators=[{type:t.Injectable}],m.ctorParameters=function(){return[{type:d},{type:h}]};var w=function(){function e(e,t){var n;this.treeService=e,this.changeDetectorRef=t,this.dropZoneInside$=new r.BehaviorSubject(this.dropZoneInside),this.indent=null===(n=this.treeService.treeOptions)||void 0===n?void 0:n.indent}return e.prototype.ngAfterViewInit=function(){this.dropZoneInside$.next(this.dropZoneInside),this.dropZoneInside$.complete(),this.reRender(),this.changeDetectorRef.detectChanges()},e.prototype.reRender=function(){if(void 0===this.host||void 0===this.branch)throw new Error("Failed to render limble tree branch");this.treeService.renderBranch(this.host,this.branch)},e}();w.decorators=[{type:t.Component,args:[{selector:"limble-tree-branch",template:'<div [style.marginLeft.px]="indent">\r\n <ng-template #dropZoneInside></ng-template>\r\n <span [hidden]="branch && branch.data.collapsed" class="limble-child-nodes">\r\n <ng-template #host></ng-template>\r\n </span>\r\n</div>\r\n',styles:["./limble-tree-branch.component.scss"]}]}],w.ctorParameters=function(){return[{type:C},{type:t.ChangeDetectorRef}]},w.propDecorators={branch:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.ViewChild,args:["dropZoneInside",{read:t.ViewContainerRef}]}],dropZoneInside$:[{type:t.Output}]};var b=function(){function e(){this.globalDrag$=r.fromEvent(document,"drag"),this.scrolling=!1}return e.prototype.addScrolling=function(){var e,t,r,o,i,a,s,l=this;void 0===this.globalDragSubscription&&(this.globalDragSubscription=this.globalDrag$.pipe(n.filter((function(n){return e=document.documentElement.clientHeight,t=Math.min(.08*e,150),r=t,o=e-t,i=n.clientY<r,a=n.clientY>o,i||a})),n.throttleTime(25)).subscribe((function(n){var d=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.body.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight)-e,h=window.pageYOffset,p=h<d,c=h;if(i&&h>0)c-=75*((r-n.clientY)/t);else if(a&&p){c+=75*((n.clientY-o)/t)}(c=Math.max(0,Math.min(d,c)))!==h&&(window.scrollTo({top:c}),l.scrolling=!0,clearTimeout(s),s=setTimeout((function(){l.scrolling=!1}),100))})))},e.prototype.removeScrolling=function(){void 0!==this.globalDragSubscription&&this.globalDragSubscription.unsubscribe()},e}();b.decorators=[{type:t.Injectable}],b.ctorParameters=function(){return[]};var Z=function(){function e(e,t,r,n,o,i){this.componentCreatorService=e,this.changeDetectorRef=t,this.dragStateService=r,this.dropZoneService=n,this.treeService=o,this.globalEventsService=i}return e.prototype.ngAfterViewInit=function(){this.registerDropZones(),this.renderSelf(),this.renderChildren(),this.checkForHandle(),this.changeDetectorRef.detectChanges()},e.prototype.dragstartHandler=function(e){var t,r=this;if(e.stopPropagation(),null===e.dataTransfer||void 0===this.branch)throw new Error("failed to run dragstartHandler");var n=e.target;"LIMBLE-TREE-NODE"===(null===(t=n.parentElement)||void 0===t?void 0:t.tagName)&&(e.dataTransfer.effectAllowed="move",this.dragStateService.dragging(this.branch),setTimeout((function(){if(n.classList.add("dragging"),void 0===r.branch)throw new Error("Could not show surrounding drop zones");r.dropZoneService.showDropZoneFamily(r.branch.getCoordinates(),{joinFamilies:!0})})))},e.prototype.dragendHandler=function(e){var t=this;if(e.stopPropagation(),e.target.classList.remove("dragging"),void 0===this.branch)throw new Error("failed to get current branch in dragendHandler");if("captured"!==this.dragStateService.getState())return this.dragStateService.release(),this.dropZoneService.clear(),void this.dropZoneService.restoreFamilies();this.dragStateService.state$.pipe(n.take(2)).subscribe((function(e){"captured"===e&&void 0!==t.branch&&(t.treeService.remove(t.branch),t.dragStateService.release())}))},e.prototype.dragoverHandler=function(e){var t,r,n;if(!0!==this.globalEventsService.scrolling){if(void 0===this.branch)throw new Error("Can't get current branch during dragover event");var o=this.dragStateService.getData();if(void 0!==o&&o!==this.branch&&!this.branch.getAncestors().includes(o))if(!0!==this.treeService.getPlaceholder()||void 0===this.dropZoneAbove){var i,a=e.currentTarget.offsetHeight/3,s=2*a,d=this.branch.getParent(),h=!0;if(null!==(null==d?void 0:d.data)&&(i=null==d?void 0:d.data,h=u(this.treeService.treeOptions,i)),e.offsetY<a&&void 0!==this.dropZoneAbove&&(null===(t=this.dropZoneService.getActiveDropZone())||void 0===t?void 0:t.data.container)!==this.dropZoneAbove&&h){p=l(this.branch.getCoordinates());this.dropZoneService.showDropZoneFamily(p,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<s&&void 0!==this.dropZoneInside&&(null===(r=this.dropZoneService.getActiveDropZone())||void 0===r?void 0:r.data.container)!==this.dropZoneInside){(p=l(this.branch.getCoordinates())).push(0),this.dropZoneService.showDropZoneFamily(p)}else if(e.offsetY>=s&&void 0!==this.dropZoneBelow&&(null===(n=this.dropZoneService.getActiveDropZone())||void 0===n?void 0:n.data.container)!==this.dropZoneBelow&&0===this.branch.getChildren().length&&h){(p=l(this.branch.getCoordinates()))[p.length-1]++,this.dropZoneService.showDropZoneFamily(p)}}else{var p=l(this.branch.getCoordinates());this.dropZoneService.showDropZoneFamily(p)}}},e.prototype.renderSelf=function(){var e;if(void 0===this.nodeHost||void 0===this.branch)throw new Error("Failed to render tree node");var t=this.branch.data.component;if(void 0===t&&(t=null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.defaultComponent),void 0===t)throw new Error("limbleTree requires a component to render");var r=this.componentCreatorService.appendComponent(t.class,this.nodeHost);for(var n in r.instance.nodeData=this.branch.data,t.bindings)r.instance[n]=t.bindings[n]},e.prototype.renderChildren=function(){var e,t=this;if(void 0!==this.children&&!0!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.listMode)){if(void 0===this.branch)throw new Error("branch is undefined");var r=this.componentCreatorService.appendComponent(w,this.children);r.instance.branch=this.branch,u(this.treeService.treeOptions,this.branch.data)&&!0==!this.treeService.getPlaceholder()&&r.instance.dropZoneInside$.subscribe((function(e){var r;if(void 0!==e&&!1!==(null===(r=t.treeService.treeOptions)||void 0===r?void 0:r.allowDragging)){if(t.dropZoneInside=e,void 0===t.branch)throw new Error("failed to register inner drop zone");var n=t.branch.getCoordinates();n.push(0),t.dropZoneService.addDropZone(n,t.dropZoneInside)}}))}},e.prototype.registerDropZones=function(){var e;if(!1!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.allowDragging)){if(void 0===this.dropZoneAbove||void 0===this.dropZoneBelow||void 0===this.branch)throw new Error("failed to register drop zones");var t,r=this.branch.getParent();if(null===(null==r?void 0:r.data)||(t=null==r?void 0:r.data,u(this.treeService.treeOptions,t))){var n=this.branch.getCoordinates(),o=l(n);if(this.dropZoneService.addDropZone(o,this.dropZoneAbove),!0!==this.treeService.getPlaceholder()){var i=l(n);i[i.length-1]++,this.dropZoneService.addDropZone(i,this.dropZoneBelow)}}}},e.prototype.checkForHandle=function(){var e,t=this;if(void 0!==this.draggableDiv){var r,o,i=this.draggableDiv.nativeElement,a=i.querySelector(".limble-tree-handle");r=this.treeService.treeOptions,o=null===(e=this.branch)||void 0===e?void 0:e.data,void 0===r||!0!==r.allowDragging&&("function"!=typeof r.allowDragging||void 0===o||!0!==r.allowDragging(o))?i.setAttribute("draggable","false"):null===a?i.setAttribute("draggable","true"):a.addEventListener("mousedown",(function(){i.setAttribute("draggable","true");var e=t.dragStateService.state$.pipe(n.filter((function(e){return"dragging"===e})),n.first());t.dragStateService.state$.pipe(n.skipUntil(e),n.filter((function(e){return"idle"===e})),n.first()).subscribe((function(){i.setAttribute("draggable","false")}))}))}},e}();Z.decorators=[{type:t.Component,args:[{selector:"limble-tree-node",template:'<ng-template #dropZoneAbove></ng-template>\r\n<div\r\n (dragstart)="dragstartHandler($event)"\r\n (dragend)="dragendHandler($event)"\r\n class="limble-parent-container"\r\n #draggableDiv\r\n>\r\n <div (dragover)="dragoverHandler($event)">\r\n <ng-template #nodeHost></ng-template>\r\n </div>\r\n <ng-template #children></ng-template>\r\n</div>\r\n<ng-template #dropZoneBelow></ng-template>\r\n',styles:[".dragging{transition:transform .01s;transform:translateX(-9999px);height:0;margin:0;border:0}"]}]}],Z.ctorParameters=function(){return[{type:h},{type:t.ChangeDetectorRef},{type:d},{type:m},{type:C},{type:b}]},Z.propDecorators={branch:[{type:t.Input}],nodeHost:[{type:t.ViewChild,args:["nodeHost",{read:t.ViewContainerRef}]}],dropZoneAbove:[{type:t.ViewChild,args:["dropZoneAbove",{read:t.ViewContainerRef}]}],dropZoneBelow:[{type:t.ViewChild,args:["dropZoneBelow",{read:t.ViewContainerRef}]}],children:[{type:t.ViewChild,args:["children",{read:t.ViewContainerRef}]}],draggableDiv:[{type:t.ViewChild,args:["draggableDiv",{read:t.ElementRef}]}]};var S=function(){};S.decorators=[{type:t.Component,args:[{selector:"limble-tree-placeholder",template:'<div class="placeholder"></div>\n',styles:[".placeholder{width:100%;height:20px}"]}]}];var C=function(){function e(e,t){this.componentCreatorService=e,this.dropZoneService=t,this.changes$=new r.ReplaySubject(1),this.drops$=new r.ReplaySubject(1),this.treeModel=new v(null),this.placeholder=!1}return e.prototype.init=function(e,t,r,n,o){if(this.host=e,this.uncutData=t,this.treeOptions=this.processOptions(r,n,o),!0===this.treeOptions.listMode){var i=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(i)&&(i=0);var a=i+this.treeOptions.itemsPerPage;this.treeData=this.uncutData.slice(i,a)}else this.treeData=this.uncutData;this.render()},e.prototype.render=function(){var e,t,r,n,o=this;if(void 0===this.host||void 0===this.treeData||void 0===this.treeOptions)throw new Error("TreeModel not initialized");if(this.host.clear(),this.treeModel=new v(null),this.dropZoneService.reset(),0===this.treeData.length){this.placeholder=!0;var i=new v({component:{class:S}});this.treeModel.appendChild(i),this.componentCreatorService.appendComponent(Z,this.host).instance.branch=i}else{try{for(var s=a(this.treeData),l=s.next();!l.done;l=s.next()){var d=l.value;i=new v(d);this.treeModel.appendChild(i)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}try{for(var h=a(this.treeModel.getChildren()),p=h.next();!p.done;p=h.next()){i=p.value;this.componentCreatorService.appendComponent(Z,this.host).instance.branch=i}}catch(e){r={error:e}}finally{try{p&&!p.done&&(n=h.return)&&n.call(h)}finally{if(r)throw r.error}}}setTimeout((function(){if(void 0===o.treeOptions)throw new Error("TreeModel not initialized");o.dropZoneService.init(o.treeModel,o.treeOptions),o.changes$.next(null)}))},e.prototype.renderBranch=function(e,t){var r,n,o;if(void 0===this.treeModel)throw new Error("TreeModel not initialized");e.clear();try{for(var i=a(null!==(o=t.data.nodes)&&void 0!==o?o:[]),s=i.next();!s.done;s=i.next()){var l=s.value,d=new v(l);t.appendChild(d),this.componentCreatorService.appendComponent(Z,e).instance.branch=d}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},e.prototype.processOptions=function(e,t,r){var n,o,i,a,s;return void 0===e&&(e={}),void 0===t&&(t=1/0),void 0===r&&(r=1),!0===e.listMode&&void 0!==e.allowNesting&&!1!==e.allowNesting&&console.warn("The value of `allowNesting` will be ignored; it must be false when `listMode` is true"),{defaultComponent:e.defaultComponent,indent:null!==(n=e.indent)&&void 0!==n?n:45,allowNesting:!0!==e.listMode&&(null===(o=e.allowNesting)||void 0===o||o),allowDragging:null===(i=e.allowDragging)||void 0===i||i,allowDrop:null!==(a=e.allowDrop)&&void 0!==a?a:function(){return!0},listMode:null!==(s=e.listMode)&&void 0!==s&&s,itemsPerPage:e.listMode?t:void 0,page:e.listMode?r:void 0}},e.prototype.drop=function(e,t){var r,n,o=e.getParent(),i=e.getIndex();if(void 0===i)throw new Error("Cannot move the hidden root node");if(!0===this.placeholder?(r=[],n=0,this.treeModel.removeChild(0),this.placeholder=!1):n=(r=l(t)).pop(),void 0===n)throw new Error("target coordinates are empty");var a=this.treeModel.getDescendant(r);if(void 0===a)throw new Error("could not get to target");a.insertChild(e,n),this.rebuildTreeData(),this.drops$.next({target:e.data,oldParent:null==o?void 0:o.data,oldIndex:i,newParent:a.data,newIndex:n}),this.render()},e.prototype.remove=function(e){e.remove(),this.rebuildTreeData(),this.render()},e.prototype.rebuildTreeData=function(){var e,t,r;if(void 0===this.uncutData||void 0===this.treeData||void 0===this.treeOptions)throw new Error("Tree data not initialized");this.treeData.length=0;try{for(var n=a(this.treeModel.getChildren()),o=n.next();!o.done;o=n.next()){var i=o.value;this.treeData.push(this.rebuildBranch(i))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}if(!0===this.treeOptions.listMode){var s=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(s)&&(s=0);var d=s+this.treeOptions.itemsPerPage;(r=this.uncutData).splice.apply(r,l([s,this.treeOptions.itemsPerPage],this.treeData)),this.treeData=this.uncutData.slice(s,d)}else this.uncutData=this.treeData},e.prototype.rebuildBranch=function(e){var t,r,n=e.data;n.nodes=[];try{for(var o=a(e.getChildren()),i=o.next();!i.done;i=o.next()){var s=i.value;n.nodes.push(this.rebuildBranch(s))}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getPlaceholder=function(){return this.placeholder},e}();C.decorators=[{type:t.Injectable}],C.ctorParameters=function(){return[{type:h},{type:m}]};var D=function(){function e(e,n,o,i){var a=this;this.treeService=e,this.dropZoneService=n,this.dragStateService=o,this.globalEventsService=i,this.treeChange=new t.EventEmitter,this.treeDrop=new t.EventEmitter,this.dropZoneInside$=new r.BehaviorSubject(this.dropZoneInside),this.changesSubscription=this.treeService.changes$.subscribe((function(){a.treeChange.emit()})),this.dropSubscription=this.treeService.drops$.subscribe((function(e){a.treeDrop.emit(e)}))}return e.prototype.ngAfterViewInit=function(){var e;this.dropZoneInside$.next(this.dropZoneInside),this.dropZoneInside$.complete(),!0===(null===(e=this.options)||void 0===e?void 0:e.listMode)||void 0===this.itemsPerPage&&void 0===this.page||console.warn("pagination is only allowed in listMode; `itemsPerPage` and `page` inputs will be ignored"),this.update()},e.prototype.ngOnChanges=function(){void 0!==this.host&&void 0!==this.data&&this.update()},e.prototype.update=function(){if(void 0===this.host)throw new Error("Failed to render limble tree. Failure occurred at root.");if(void 0===this.data)throw new Error("limbleTree requires a data object");this.treeService.init(this.host,this.data,this.options,this.itemsPerPage,this.page),this.globalEventsService.addScrolling()},e.prototype.dragoverHandler=function(e){null!==e.dataTransfer&&(e.stopPropagation(),e.preventDefault(),e.dataTransfer.dropEffect="move")},e.prototype.dragleaveHandler=function(e){var t=e.currentTarget,r=e.relatedTarget;t instanceof Node&&r instanceof Node&&!1===function(e,t){if(e===t)return!0;for(var r=t.parentNode;r!==document;){if(null===r)return;if(r===e)return!0;r=r.parentNode}return!1}(t,r)&&this.dropZoneService.clear()},e.prototype.dropHandler=function(e){e.stopPropagation();var t=this.dropZoneService.getActiveDropZone();if("droppable"===this.dragStateService.getState()){if(null===t)throw new Error("failed to get active drop zone at drop handler");var r=this.dragStateService.capture();if(void 0===r)throw new Error("failed to get current branch in dragendHandler");this.dropZoneService.clear(),this.treeService.drop(r,t.getCoordinates())}},e.prototype.ngOnDestroy=function(){this.changesSubscription.unsubscribe(),this.dropSubscription.unsubscribe(),this.globalEventsService.removeScrolling()},e}();D.decorators=[{type:t.Component,args:[{selector:"limble-tree-root",template:'<div\r\n (dragover)="dragoverHandler($event)"\r\n (dragleave)="dragleaveHandler($event)"\r\n (drop)="dropHandler($event)"\r\n>\r\n <ng-template #dropZoneInside></ng-template>\r\n <ng-template #host></ng-template>\r\n</div>\r\n',providers:[C,m],styles:[""]}]}],D.ctorParameters=function(){return[{type:C},{type:m},{type:d},{type:b}]},D.propDecorators={data:[{type:t.Input}],options:[{type:t.Input}],itemsPerPage:[{type:t.Input}],page:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.ViewChild,args:["dropZoneInside",{read:t.ViewContainerRef}]}],dropZoneInside$:[{type:t.Output}],treeChange:[{type:t.Output}],treeDrop:[{type:t.Output}]};var x=function(){};x.decorators=[{type:t.NgModule,args:[{declarations:[w,p,Z,D,S],imports:[o.CommonModule],exports:[D],providers:[h,d,b]}]}],e.LimbleTreeModule=x,e.LimbleTreeRootComponent=D,e.ɵa=C,e.ɵb=h,e.ɵc=m,e.ɵd=d,e.ɵe=b,e.ɵf=w,e.ɵg=p,e.ɵh=Z,e.ɵi=S,Object.defineProperty(e,"__esModule",{value:!0})}));
***************************************************************************** */var i=function(e,t){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};Object.create;function a(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function s(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,i=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function l(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(s(arguments[t]));return e}Object.create;var d=function(){function e(){this.state="idle",this.state$=new r.BehaviorSubject(this.state)}return e.prototype.dragging=function(e){this._tempData=e,this.state="dragging",this.state$.next(this.state)},e.prototype.droppable=function(){if("dragging"!==this.state)throw new Error("Can only call `droppable` when state is `dragging`");this.state="droppable",this.state$.next(this.state)},e.prototype.notDroppable=function(){if("droppable"!==this.state)throw new Error("Can only call `notDroppable` when state is `droppable`");this.state="dragging",this.state$.next(this.state)},e.prototype.capture=function(){if("droppable"!==this.state)throw new Error("Can only move to `captured` state from `droppable` state");return this.state="captured",this.state$.next(this.state),this._tempData},e.prototype.release=function(){this._tempData=void 0,this.state="idle",this.state$.next(this.state)},e.prototype.getData=function(){return this._tempData},e.prototype.getState=function(){return this.state},e}();d.decorators=[{type:t.Injectable}],d.ctorParameters=function(){return[]};var h=function(){function e(e){this.factoryResolver=e,this.factoryResolver=e}return e.prototype.appendComponent=function(e,t,r){void 0===r&&(r=null);var n=this.factoryResolver.resolveComponentFactory(e),o=t.createComponent(n);if(null!==r){var i=t.indexOf(o.hostView);t.detach(i),t.insert(o.hostView,r)}return o},e}();h.decorators=[{type:t.Injectable}],h.ctorParameters=function(){return[{type:t.ComponentFactoryResolver}]};var p=function(){function e(e){this.dropZoneService=e,this.active=!1}return e.prototype.dragenterHandler=function(){!0!==this.active&&void 0!==this.coordinates&&this.dropZoneService.swapActiveDropZone(this.coordinates)},e}();function c(e,t){var r,n;if(e.length!==t.length)return!1;try{for(var o=a(e.entries()),i=o.next();!i.done;i=o.next()){var l=s(i.value,2),d=l[0],h=l[1],p=t[d];if(h instanceof Array&&p instanceof Array){if(!c(h,p))return!1}else if(h!==p)return!1}}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return!0}function u(e,t){return void 0!==e&&(!0===e.allowNesting||"function"==typeof e.allowNesting&&void 0!==t&&!0===e.allowNesting(t))}p.decorators=[{type:t.Component,args:[{selector:"drop-zone",template:'<div class="dropZoneContainer" (dragenter)="dragenterHandler()">\r\n <div [ngClass]="{ active: active, related: !active }"></div>\r\n</div>\r\n',styles:[".active{height:105px;border-radius:5px;background:#f0f9ff;border:2px dashed #bed2db}.active,.related{margin:10px 0;width:calc(100% - 20px);box-sizing:border-box}.related{height:30px;border-radius:5px;background:#fff6f0;border:1px dashed #dbccbe;opacity:.8}.dropZoneContainer{position:relative}"]}]}],p.ctorParameters=function(){return[{type:m}]},p.propDecorators={active:[{type:t.Input}],coordinates:[{type:t.Input}]};var v=function(){function e(e){this.data=e,this.children=[],this.parent=null}return e.prototype.isRoot=function(){return null===this.parent},e.prototype.getParent=function(){return this.parent},e.prototype.setParent=function(e){this.parent=e},e.prototype.findByCoordinates=function(e){var t,r,n=this;try{for(var o=a(e.values()),i=o.next();!i.done;i=o.next()){var s=i.value;if(void 0===(n=n.getChild(s)))throw new Error("Failed to get child. Coordinates are bad.")}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getCoordinates=function(){for(var e=[],t=this;null!==t.parent;){var r=t.getIndex();if(void 0===r)throw new Error("Could not get cursor index");e.unshift(r),t=t.parent}return e},e.prototype.getChild=function(e){return this.children[e]},e.prototype.getChildren=function(){return this.children},e.prototype.getIndex=function(){var e=this;if(null!==this.parent){var t=this.parent.children.findIndex((function(t){return t===e}));if(-1!==t)return t}},e.prototype.getDescendant=function(e){var t,r,n=this;try{for(var o=a(e),i=o.next();!i.done;i=o.next()){var s=i.value;if(void 0===(n=n.children[s]))return}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.findDescendant=function(e){var t,r;if(!0===e(this.data))return this;if(this.children.length>0)try{for(var n=a(this.children),o=n.next();!o.done;o=n.next()){var i=o.value.findDescendant(e);if(void 0!==i)return i}}catch(e){t={error:e}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}},e.prototype.getAncestors=function(){for(var e=[],t=this;null!==t.parent;)e.push(t.parent),t=t.parent;return e},e.prototype.appendChild=function(e){return null!==e.getParent()&&e.remove(),e.setParent(this),this.children.push(e),e},e.prototype.insertChild=function(e,t){var r=this.children.indexOf(e);return-1===r?(null!==e.getParent()&&e.remove(),e.setParent(this),this.children.splice(t,0,e)):t>r?(this.children.splice(t,0,e),this.removeChild(r),e.setParent(this)):(e.remove(),this.children.splice(t,0,e),e.setParent(this)),e},e.prototype.removeChild=function(e){var t=this.children.splice(e,1)[0];return t.setParent(null),t},e.prototype.remove=function(){var e=this.getIndex();if(null===this.parent||void 0===e)throw new Error("can't remove root");return this.parent.removeChild(e)},e.prototype.copy=function(){var e=this.copyHelper();return e.setParent(null),e},e.prototype.copyHelper=function(){var t,r,n=new e(this.data);try{for(var o=a(this.children),i=o.next();!i.done;i=o.next()){var s=i.value;n.appendChild(s.copyHelper()).parent=n}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e}();function f(e){var t,r,n=new g(e.data);try{for(var o=a(e.getChildren()),i=o.next();!i.done;i=o.next()){var s=i.value;n.appendChild(g.fromBranch(s)).setParent(n)}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n}var g=function(e){function t(t,r){void 0===r&&(r=!1);var n=e.call(this,t)||this;return n.hidden=r,n.hiddenChildren=new Map,n.children=[],n.parent=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function r(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}(t,e),t.fromBranch=function(e){var t=f(e);return t.setParent(null),t},t.prototype.getHiddenChild=function(e){return this.hiddenChildren.get(e)},t.prototype.getParent=function(){return this.parent},t.prototype.addHiddenChild=function(e,t){return this.hiddenChildren.set(t,e),e.setHidden(!0),e.setParent(this),e},t.prototype.findByCoordinates=function(e,t){var r,n;void 0===t&&(t=!1);var o=this;try{for(var i=a(e.entries()),l=i.next();!l.done;l=i.next()){var d=s(l.value,2),h=d[0],p=d[1],c=void 0;if(void 0===(c=h===e.length-1&&!0===t?o.getHiddenChild(p):o.getChild(p)))throw new Error("Failed to get child. Coordinates are bad.");o=c}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return o},t.prototype.getChild=function(e){return this.children[e]},t.prototype.getIndex=function(){var e,t,r=this;if(null!==this.parent){if(!1===this.hidden){var n=this.parent.children.findIndex((function(e){return e===r}));if(-1===n)return;return n}try{for(var o=a(this.parent.hiddenChildren.entries()),i=o.next();!i.done;i=o.next()){var l=s(i.value,2),d=l[0];if(l[1]===this)return d}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}}},t.prototype.setHidden=function(e){this.hidden=e},t.prototype.isHidden=function(){return this.hidden},t.prototype.copy=function(){var e=this.copyHelper();return e.setParent(null),e},t.prototype.copyHelper=function(){var t,r,n=e.prototype.copyHelper.call(this);try{for(var o=a(this.hiddenChildren.entries()),i=o.next();!i.done;i=o.next()){var l=s(i.value,2),d=l[0],h=l[1];n.addHiddenChild(h.copyHelper(),d).parent=n}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},t}(v);function y(e,t){var r=e.getCoordinates(),n=t.getCoordinates();if(r.length>n.length)return-1;if(r.length<n.length)return 1;for(var o=r.length-1;o>=0;o--){if(r[o]>n[o])return-1;if(r[o]<n[o])return 1}return 0}var m=function(){function e(e,t){this.dragStateService=e,this.componentCreatorService=t,this.dropZoneStack=[],this.dropZoneInventory=[],this.dropZoneFamilies=[],this.visibleFamily=null,this.activeDropZone=null,this.tempFamilies=[],this.setActiveDropZone(null)}return e.prototype.addDropZone=function(e,t){if(void 0===this.dropZoneStack.find((function(t){return c(t.coordinates,e)}))){var r=new g({container:t});this.dropZoneStack.push({dropZone:r,coordinates:e})}},e.prototype.clear=function(){var e,t;if(null!==this.visibleFamily){try{for(var r=a(this.visibleFamily.members),n=r.next();!n.done;n=r.next()){n.value.data.container.clear()}}catch(t){e={error:t}}finally{try{n&&!n.done&&(t=r.return)&&t.call(r)}finally{if(e)throw e.error}}this.visibleFamily=null}this.setActiveDropZone(null)},e.prototype.getActiveDropZone=function(){return this.activeDropZone},e.prototype.init=function(e,t){var r,n;this.tree=e,this.treeOptions=t,this.reset();var o=function(e){i.dropZoneInventory.find((function(t){return c(t.getCoordinates(),e.coordinates)}))||(i.dropZoneInventory.push(e.dropZone),i.addToTree(e.dropZone,e.coordinates))},i=this;try{for(var s=a(this.dropZoneStack),l=s.next();!l.done;l=s.next()){o(l.value)}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}this.dropZoneStack.length=0,this.assignFamilies()},e.prototype.reset=function(){this.clear(),this.dropZoneFamilies.length=0,this.dropZoneInventory.length=0,this.tree&&(this.treeWithDropZones=g.fromBranch(this.tree))},e.prototype.restoreFamilies=function(){var e,t,r,n;if(2===this.tempFamilies.length){this.dropZoneFamilies.pop(),this.dropZoneFamilies.push(this.tempFamilies[0]);try{for(var o=a(this.tempFamilies[0].members),i=o.next();!i.done;i=o.next()){i.value.data.family=this.tempFamilies[0]}}catch(t){e={error:t}}finally{try{i&&!i.done&&(t=o.return)&&t.call(o)}finally{if(e)throw e.error}}if(null!==this.tempFamilies[1]){this.dropZoneFamilies.push(this.tempFamilies[1]);try{for(var s=a(this.tempFamilies[1].members),l=s.next();!l.done;l=s.next()){l.value.data.family=this.tempFamilies[1]}}catch(e){r={error:e}}finally{try{l&&!l.done&&(n=s.return)&&n.call(s)}finally{if(r)throw r.error}}}}},e.prototype.showDropZoneFamily=function(e,t){var r,n,o,i,s,d;if(void 0===t&&(t={joinFamilies:!1,activateLowestInsteadOfFounder:!1}),null===this.activeDropZone||!c(this.activeDropZone.getCoordinates(),e)){if(null===this.visibleFamily&&null===this.activeDropZone||this.clear(),void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var h=this.treeWithDropZones.findByCoordinates(e,!0);if(void 0===h)throw new Error("Could not find drop zone to show");var p=h.data.family;if(!0===t.joinFamilies){var u=l(e);u[u.length-1]++;var v=this.treeWithDropZones.findByCoordinates(u,!0);if(void 0===v)throw new Error("Could not find drop zone to show");var f=v.data.family;if(void 0===p||void 0===f)throw new Error("No family");var g={founder:p.founder,members:l(p.members)};try{for(var m=a(p.members),w=m.next();!w.done;w=m.next()){(E=w.value).data.family=g,E===p.founder?this.showDropZone(E,!0):this.showDropZone(E)}}catch(e){r={error:e}}finally{try{w&&!w.done&&(n=m.return)&&n.call(m)}finally{if(r)throw r.error}}try{for(var b=a(f.members),Z=b.next();!Z.done;Z=b.next()){(E=Z.value).data.family=g,E.getCoordinates().length<v.getCoordinates().length&&(g.members.push(E),this.showDropZone(E))}}catch(e){o={error:e}}finally{try{Z&&!Z.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}this.tempFamilies=[p,f];var S=this.dropZoneFamilies.indexOf(p);this.dropZoneFamilies.splice(S,1);var C=this.dropZoneFamilies.indexOf(f);this.dropZoneFamilies.splice(C,1),this.dropZoneFamilies.push(g),this.visibleFamily=g}else{if(void 0===p)throw new Error("No family");this.visibleFamily=p;try{for(var D=a(p.members),x=D.next();!x.done;x=D.next()){var E;(E=x.value)===p.founder?this.showDropZone(E,!0):this.showDropZone(E)}}catch(e){s={error:e}}finally{try{x&&!x.done&&(d=D.return)&&d.call(D)}finally{if(s)throw s.error}}}if(!0===t.activateLowestInsteadOfFounder){var I=l(this.visibleFamily.members).sort(y).pop();if(void 0===I)throw new Error("Could not get lowest member");this.swapActiveDropZone(I.getCoordinates())}}},e.prototype.swapActiveDropZone=function(e){var t=this.getActiveDropZone();if(null===t)throw new Error("could not get active drop zone");if(null===this.visibleFamily)throw new Error("No visible family available for swapping");if(void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");if(-1===this.visibleFamily.members.findIndex((function(t){return c(t.getCoordinates(),e)})))throw new Error("failed to swap active drop zone");t.data.componentRef&&(t.data.componentRef.instance.active=!1),this.setActiveDropZone(this.treeWithDropZones.findByCoordinates(e,!0))},e.prototype.addToTree=function(e,t){if(void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var r=l(t);r.pop(),this.treeWithDropZones.findByCoordinates(r).addHiddenChild(e,t[t.length-1])},e.prototype.assignFamilies=function(){var e,t,r,n,o=l(this.dropZoneInventory),i=o.filter((function(e){var t=e.getCoordinates();return 0===t[t.length-1]||1===t.length})).sort(y),s=function(e){if(!o.includes(e))return"continue";var t={founder:e,members:[]};e.data.family=t;for(var r=l(e.getCoordinates());r.length>0;){var n=o.findIndex((function(e){return c(e.getCoordinates(),r)}));if(-1!==n){var i=o.splice(n,1)[0];t.members.push(i),i.data.family=t}r.pop(),r[r.length-1]++}d.dropZoneFamilies.push(t)},d=this;try{for(var h=a(i),p=h.next();!p.done;p=h.next()){s(p.value)}}catch(t){e={error:t}}finally{try{p&&!p.done&&(t=h.return)&&t.call(h)}finally{if(e)throw e.error}}if(0!==o.length){var u="";try{for(var v=a(o),f=v.next();!f.done;f=v.next()){var g=f.value;u+=JSON.stringify(g.getCoordinates())+", "}}catch(e){r={error:e}}finally{try{f&&!f.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}throw u=u.slice(0,u.length-2),new Error("Some zones were not assigned to a family. The orphan zones have the following coordinates: "+u)}},e.prototype.setActiveDropZone=function(e){var t;this.activeDropZone=e,null!==this.activeDropZone&&"droppable"!==this.dragStateService.getState()?this.dragStateService.droppable():null===this.activeDropZone&&"droppable"===this.dragStateService.getState()&&this.dragStateService.notDroppable(),(null===(t=this.activeDropZone)||void 0===t?void 0:t.data.componentRef)&&(this.activeDropZone.data.componentRef.instance.active=!0)},e.prototype.showDropZone=function(e,t){if(void 0===t&&(t=!1),!this.zoneIsAllowed(e))return!1;if(null===e.getParent())throw new Error("Bad family member");var r=this.componentCreatorService.appendComponent(p,e.data.container);return r.instance.active=t,r.instance.coordinates=e.getCoordinates(),!0===t&&this.setActiveDropZone(e),e.data.componentRef=r,!0},e.prototype.zoneIsAllowed=function(e){if(void 0===this.treeOptions)throw new Error("dropZoneService not initialized");var t=this.dragStateService.getData();if(void 0===t)throw new Error("Can't get dragged node");var r=e.getParent();if(null===r)throw new Error("Could not get drop zone parent");var n=e.getIndex();if(void 0===n)throw new Error("Could not get drop zone index");return!!this.treeOptions.allowDrop(t.data,r.data,n)},e}();m.decorators=[{type:t.Injectable}],m.ctorParameters=function(){return[{type:d},{type:h}]};var w=function(){function e(e,t){var n;this.treeService=e,this.changeDetectorRef=t,this.dropZoneInside$=new r.BehaviorSubject(this.dropZoneInside),this.indent=null===(n=this.treeService.treeOptions)||void 0===n?void 0:n.indent}return e.prototype.ngAfterViewInit=function(){this.dropZoneInside$.next(this.dropZoneInside),this.dropZoneInside$.complete(),this.reRender(),this.changeDetectorRef.detectChanges()},e.prototype.reRender=function(){if(void 0===this.host||void 0===this.branch)throw new Error("Failed to render limble tree branch");this.treeService.renderBranch(this.host,this.branch)},e}();w.decorators=[{type:t.Component,args:[{selector:"limble-tree-branch",template:'<div [style.marginLeft.px]="indent">\r\n <ng-template #dropZoneInside></ng-template>\r\n <span [hidden]="branch && branch.data.collapsed" class="limble-child-nodes">\r\n <ng-template #host></ng-template>\r\n </span>\r\n</div>\r\n',styles:["./limble-tree-branch.component.scss"]}]}],w.ctorParameters=function(){return[{type:C},{type:t.ChangeDetectorRef}]},w.propDecorators={branch:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.ViewChild,args:["dropZoneInside",{read:t.ViewContainerRef}]}],dropZoneInside$:[{type:t.Output}]};var b=function(){function e(){this.globalDrag$=r.fromEvent(document,"drag"),this.scrolling=!1}return e.prototype.addScrolling=function(){var e,t,r,o,i,a,s,l=this;void 0===this.globalDragSubscription&&(this.globalDragSubscription=this.globalDrag$.pipe(n.filter((function(n){return e=document.documentElement.clientHeight,t=Math.min(.08*e,150),r=t,o=e-t,i=n.clientY<r,a=n.clientY>o,i||a})),n.throttleTime(25)).subscribe((function(n){var d=Math.max(document.body.scrollHeight,document.body.offsetHeight,document.body.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight,document.documentElement.clientHeight)-e,h=window.pageYOffset,p=h<d,c=h;if(i&&h>0)c-=75*((r-n.clientY)/t);else if(a&&p){c+=75*((n.clientY-o)/t)}(c=Math.max(0,Math.min(d,c)))!==h&&(window.scrollTo({top:c}),l.scrolling=!0,clearTimeout(s),s=setTimeout((function(){l.scrolling=!1}),100))})))},e.prototype.removeScrolling=function(){void 0!==this.globalDragSubscription&&this.globalDragSubscription.unsubscribe()},e}();b.decorators=[{type:t.Injectable}],b.ctorParameters=function(){return[]};var Z=function(){function e(e,t,r,n,o,i){this.componentCreatorService=e,this.changeDetectorRef=t,this.dragStateService=r,this.dropZoneService=n,this.treeService=o,this.globalEventsService=i}return e.prototype.ngAfterViewInit=function(){this.registerDropZones(),this.renderSelf(),this.renderChildren(),this.checkForHandle(),this.changeDetectorRef.detectChanges()},e.prototype.dragstartHandler=function(e){var t,r=this;if(e.stopPropagation(),null===e.dataTransfer||void 0===this.branch)throw new Error("failed to run dragstartHandler");var n=e.target;"LIMBLE-TREE-NODE"===(null===(t=n.parentElement)||void 0===t?void 0:t.tagName)&&(e.dataTransfer.effectAllowed="move",this.dragStateService.dragging(this.branch),setTimeout((function(){if(n.classList.add("dragging"),void 0===r.branch)throw new Error("Could not show surrounding drop zones");r.dropZoneService.showDropZoneFamily(r.branch.getCoordinates(),{joinFamilies:!0})})))},e.prototype.dragendHandler=function(e){var t=this;if(e.stopPropagation(),e.target.classList.remove("dragging"),void 0===this.branch)throw new Error("failed to get current branch in dragendHandler");if("captured"!==this.dragStateService.getState())return this.dragStateService.release(),this.dropZoneService.clear(),void this.dropZoneService.restoreFamilies();this.dragStateService.state$.pipe(n.take(2)).subscribe((function(e){"captured"===e&&void 0!==t.branch&&(t.treeService.remove(t.branch),t.dragStateService.release())}))},e.prototype.dragoverHandler=function(e){var t,r,n;if(!0!==this.globalEventsService.scrolling){if(void 0===this.branch)throw new Error("Can't get current branch during dragover event");var o=this.dragStateService.getData();if(void 0!==o&&o!==this.branch&&!this.branch.getAncestors().includes(o))if(!0!==this.treeService.getPlaceholder()||void 0===this.dropZoneAbove){var i,a=e.currentTarget.offsetHeight/3,s=2*a,d=this.branch.getParent(),h=!0;if(null!==(null==d?void 0:d.data)&&(i=null==d?void 0:d.data,h=u(this.treeService.treeOptions,i)),e.offsetY<a&&void 0!==this.dropZoneAbove&&(null===(t=this.dropZoneService.getActiveDropZone())||void 0===t?void 0:t.data.container)!==this.dropZoneAbove&&h){p=l(this.branch.getCoordinates());this.dropZoneService.showDropZoneFamily(p,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<s&&void 0!==this.dropZoneInside&&(null===(r=this.dropZoneService.getActiveDropZone())||void 0===r?void 0:r.data.container)!==this.dropZoneInside){(p=l(this.branch.getCoordinates())).push(0),this.dropZoneService.showDropZoneFamily(p)}else if(e.offsetY>=s&&void 0!==this.dropZoneBelow&&(null===(n=this.dropZoneService.getActiveDropZone())||void 0===n?void 0:n.data.container)!==this.dropZoneBelow&&0===this.branch.getChildren().length&&h){(p=l(this.branch.getCoordinates()))[p.length-1]++,this.dropZoneService.showDropZoneFamily(p)}}else{var p=l(this.branch.getCoordinates());this.dropZoneService.showDropZoneFamily(p)}}},e.prototype.renderSelf=function(){var e;if(void 0===this.nodeHost||void 0===this.branch)throw new Error("Failed to render tree node");var t=this.branch.data.component;if(void 0===t&&(t=null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.defaultComponent),void 0===t)throw new Error("limbleTree requires a component to render");var r=this.componentCreatorService.appendComponent(t.class,this.nodeHost);for(var n in r.instance.nodeData=this.branch.data,t.bindings)r.instance[n]=t.bindings[n]},e.prototype.renderChildren=function(){var e,t=this;if(void 0!==this.children&&!0!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.listMode)){if(void 0===this.branch)throw new Error("branch is undefined");var r=this.componentCreatorService.appendComponent(w,this.children);r.instance.branch=this.branch,u(this.treeService.treeOptions,this.branch.data)&&!0==!this.treeService.getPlaceholder()&&r.instance.dropZoneInside$.subscribe((function(e){var r;if(void 0!==e&&!1!==(null===(r=t.treeService.treeOptions)||void 0===r?void 0:r.allowDragging)){if(t.dropZoneInside=e,void 0===t.branch)throw new Error("failed to register inner drop zone");var n=t.branch.getCoordinates();n.push(0),t.dropZoneService.addDropZone(n,t.dropZoneInside)}}))}},e.prototype.registerDropZones=function(){var e;if(!1!==(null===(e=this.treeService.treeOptions)||void 0===e?void 0:e.allowDragging)){if(void 0===this.dropZoneAbove||void 0===this.dropZoneBelow||void 0===this.branch)throw new Error("failed to register drop zones");var t,r=this.branch.getParent();if(null===(null==r?void 0:r.data)||(t=null==r?void 0:r.data,u(this.treeService.treeOptions,t))){var n=this.branch.getCoordinates(),o=l(n);if(this.dropZoneService.addDropZone(o,this.dropZoneAbove),!0!==this.treeService.getPlaceholder()){var i=l(n);i[i.length-1]++,this.dropZoneService.addDropZone(i,this.dropZoneBelow)}}}},e.prototype.checkForHandle=function(){var e,t=this;if(void 0!==this.draggableDiv){var r,o,i=this.draggableDiv.nativeElement,a=i.querySelector(".limble-tree-handle");r=this.treeService.treeOptions,o=null===(e=this.branch)||void 0===e?void 0:e.data,void 0===r||!0!==r.allowDragging&&("function"!=typeof r.allowDragging||void 0===o||!0!==r.allowDragging(o))?i.setAttribute("draggable","false"):null===a?i.setAttribute("draggable","true"):a.addEventListener("mousedown",(function(){i.setAttribute("draggable","true");var e=t.dragStateService.state$.pipe(n.filter((function(e){return"dragging"===e})),n.first());t.dragStateService.state$.pipe(n.skipUntil(e),n.filter((function(e){return"idle"===e})),n.first()).subscribe((function(){i.setAttribute("draggable","false")}))}))}},e}();Z.decorators=[{type:t.Component,args:[{selector:"limble-tree-node",template:'<ng-template #dropZoneAbove></ng-template>\r\n<div\r\n (dragstart)="dragstartHandler($event)"\r\n (dragend)="dragendHandler($event)"\r\n class="limble-parent-container"\r\n #draggableDiv\r\n>\r\n <div (dragover)="dragoverHandler($event)">\r\n <ng-template #nodeHost></ng-template>\r\n </div>\r\n <ng-template #children></ng-template>\r\n</div>\r\n<ng-template #dropZoneBelow></ng-template>\r\n',styles:[".dragging{transition:transform .01s;transform:translateX(-9999px);height:0;margin:0;border:0}"]}]}],Z.ctorParameters=function(){return[{type:h},{type:t.ChangeDetectorRef},{type:d},{type:m},{type:C},{type:b}]},Z.propDecorators={branch:[{type:t.Input}],nodeHost:[{type:t.ViewChild,args:["nodeHost",{read:t.ViewContainerRef}]}],dropZoneAbove:[{type:t.ViewChild,args:["dropZoneAbove",{read:t.ViewContainerRef}]}],dropZoneBelow:[{type:t.ViewChild,args:["dropZoneBelow",{read:t.ViewContainerRef}]}],children:[{type:t.ViewChild,args:["children",{read:t.ViewContainerRef}]}],draggableDiv:[{type:t.ViewChild,args:["draggableDiv",{read:t.ElementRef}]}]};var S=function(){};S.decorators=[{type:t.Component,args:[{selector:"limble-tree-placeholder",template:'<div class="placeholder"></div>\n',styles:[".placeholder{width:100%;height:20px}"]}]}];var C=function(){function e(e,t){this.componentCreatorService=e,this.dropZoneService=t,this.changes$=new r.ReplaySubject(1),this.drops$=new r.ReplaySubject(1),this.treeModel=new v(null),this.placeholder=!1}return e.prototype.init=function(e,t,r,n,o){if(this.host=e,this.uncutData=t,this.treeOptions=this.processOptions(r,n,o),!0===this.treeOptions.listMode){var i=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(i)&&(i=0);var a=i+this.treeOptions.itemsPerPage;this.treeData=this.uncutData.slice(i,a)}else this.treeData=this.uncutData;this.render()},e.prototype.render=function(){var e,t,r,n,o=this;if(void 0===this.host||void 0===this.treeData||void 0===this.treeOptions)throw new Error("TreeModel not initialized");if(this.host.clear(),this.treeModel=new v(null),this.dropZoneService.reset(),0===this.treeData.length){this.placeholder=!0;var i=new v({component:{class:S}});this.treeModel.appendChild(i),this.componentCreatorService.appendComponent(Z,this.host).instance.branch=i}else{this.placeholder=!1;try{for(var s=a(this.treeData),l=s.next();!l.done;l=s.next()){var d=l.value;i=new v(d);this.treeModel.appendChild(i)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=s.return)&&t.call(s)}finally{if(e)throw e.error}}try{for(var h=a(this.treeModel.getChildren()),p=h.next();!p.done;p=h.next()){i=p.value;this.componentCreatorService.appendComponent(Z,this.host).instance.branch=i}}catch(e){r={error:e}}finally{try{p&&!p.done&&(n=h.return)&&n.call(h)}finally{if(r)throw r.error}}}setTimeout((function(){if(void 0===o.treeOptions)throw new Error("TreeModel not initialized");o.dropZoneService.init(o.treeModel,o.treeOptions),o.changes$.next(null)}))},e.prototype.renderBranch=function(e,t){var r,n,o;if(void 0===this.treeModel)throw new Error("TreeModel not initialized");e.clear();try{for(var i=a(null!==(o=t.data.nodes)&&void 0!==o?o:[]),s=i.next();!s.done;s=i.next()){var l=s.value,d=new v(l);t.appendChild(d),this.componentCreatorService.appendComponent(Z,e).instance.branch=d}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}},e.prototype.processOptions=function(e,t,r){var n,o,i,a,s;return void 0===e&&(e={}),void 0===t&&(t=1/0),void 0===r&&(r=1),!0===e.listMode&&void 0!==e.allowNesting&&!1!==e.allowNesting&&console.warn("The value of `allowNesting` will be ignored; it must be false when `listMode` is true"),{defaultComponent:e.defaultComponent,indent:null!==(n=e.indent)&&void 0!==n?n:45,allowNesting:!0!==e.listMode&&(null===(o=e.allowNesting)||void 0===o||o),allowDragging:null===(i=e.allowDragging)||void 0===i||i,allowDrop:null!==(a=e.allowDrop)&&void 0!==a?a:function(){return!0},listMode:null!==(s=e.listMode)&&void 0!==s&&s,itemsPerPage:e.listMode?t:void 0,page:e.listMode?r:void 0}},e.prototype.drop=function(e,t){var r,n,o=e.getParent(),i=e.getIndex();if(void 0===i)throw new Error("Cannot move the hidden root node");if(!0===this.placeholder?(r=[],n=0,this.treeModel.removeChild(0),this.placeholder=!1):n=(r=l(t)).pop(),void 0===n)throw new Error("target coordinates are empty");var a=this.treeModel.getDescendant(r);if(void 0===a)throw new Error("could not get to target");a.insertChild(e,n),this.rebuildTreeData(),this.drops$.next({target:e.data,oldParent:null==o?void 0:o.data,oldIndex:i,newParent:a.data,newIndex:n}),this.render()},e.prototype.remove=function(e){e.remove(),this.rebuildTreeData(),this.render()},e.prototype.rebuildTreeData=function(){var e,t,r;if(void 0===this.uncutData||void 0===this.treeData||void 0===this.treeOptions)throw new Error("Tree data not initialized");this.treeData.length=0;try{for(var n=a(this.treeModel.getChildren()),o=n.next();!o.done;o=n.next()){var i=o.value;this.treeData.push(this.rebuildBranch(i))}}catch(t){e={error:t}}finally{try{o&&!o.done&&(t=n.return)&&t.call(n)}finally{if(e)throw e.error}}if(!0===this.treeOptions.listMode){var s=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(s)&&(s=0);var d=s+this.treeOptions.itemsPerPage;(r=this.uncutData).splice.apply(r,l([s,this.treeOptions.itemsPerPage],this.treeData)),this.treeData=this.uncutData.slice(s,d)}else this.uncutData=this.treeData},e.prototype.rebuildBranch=function(e){var t,r,n=e.data;n.nodes=[];try{for(var o=a(e.getChildren()),i=o.next();!i.done;i=o.next()){var s=i.value;n.nodes.push(this.rebuildBranch(s))}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(t)throw t.error}}return n},e.prototype.getPlaceholder=function(){return this.placeholder},e}();C.decorators=[{type:t.Injectable}],C.ctorParameters=function(){return[{type:h},{type:m}]};var D=function(){function e(e,n,o,i){var a=this;this.treeService=e,this.dropZoneService=n,this.dragStateService=o,this.globalEventsService=i,this.treeChange=new t.EventEmitter,this.treeDrop=new t.EventEmitter,this.dropZoneInside$=new r.BehaviorSubject(this.dropZoneInside),this.changesSubscription=this.treeService.changes$.subscribe((function(){a.treeChange.emit()})),this.dropSubscription=this.treeService.drops$.subscribe((function(e){a.treeDrop.emit(e)}))}return e.prototype.ngAfterViewInit=function(){var e;this.dropZoneInside$.next(this.dropZoneInside),this.dropZoneInside$.complete(),!0===(null===(e=this.options)||void 0===e?void 0:e.listMode)||void 0===this.itemsPerPage&&void 0===this.page||console.warn("pagination is only allowed in listMode; `itemsPerPage` and `page` inputs will be ignored"),this.update()},e.prototype.ngOnChanges=function(){void 0!==this.host&&void 0!==this.data&&this.update()},e.prototype.update=function(){if(void 0===this.host)throw new Error("Failed to render limble tree. Failure occurred at root.");if(void 0===this.data)throw new Error("limbleTree requires a data object");this.treeService.init(this.host,this.data,this.options,this.itemsPerPage,this.page),this.globalEventsService.addScrolling()},e.prototype.dragoverHandler=function(e){null!==e.dataTransfer&&(e.stopPropagation(),e.preventDefault(),e.dataTransfer.dropEffect="move")},e.prototype.dragleaveHandler=function(e){var t=e.currentTarget,r=e.relatedTarget;t instanceof Node&&r instanceof Node&&!1===function(e,t){if(e===t)return!0;for(var r=t.parentNode;r!==document;){if(null===r)return;if(r===e)return!0;r=r.parentNode}return!1}(t,r)&&this.dropZoneService.clear()},e.prototype.dropHandler=function(e){e.stopPropagation();var t=this.dropZoneService.getActiveDropZone();if("droppable"===this.dragStateService.getState()){if(null===t)throw new Error("failed to get active drop zone at drop handler");var r=this.dragStateService.capture();if(void 0===r)throw new Error("failed to get current branch in dragendHandler");this.dropZoneService.clear(),this.treeService.drop(r,t.getCoordinates())}},e.prototype.ngOnDestroy=function(){this.changesSubscription.unsubscribe(),this.dropSubscription.unsubscribe(),this.globalEventsService.removeScrolling()},e}();D.decorators=[{type:t.Component,args:[{selector:"limble-tree-root",template:'<div\r\n (dragover)="dragoverHandler($event)"\r\n (dragleave)="dragleaveHandler($event)"\r\n (drop)="dropHandler($event)"\r\n>\r\n <ng-template #dropZoneInside></ng-template>\r\n <ng-template #host></ng-template>\r\n</div>\r\n',providers:[C,m],styles:[""]}]}],D.ctorParameters=function(){return[{type:C},{type:m},{type:d},{type:b}]},D.propDecorators={data:[{type:t.Input}],options:[{type:t.Input}],itemsPerPage:[{type:t.Input}],page:[{type:t.Input}],host:[{type:t.ViewChild,args:["host",{read:t.ViewContainerRef}]}],dropZoneInside:[{type:t.ViewChild,args:["dropZoneInside",{read:t.ViewContainerRef}]}],dropZoneInside$:[{type:t.Output}],treeChange:[{type:t.Output}],treeDrop:[{type:t.Output}]};var x=function(){};x.decorators=[{type:t.NgModule,args:[{declarations:[w,p,Z,D,S],imports:[o.CommonModule],exports:[D],providers:[h,d,b]}]}],e.LimbleTreeModule=x,e.LimbleTreeRootComponent=D,e.ɵa=C,e.ɵb=h,e.ɵc=m,e.ɵd=d,e.ɵe=b,e.ɵf=w,e.ɵg=p,e.ɵh=Z,e.ɵi=S,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=limble-limble-tree.umd.min.js.map

@@ -66,2 +66,3 @@ import { Injectable } from "@angular/core";

else {
this.placeholder = false;
for (const node of this.treeData) {

@@ -206,2 +207,2 @@ const branch = new Branch(node);

];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFxQixNQUFNLFdBQVcsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQThEOUcsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFrRHpCLE1BQU0sT0FBTyxXQUFXO0lBVXJCLFlBQ29CLHVCQUFnRCxFQUNoRCxlQUFnQztRQURoQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUVqRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxJQUFJLENBQ1IsSUFBc0IsRUFDdEIsSUFBb0Is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LENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDakM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQW1CO1FBQ3RDLE1BQU0sSUFBSSxHQUFtQixNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM3QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVNLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzNCLENBQUM7OztZQTVPSCxVQUFVOzs7WUFwSEYsdUJBQXVCO1lBQ3ZCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcmFuY2gsIEJyYW5jaENvb3JkaW5hdGVzIH0gZnJvbSBcIi4uL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1ub2RlL2xpbWJsZS10cmVlLW5vZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1wbGFjZWhvbGRlci9saW1ibGUtdHJlZS1wbGFjZWhvbGRlci5jb21wb25lbnRcIjtcclxuXHJcbi8qKiBBbiBvYmplY3QgZGVzY3JpYmluZyBhIG5vZGUgb2YgdGhlIHRyZWUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBMaW1ibGVUcmVlTm9kZSB7XHJcbiAgIC8qKiBBIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgcmVuZGVyZWQgXCJ1bmRlclwiIHRoaXMgb25lLCBvbmUgbGV2ZWwgZGVlcGVyIGluIHRoZSB0cmVlLiAqL1xyXG4gICBub2Rlcz86IExpbWJsZVRyZWVEYXRhO1xyXG4gICAvLyAvKiogQSBjdXN0b20gZGF0YSBvYmplY3QgdGhhdCB3aWxsIGJlIHBhc3NlZCBpbnRvIHRoZSBjb21wb25lbnQgYXMgYW4gYElucHV0KClgIGJpbmRpbmcgY2FsbGVkIGBub2RlRGF0YWAgKi9cclxuICAgLy8gZGF0YTogdW5rbm93bjtcclxuICAgLyoqIEFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgY29tcG9uZW50IHdoaWNoIHdpbGwgcmVwcmVzZW50IHRoaXMgbm9kZSBpbiB0aGUgdmlzdWFsIHRyZWUgKi9cclxuICAgY29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICBjb2xsYXBzZWQ/OiBib29sZWFuO1xyXG4gICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XHJcbn1cclxuXHJcbi8qKiBBbiBvYmplY3QgdGhhdCB0aGUgbGltYmxlLXRyZWUtcm9vdCBjb21wb25lbnQgdXNlcyB0byBidWlsZCB0aGUgdHJlZSAqL1xyXG5leHBvcnQgdHlwZSBMaW1ibGVUcmVlRGF0YSA9IEFycmF5PExpbWJsZVRyZWVOb2RlPjtcclxuXHJcbi8qKiBBIGdyb3VwIG9mIHNldHRpbmdzIGZvciBjaGFuZ2luZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdHJlZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExpbWJsZVRyZWVPcHRpb25zIHtcclxuICAgLyoqIFRoZSBjb21wb25lbnQgb2JqZWN0IHRvIHVzZSBpZiBvbmUgaXMgbm90IHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIG5vZGUgKi9cclxuICAgZGVmYXVsdENvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgLyoqIFRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIGluZGVudCBlYWNoIGxldmVsIG9mIHRoZSB0cmVlLiBEZWZhdWx0cyB0byA0NSAqL1xyXG4gICBpbmRlbnQ/OiBudW1iZXI7XHJcbiAgIC8qKlxyXG4gICAgKiBXaGV0aGVyIHRvIGFsbG93IFwibmVzdGluZ1wiIChwbGFjaW5nIGEgbm9kZSBvbmUgbGV2ZWwgZGVlcGVyIHRoYW4gY3VycmVudGx5IGV4aXN0cyBvbiB0aGUgYnJhbmNoKS5cclxuICAgICogV2hlbiB0aGlzIGlzIGEgYm9vbGVhbiwgaXQgYXBwbGllcyB0byBhbGwgbm9kZXMuIFdoZW4gdGhpcyBpcyBhIGZ1bmN0aW9uLCB0aGUgbm9kZSBpbiBxdWVzdGlvblxyXG4gICAgKiBpcyBwYXNzZWQgaW4uIERlZmF1bHRzIHRvIHRydWUuXHJcbiAgICAqL1xyXG4gICBhbGxvd05lc3Rpbmc/OiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICAvKipcclxuICAgICogV2hldGhlciB0byBhbGxvdyBhIG5vZGUgdG8gYmUgZHJhZ2dlZC4gV2hlbiB0aGlzIGlzIGEgYm9vbGVhbiwgaXQgYXBwbGllcyB0byBhbGwgbm9kZXMuIFdoZW4gdGhpc1xyXG4gICAgKiBpcyBhIGZ1bmN0aW9uLCB0aGUgbm9kZSBpbiBxdWVzdGlvbiBpcyBwYXNzZWQgaW4uIERlZmF1bHRzIHRvIHRydWUuXHJcbiAgICAqL1xyXG4gICBhbGxvd0RyYWdnaW5nPzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgLyoqIEEgY2FsbGJhY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzb3VyY2VOb2RlIGNhbiBiZSBkcm9wcGVkIGF0IGEgcGFydGljdWxhciBsb2NhdGlvbi4gKi9cclxuICAgYWxsb3dEcm9wPzogKFxyXG4gICAgICBzb3VyY2VOb2RlOiBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgcHJvcG9zZWRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbCxcclxuICAgICAgcHJvcG9zZWRJbmRleDogbnVtYmVyXHJcbiAgICkgPT4gYm9vbGVhbjtcclxuICAgLyoqIFdoZW4gc2V0IHRvIHRydWUsIGxpc3QgbW9kZSB3aWxsIGVuZm9yY2UgYSBmbGF0IHRyZWUgc3RydWN0dXJlLCBtZWFuaW5nIHRoZXJlXHJcbiAgICAqIGNhbiBvbmx5IGJlIG9uZSBsZXZlbCBvZiB0aGUgdHJlZS4gYGFsbG93TmVzdGluZ2AgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gYGZhbHNlYFxyXG4gICAgKiBhbmQgYW55IGNoaWxkcmVuIHdpbGwgYmUgZGVsZXRlZC5cclxuICAgICpcclxuICAgICogVGhpcyBtb2RlIGNhbiBiZSB1c2VkIHdoZW4gdGhlIHNhbWUgZHluYW1pYyBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9uYWxpdHkgb2ZcclxuICAgICogdGhlIHRyZWUgaXMgZGVzaXJlZCwgYnV0IHRoZSB0cmVlIHN0cnVjdHVyZSBpdHNlbGYgaXMgbm90IG5lY2Vzc2FyeS4gVGhpc1xyXG4gICAgKiBhbHNvIG9wZW5zIHVwIHRoZSBwYWdpbmF0aW9uIEFQSSBvbiB0aGUgbGltYmxlLXRyZWUtcm9vdCBjb21wb25lbnQuIFNlZSB0aGVcclxuICAgICogUkVBRE1FIGZvciBkZXRhaWxzIG9uIHBhZ2luYXRpb24uXHJcbiAgICAqL1xyXG4gICBsaXN0TW9kZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBBbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIHRoZSBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWQgYW5kIGl0cyBiaW5kaW5ncyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE9iaiB7XHJcbiAgIC8qKiBUaGUgY29tcG9uZW50IGNsYXNzICovXHJcbiAgIGNsYXNzOiBUeXBlPHVua25vd24+O1xyXG4gICAvKiogVGhlIGJpbmRpbmdzIChpbnB1dHMgYW5kIG91dHB1dHMpIG9mIHRoZSBjbGFzcyAqL1xyXG4gICBiaW5kaW5ncz86IHtcclxuICAgICAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xyXG4gICB9O1xyXG59XHJcblxyXG4vKiogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBgaW5kZW50YCBvcHRpb24gKi9cclxuZXhwb3J0IGNvbnN0IElOREVOVCA9IDQ1O1xyXG5cclxuLyoqIEFuIG9wdGlvbnMgb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgbG9hZGVkIHdoZXJlIGFwcGxpY2FibGUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zQmFzZSBleHRlbmRzIExpbWJsZVRyZWVPcHRpb25zIHtcclxuICAgZGVmYXVsdENvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgaW5kZW50OiBudW1iZXI7XHJcbiAgIGFsbG93TmVzdGluZzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgYWxsb3dEcmFnZ2luZzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgYWxsb3dEcm9wOiAoXHJcbiAgICAgIHNvdXJjZU5vZGU6IExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICBwcm9wb3NlZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsLFxyXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcclxuICAgKSA9PiBib29sZWFuO1xyXG4gICBsaXN0TW9kZTogYm9vbGVhbjtcclxuICAgaXRlbXNQZXJQYWdlOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgIHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zV2l0aFBhZ2luYXRpb24gZXh0ZW5kcyBQcm9jZXNzZWRPcHRpb25zQmFzZSB7XHJcbiAgIGxpc3RNb2RlOiB0cnVlO1xyXG4gICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcclxuICAgcGFnZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNXaXRob3V0UGFnaW5hdGlvblxyXG4gICBleHRlbmRzIFByb2Nlc3NlZE9wdGlvbnNCYXNlIHtcclxuICAgbGlzdE1vZGU6IGZhbHNlO1xyXG4gICBpdGVtc1BlclBhZ2U6IHVuZGVmaW5lZDtcclxuICAgcGFnZTogdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9jZXNzZWRPcHRpb25zID1cclxuICAgfCBQcm9jZXNzZWRPcHRpb25zV2l0aFBhZ2luYXRpb25cclxuICAgfCBQcm9jZXNzZWRPcHRpb25zV2l0aG91dFBhZ2luYXRpb247XHJcblxyXG4vKiogdGhlIHZhbHVlIGVtaXR0ZWQgZnJvbSB0aGUgcm9vdCBjb21wb25lbnQgYWZ0ZXIgYSBub2RlIGlzIGRyb3BwZWQgKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmVlRHJvcCB7XHJcbiAgIC8qKiBUaGUgbm9kZSB0aGF0IHdhcyBkcm9wcGVkICovXHJcbiAgIHRhcmdldDogTGltYmxlVHJlZU5vZGU7XHJcbiAgIC8qKiB0aGUgdGFyZ2V0J3MgcGFyZW50IGJlZm9yZSB0aGUgZHJhZyBhbmQgZHJvcCwgb3IgbnVsbCBpZiBpdCB3YXMgYSB0b3AtbGV2ZWwgbm9kZSAqL1xyXG4gICBvbGRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbDtcclxuICAgLyoqIHRoZSBpbmRleCBvZiB0aGUgbm9kZSBiZWZvcmUgdGhlIGRyYWcgYW5kIGRyb3AgcmVsYXRpdmUgdG8gaXRzIG9sZCBzaWJsaW5ncyAqL1xyXG4gICBvbGRJbmRleDogbnVtYmVyO1xyXG4gICAvKiogdGhlIHRhcmdldCdzIHBhcmVudCBhZnRlciB0aGUgZHJhZyBhbmQgZHJvcCwgb3IgbnVsbCBpZiBpdCBpcyBub3cgYSB0b3AtbGV2ZWwgbm9kZSAqL1xyXG4gICBuZXdQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbDtcclxuICAgLyoqIHRoZSBpbmRleCBvZiB0aGUgbm9kZSBhZnRlciB0aGUgZHJhZyBhbmQgZHJvcCByZWxhdGl2ZSB0byBpdHMgbmV3IHNpYmxpbmdzICovXHJcbiAgIG5ld0luZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyZWVTZXJ2aWNlIHtcclxuICAgcHVibGljIGNoYW5nZXMkOiBSZXBsYXlTdWJqZWN0PG51bGw+O1xyXG4gICBwdWJsaWMgZHJvcHMkOiBSZXBsYXlTdWJqZWN0PFRyZWVEcm9wPjtcclxuICAgcHJpdmF0ZSBob3N0OiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZURhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBwcml2YXRlIHVuY3V0RGF0YTogTGltYmxlVHJlZURhdGEgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlT3B0aW9uczogUHJvY2Vzc2VkT3B0aW9ucyB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVNb2RlbDogQnJhbmNoPGFueT47XHJcbiAgIHByaXZhdGUgcGxhY2Vob2xkZXI6IGJvb2xlYW47XHJcblxyXG4gICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRDcmVhdG9yU2VydmljZTogQ29tcG9uZW50Q3JlYXRvclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcFpvbmVTZXJ2aWNlOiBEcm9wWm9uZVNlcnZpY2VcclxuICAgKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlcyQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcclxuICAgICAgdGhpcy5kcm9wcyQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcclxuICAgICAgdGhpcy50cmVlTW9kZWwgPSBuZXcgQnJhbmNoKG51bGwpO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBJbml0aWFsaXplcyB0aGUgc2VydmljZSBhbmQgcmVuZGVycyB0aGUgdHJlZS5cclxuICAgICogQHBhcmFtIGhvc3QgLSBUaGUgVmlld0NvbnRhaW5lclJlZiBpbnRvIHdoaWNoIHRoZSB0cmVlIHdpbGwgYmUgcmVuZGVyZWQuXHJcbiAgICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgYXJyYXkgdGhhdCB3YXMgcGFzc2VkIGluIHRvIExpbWJsZVRyZWVSb290LCB3aGljaCBpc1xyXG4gICAgKiB0aGUgdXNlcnMnIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0cmVlXHJcbiAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCBpbiB0byBMaW1ibGVUcmVlUm9vdFxyXG4gICAgKi9cclxuICAgcHVibGljIGluaXQoXHJcbiAgICAgIGhvc3Q6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgIGRhdGE6IExpbWJsZVRyZWVEYXRhLFxyXG4gICAgICBvcHRpb25zPzogTGltYmxlVHJlZU9wdGlvbnMsXHJcbiAgICAgIGl0ZW1zUGVyUGFnZT86IG51bWJlcixcclxuICAgICAgcGFnZT86IG51bWJlclxyXG4gICApOiB2b2lkIHtcclxuICAgICAgdGhpcy5ob3N0ID0gaG9zdDtcclxuICAgICAgdGhpcy51bmN1dERhdGEgPSBkYXRhO1xyXG4gICAgICB0aGlzLnRyZWVPcHRpb25zID0gdGhpcy5wcm9jZXNzT3B0aW9ucyhvcHRpb25zLCBpdGVtc1BlclBhZ2UsIHBhZ2UpO1xyXG4gICAgICBpZiAodGhpcy50cmVlT3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICBsZXQgc3RhcnQgPVxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSAqICh0aGlzLnRyZWVPcHRpb25zLnBhZ2UgLSAxKTtcclxuICAgICAgICAgaWYgKGlzTmFOKHN0YXJ0KSkge1xyXG4gICAgICAgICAgICAvL1RoaXMgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSBpdGVtc1BlclBhZ2Ugd2FzIG5vdCBwYXNzZWQgYnkgdGhlIHVzZXIsXHJcbiAgICAgICAgICAgIC8vY2F1c2luZyBgc3RhcnRgIHRvIGVxdWFsIGluZmluaXR5KjAsIHdoaWNoIGlzIE5hTi5cclxuICAgICAgICAgICAgc3RhcnQgPSAwO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPSB0aGlzLnVuY3V0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IHRoaXMudW5jdXREYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZW5kZXJzIHRoZSBlbnRpcmUgdHJlZSBmcm9tIHJvb3QgdG8gbGVhdmVzICovXHJcbiAgIHByaXZhdGUgcmVuZGVyKCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ob3N0LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsID0gbmV3IEJyYW5jaChudWxsKTtcclxuICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgaWYgKHRoaXMudHJlZURhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgIC8vVHJlZSBpcyBlbXB0eSwgYnV0IHdlIGhhdmUgdG8gdG8gaGF2ZSBzb21ldGhpbmcgdGhlcmUgc28gb3RoZXIgdHJlZXMnIGl0ZW1zIGNhbiBiZSBkcm9wcGVkIGludG8gaXRcclxuICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyTm9kZTogTGltYmxlVHJlZU5vZGUgPSB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogeyBjbGFzczogTGltYmxlVHJlZVBsYWNlaG9sZGVyQ29tcG9uZW50IH1cclxuICAgICAgICAgfTtcclxuICAgICAgICAgY29uc3QgYnJhbmNoID0gbmV3IEJyYW5jaChwbGFjZWhvbGRlck5vZGUpO1xyXG4gICAgICAgICB0aGlzLnRyZWVNb2RlbC5hcHBlbmRDaGlsZChicmFuY2gpO1xyXG4gICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgICAgKTtcclxuICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgZm9yIChjb25zdCBub2RlIG9mIHRoaXMudHJlZURhdGEpIHtcclxuICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gbmV3IEJyYW5jaChub2RlKTtcclxuICAgICAgICAgICAgdGhpcy50cmVlTW9kZWwuYXBwZW5kQ2hpbGQoYnJhbmNoKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Q3JlYXRvclNlcnZpY2UuYXBwZW5kQ29tcG9uZW50PExpbWJsZVRyZWVOb2RlQ29tcG9uZW50PihcclxuICAgICAgICAgICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgICAgICAgICAgIHRoaXMuaG9zdFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gYnJhbmNoO1xyXG4gICAgICAgICAgICAvL1RoZSBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCB3aWxsIChpbmRpcmVjdGx5KSBjYWxsIHRoZSBgcmVuZGVyQnJhbmNoYCBtZXRob2Qgb2YgdGhpcyBzZXJ2aWNlIHRvIHJlbmRlclxyXG4gICAgICAgICAgICAvL2l0cyBvd24gY2hpbGRyZW5cclxuICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICBpZiAodGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UuaW5pdCh0aGlzLnRyZWVNb2RlbCwgdGhpcy50cmVlT3B0aW9ucyk7XHJcbiAgICAgICAgIHRoaXMuY2hhbmdlcyQubmV4dChudWxsKTtcclxuICAgICAgfSk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZW5kZXJzIGEgYnJhbmNoIG9mIHRoZSB0cmVlIGFuZCBhbGwgb2YgaXRzIGRlc2NlbmRhbnRzICovXHJcbiAgIHB1YmxpYyByZW5kZXJCcmFuY2goaG9zdDogVmlld0NvbnRhaW5lclJlZiwgYnJhbmNoOiBCcmFuY2g8YW55Pikge1xyXG4gICAgICBpZiAodGhpcy50cmVlTW9kZWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGhvc3QuY2xlYXIoKTtcclxuICAgICAgZm9yIChjb25zdCBub2RlIG9mIGJyYW5jaC5kYXRhLm5vZGVzID8/IFtdKSB7XHJcbiAgICAgICAgIGNvbnN0IG5ld0JyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgIGJyYW5jaC5hcHBlbmRDaGlsZChuZXdCcmFuY2gpO1xyXG4gICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICBob3N0XHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5icmFuY2ggPSBuZXdCcmFuY2g7XHJcbiAgICAgICAgIC8vVGhlIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IHdpbGwgKGluZGlyZWN0bHkpIGNhbGwgdGhlIGByZW5kZXJCcmFuY2hgIG1ldGhvZCBvZiB0aGlzIHNlcnZpY2UgdG8gcmVuZGVyXHJcbiAgICAgICAgIC8vaXRzIG93biBjaGlsZHJlblxyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcHJvY2Vzc09wdGlvbnMoXHJcbiAgICAgIG9wdGlvbnM6IExpbWJsZVRyZWVPcHRpb25zID0ge30sXHJcbiAgICAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyID0gSW5maW5pdHksXHJcbiAgICAgIHBhZ2U6IG51bWJlciA9IDFcclxuICAgKTogUHJvY2Vzc2VkT3B0aW9ucyB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgb3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSAmJlxyXG4gICAgICAgICBvcHRpb25zLmFsbG93TmVzdGluZyAhPT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgIG9wdGlvbnMuYWxsb3dOZXN0aW5nICE9PSBmYWxzZVxyXG4gICAgICApIHtcclxuICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICBcIlRoZSB2YWx1ZSBvZiBgYWxsb3dOZXN0aW5nYCB3aWxsIGJlIGlnbm9yZWQ7IGl0IG11c3QgYmUgZmFsc2Ugd2hlbiBgbGlzdE1vZGVgIGlzIHRydWVcIlxyXG4gICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogUHJvY2Vzc2VkT3B0aW9uc0Jhc2UgPSB7XHJcbiAgICAgICAgIGRlZmF1bHRDb21wb25lbnQ6IG9wdGlvbnMuZGVmYXVsdENvbXBvbmVudCxcclxuICAgICAgICAgaW5kZW50OiBvcHRpb25zLmluZGVudCA/PyBJTkRFTlQsXHJcbiAgICAgICAgIGFsbG93TmVzdGluZzpcclxuICAgICAgICAgICAgb3B0aW9ucy5saXN0TW9kZSAhPT0gdHJ1ZSAmJiAob3B0aW9ucy5hbGxvd05lc3RpbmcgPz8gdHJ1ZSksXHJcbiAgICAgICAgIGFsbG93RHJhZ2dpbmc6IG9wdGlvbnMuYWxsb3dEcmFnZ2luZyA/PyB0cnVlLFxyXG4gICAgICAgICBhbGxvd0Ryb3A6IG9wdGlvbnMuYWxsb3dEcm9wID8/ICgoKSA9PiB0cnVlKSxcclxuICAgICAgICAgbGlzdE1vZGU6IG9wdGlvbnMubGlzdE1vZGUgPz8gZmFsc2UsXHJcbiAgICAgICAgIGl0ZW1zUGVyUGFnZTogb3B0aW9ucy5saXN0TW9kZSA/IGl0ZW1zUGVyUGFnZSA6IHVuZGVmaW5lZCxcclxuICAgICAgICAgcGFnZTogb3B0aW9ucy5saXN0TW9kZSA/IHBhZ2UgOiB1bmRlZmluZWRcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIHJlc3VsdCBhcyBQcm9jZXNzZWRPcHRpb25zO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZHJvcChzb3VyY2U6IEJyYW5jaDxhbnk+LCB0YXJnZXRDb29yZGluYXRlczogQnJhbmNoQ29vcmRpbmF0ZXMpIHtcclxuICAgICAgY29uc3Qgc291cmNlUGFyZW50ID0gc291cmNlLmdldFBhcmVudCgpO1xyXG4gICAgICBjb25zdCBzb3VyY2VJbmRleCA9IHNvdXJjZS5nZXRJbmRleCgpO1xyXG4gICAgICBpZiAoc291cmNlSW5kZXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgbW92ZSB0aGUgaGlkZGVuIHJvb3Qgbm9kZVwiKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXM6IEJyYW5jaENvb3JkaW5hdGVzO1xyXG4gICAgICBsZXQgaW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcclxuICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIgPT09IHRydWUpIHtcclxuICAgICAgICAgdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXMgPSBbXTtcclxuICAgICAgICAgaW5kZXggPSAwO1xyXG4gICAgICAgICB0aGlzLnRyZWVNb2RlbC5yZW1vdmVDaGlsZCgwKTsgLy9yZW1vdmUgdGhlIHBsYWNlaG9sZGVyXHJcbiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXMgPSBbLi4udGFyZ2V0Q29vcmRpbmF0ZXNdO1xyXG4gICAgICAgICBpbmRleCA9IHRhcmdldFBhcmVudENvb3JkaW5hdGVzLnBvcCgpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRhcmdldCBjb29yZGluYXRlcyBhcmUgZW1wdHlcIik7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgdGFyZ2V0UGFyZW50ID0gdGhpcy50cmVlTW9kZWwuZ2V0RGVzY2VuZGFudChcclxuICAgICAgICAgdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXNcclxuICAgICAgKTtcclxuICAgICAgaWYgKHRhcmdldFBhcmVudCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImNvdWxkIG5vdCBnZXQgdG8gdGFyZ2V0XCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRhcmdldFBhcmVudC5pbnNlcnRDaGlsZChzb3VyY2UsIGluZGV4KTtcclxuICAgICAgdGhpcy5yZWJ1aWxkVHJlZURhdGEoKTtcclxuICAgICAgdGhpcy5kcm9wcyQubmV4dCh7XHJcbiAgICAgICAgIHRhcmdldDogc291cmNlLmRhdGEsXHJcbiAgICAgICAgIG9sZFBhcmVudDogc291cmNlUGFyZW50Py5kYXRhIGFzIExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICAgICBvbGRJbmRleDogc291cmNlSW5kZXgsXHJcbiAgICAgICAgIG5ld1BhcmVudDogdGFyZ2V0UGFyZW50LmRhdGEsXHJcbiAgICAgICAgIG5ld0luZGV4OiBpbmRleFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgfVxyXG5cclxuICAgcHVibGljIHJlbW92ZSh0YXJnZXQ6IEJyYW5jaDxhbnk+KSB7XHJcbiAgICAgIHRhcmdldC5yZW1vdmUoKTtcclxuICAgICAgdGhpcy5yZWJ1aWxkVHJlZURhdGEoKTtcclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSByZWJ1aWxkVHJlZURhdGEoKTogdm9pZCB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICAgdGhpcy51bmN1dERhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgdGhpcy50cmVlT3B0aW9ucyA9PT0gdW5kZWZpbmVkXHJcbiAgICAgICkge1xyXG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlIGRhdGEgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudHJlZURhdGEubGVuZ3RoID0gMDtcclxuICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy50cmVlTW9kZWwuZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhLnB1c2godGhpcy5yZWJ1aWxkQnJhbmNoKGJyYW5jaCkpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRyZWVPcHRpb25zLmxpc3RNb2RlID09PSB0cnVlKSB7XHJcbiAgICAgICAgIGxldCBzdGFydCA9XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlICogKHRoaXMudHJlZU9wdGlvbnMucGFnZSAtIDEpO1xyXG4gICAgICAgICBpZiAoaXNOYU4oc3RhcnQpKSB7XHJcbiAgICAgICAgICAgIC8vVGhpcyBjYXRjaGVzIHRoZSBjYXNlIHdoZXJlIGl0ZW1zUGVyUGFnZSB3YXMgbm90IHBhc3NlZCBieSB0aGUgdXNlcixcclxuICAgICAgICAgICAgLy9jYXVzaW5nIGBzdGFydGAgdG8gZXF1YWwgaW5maW5pdHkqMCwgd2hpY2ggaXMgTmFOLlxyXG4gICAgICAgICAgICBzdGFydCA9IDA7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZTtcclxuICAgICAgICAgdGhpcy51bmN1dERhdGEuc3BsaWNlKFxyXG4gICAgICAgICAgICBzdGFydCxcclxuICAgICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2UsXHJcbiAgICAgICAgICAgIC4uLnRoaXMudHJlZURhdGFcclxuICAgICAgICAgKTtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IHRoaXMudW5jdXREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0aGlzLnVuY3V0RGF0YSA9IHRoaXMudHJlZURhdGE7XHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSByZWJ1aWxkQnJhbmNoKGJyYW5jaDogQnJhbmNoPGFueT4pOiBMaW1ibGVUcmVlTm9kZSB7XHJcbiAgICAgIGNvbnN0IHRlbXA6IExpbWJsZVRyZWVOb2RlID0gYnJhbmNoLmRhdGE7XHJcbiAgICAgIHRlbXAubm9kZXMgPSBbXTtcclxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBicmFuY2guZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICB0ZW1wLm5vZGVzLnB1c2godGhpcy5yZWJ1aWxkQnJhbmNoKGNoaWxkKSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRlbXA7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBnZXRQbGFjZWhvbGRlcigpIHtcclxuICAgICAgcmV0dXJuIHRoaXMucGxhY2Vob2xkZXI7XHJcbiAgIH1cclxufVxyXG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsTUFBTSxFQUFxQixNQUFNLFdBQVcsQ0FBQztBQUN0RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN6RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQThEOUcsZ0RBQWdEO0FBQ2hELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFrRHpCLE1BQU0sT0FBTyxXQUFXO0lBVXJCLFlBQ29CLHVCQUFnRCxFQUNoRCxlQUFnQztRQURoQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUVqRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxJQUFJLENBQ1IsSUFBc0IsRUFDdEIsSUFBb0Is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LEdBQUcsQ0FBQyxDQUFDO1NBQ25EO2FBQU07WUFDSixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDakM7SUFDSixDQUFDO0lBRU8sYUFBYSxDQUFDLE1BQW1CO1FBQ3RDLE1BQU0sSUFBSSxHQUFtQixNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUM3QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2YsQ0FBQztJQUVNLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzNCLENBQUM7OztZQTdPSCxVQUFVOzs7WUFwSEYsdUJBQXVCO1lBQ3ZCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgUmVwbGF5U3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlIH0gZnJvbSBcIi4uL3NpbmdsZXRvbnMvY29tcG9uZW50LWNyZWF0b3Iuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEcm9wWm9uZVNlcnZpY2UgfSBmcm9tIFwiLi9kcm9wLXpvbmUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBCcmFuY2gsIEJyYW5jaENvb3JkaW5hdGVzIH0gZnJvbSBcIi4uL0JyYW5jaFwiO1xyXG5pbXBvcnQgeyBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1ub2RlL2xpbWJsZS10cmVlLW5vZGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IExpbWJsZVRyZWVQbGFjZWhvbGRlckNvbXBvbmVudCB9IGZyb20gXCIuLi9saW1ibGUtdHJlZS1wbGFjZWhvbGRlci9saW1ibGUtdHJlZS1wbGFjZWhvbGRlci5jb21wb25lbnRcIjtcclxuXHJcbi8qKiBBbiBvYmplY3QgZGVzY3JpYmluZyBhIG5vZGUgb2YgdGhlIHRyZWUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBMaW1ibGVUcmVlTm9kZSB7XHJcbiAgIC8qKiBBIGxpc3Qgb2Ygbm9kZXMgdG8gYmUgcmVuZGVyZWQgXCJ1bmRlclwiIHRoaXMgb25lLCBvbmUgbGV2ZWwgZGVlcGVyIGluIHRoZSB0cmVlLiAqL1xyXG4gICBub2Rlcz86IExpbWJsZVRyZWVEYXRhO1xyXG4gICAvLyAvKiogQSBjdXN0b20gZGF0YSBvYmplY3QgdGhhdCB3aWxsIGJlIHBhc3NlZCBpbnRvIHRoZSBjb21wb25lbnQgYXMgYW4gYElucHV0KClgIGJpbmRpbmcgY2FsbGVkIGBub2RlRGF0YWAgKi9cclxuICAgLy8gZGF0YTogdW5rbm93bjtcclxuICAgLyoqIEFuIG9iamVjdCB0aGF0IGRlc2NyaWJlcyB0aGUgY29tcG9uZW50IHdoaWNoIHdpbGwgcmVwcmVzZW50IHRoaXMgbm9kZSBpbiB0aGUgdmlzdWFsIHRyZWUgKi9cclxuICAgY29tcG9uZW50PzogQ29tcG9uZW50T2JqO1xyXG4gICBjb2xsYXBzZWQ/OiBib29sZWFuO1xyXG4gICBbaW5kZXg6IHN0cmluZ106IHVua25vd247XHJcbn1cclxuXHJcbi8qKiBBbiBvYmplY3QgdGhhdCB0aGUgbGltYmxlLXRyZWUtcm9vdCBjb21wb25lbnQgdXNlcyB0byBidWlsZCB0aGUgdHJlZSAqL1xyXG5leHBvcnQgdHlwZSBMaW1ibGVUcmVlRGF0YSA9IEFycmF5PExpbWJsZVRyZWVOb2RlPjtcclxuXHJcbi8qKiBBIGdyb3VwIG9mIHNldHRpbmdzIGZvciBjaGFuZ2luZyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgdHJlZSAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExpbWJsZVRyZWVPcHRpb25zIHtcclxuICAgLyoqIFRoZSBjb21wb25lbnQgb2JqZWN0IHRvIHVzZSBpZiBvbmUgaXMgbm90IHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIG5vZGUgKi9cclxuICAgZGVmYXVsdENvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgLyoqIFRoZSBudW1iZXIgb2YgcGl4ZWxzIHRvIGluZGVudCBlYWNoIGxldmVsIG9mIHRoZSB0cmVlLiBEZWZhdWx0cyB0byA0NSAqL1xyXG4gICBpbmRlbnQ/OiBudW1iZXI7XHJcbiAgIC8qKlxyXG4gICAgKiBXaGV0aGVyIHRvIGFsbG93IFwibmVzdGluZ1wiIChwbGFjaW5nIGEgbm9kZSBvbmUgbGV2ZWwgZGVlcGVyIHRoYW4gY3VycmVudGx5IGV4aXN0cyBvbiB0aGUgYnJhbmNoKS5cclxuICAgICogV2hlbiB0aGlzIGlzIGEgYm9vbGVhbiwgaXQgYXBwbGllcyB0byBhbGwgbm9kZXMuIFdoZW4gdGhpcyBpcyBhIGZ1bmN0aW9uLCB0aGUgbm9kZSBpbiBxdWVzdGlvblxyXG4gICAgKiBpcyBwYXNzZWQgaW4uIERlZmF1bHRzIHRvIHRydWUuXHJcbiAgICAqL1xyXG4gICBhbGxvd05lc3Rpbmc/OiBib29sZWFuIHwgKChub2RlRGF0YTogTGltYmxlVHJlZU5vZGUpID0+IGJvb2xlYW4pO1xyXG4gICAvKipcclxuICAgICogV2hldGhlciB0byBhbGxvdyBhIG5vZGUgdG8gYmUgZHJhZ2dlZC4gV2hlbiB0aGlzIGlzIGEgYm9vbGVhbiwgaXQgYXBwbGllcyB0byBhbGwgbm9kZXMuIFdoZW4gdGhpc1xyXG4gICAgKiBpcyBhIGZ1bmN0aW9uLCB0aGUgbm9kZSBpbiBxdWVzdGlvbiBpcyBwYXNzZWQgaW4uIERlZmF1bHRzIHRvIHRydWUuXHJcbiAgICAqL1xyXG4gICBhbGxvd0RyYWdnaW5nPzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgLyoqIEEgY2FsbGJhY2sgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzb3VyY2VOb2RlIGNhbiBiZSBkcm9wcGVkIGF0IGEgcGFydGljdWxhciBsb2NhdGlvbi4gKi9cclxuICAgYWxsb3dEcm9wPzogKFxyXG4gICAgICBzb3VyY2VOb2RlOiBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgcHJvcG9zZWRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbCxcclxuICAgICAgcHJvcG9zZWRJbmRleDogbnVtYmVyXHJcbiAgICkgPT4gYm9vbGVhbjtcclxuICAgLyoqIFdoZW4gc2V0IHRvIHRydWUsIGxpc3QgbW9kZSB3aWxsIGVuZm9yY2UgYSBmbGF0IHRyZWUgc3RydWN0dXJlLCBtZWFuaW5nIHRoZXJlXHJcbiAgICAqIGNhbiBvbmx5IGJlIG9uZSBsZXZlbCBvZiB0aGUgdHJlZS4gYGFsbG93TmVzdGluZ2AgaXMgYXV0b21hdGljYWxseSBzZXQgdG8gYGZhbHNlYFxyXG4gICAgKiBhbmQgYW55IGNoaWxkcmVuIHdpbGwgYmUgZGVsZXRlZC5cclxuICAgICpcclxuICAgICogVGhpcyBtb2RlIGNhbiBiZSB1c2VkIHdoZW4gdGhlIHNhbWUgZHluYW1pYyBkcmFnIGFuZCBkcm9wIGZ1bmN0aW9uYWxpdHkgb2ZcclxuICAgICogdGhlIHRyZWUgaXMgZGVzaXJlZCwgYnV0IHRoZSB0cmVlIHN0cnVjdHVyZSBpdHNlbGYgaXMgbm90IG5lY2Vzc2FyeS4gVGhpc1xyXG4gICAgKiBhbHNvIG9wZW5zIHVwIHRoZSBwYWdpbmF0aW9uIEFQSSBvbiB0aGUgbGltYmxlLXRyZWUtcm9vdCBjb21wb25lbnQuIFNlZSB0aGVcclxuICAgICogUkVBRE1FIGZvciBkZXRhaWxzIG9uIHBhZ2luYXRpb24uXHJcbiAgICAqL1xyXG4gICBsaXN0TW9kZT86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBBbiBvYmplY3QgdGhhdCByZWZlcmVuY2VzIHRoZSBjb21wb25lbnQgdG8gYmUgcmVuZGVyZWQgYW5kIGl0cyBiaW5kaW5ncyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudE9iaiB7XHJcbiAgIC8qKiBUaGUgY29tcG9uZW50IGNsYXNzICovXHJcbiAgIGNsYXNzOiBUeXBlPHVua25vd24+O1xyXG4gICAvKiogVGhlIGJpbmRpbmdzIChpbnB1dHMgYW5kIG91dHB1dHMpIG9mIHRoZSBjbGFzcyAqL1xyXG4gICBiaW5kaW5ncz86IHtcclxuICAgICAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xyXG4gICB9O1xyXG59XHJcblxyXG4vKiogVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBgaW5kZW50YCBvcHRpb24gKi9cclxuZXhwb3J0IGNvbnN0IElOREVOVCA9IDQ1O1xyXG5cclxuLyoqIEFuIG9wdGlvbnMgb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgbG9hZGVkIHdoZXJlIGFwcGxpY2FibGUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zQmFzZSBleHRlbmRzIExpbWJsZVRyZWVPcHRpb25zIHtcclxuICAgZGVmYXVsdENvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgaW5kZW50OiBudW1iZXI7XHJcbiAgIGFsbG93TmVzdGluZzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgYWxsb3dEcmFnZ2luZzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgYWxsb3dEcm9wOiAoXHJcbiAgICAgIHNvdXJjZU5vZGU6IExpbWJsZVRyZWVOb2RlLFxyXG4gICAgICBwcm9wb3NlZFBhcmVudDogTGltYmxlVHJlZU5vZGUgfCBudWxsLFxyXG4gICAgICBwcm9wb3NlZEluZGV4OiBudW1iZXJcclxuICAgKSA9PiBib29sZWFuO1xyXG4gICBsaXN0TW9kZTogYm9vbGVhbjtcclxuICAgaXRlbXNQZXJQYWdlOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgIHBhZ2U6IG51bWJlciB8IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zV2l0aFBhZ2luYXRpb24gZXh0ZW5kcyBQcm9jZXNzZWRPcHRpb25zQmFzZSB7XHJcbiAgIGxpc3RNb2RlOiB0cnVlO1xyXG4gICBpdGVtc1BlclBhZ2U6IG51bWJlcjtcclxuICAgcGFnZTogbnVtYmVyO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NlZE9wdGlvbnNXaXRob3V0UGFnaW5hdGlvblxyXG4gICBleHRlbmRzIFByb2Nlc3NlZE9wdGlvbnNCYXNlIHtcclxuICAgbGlzdE1vZGU6IGZhbHNlO1xyXG4gICBpdGVtc1BlclBhZ2U6IHVuZGVmaW5lZDtcclxuICAgcGFnZTogdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBQcm9jZXNzZWRPcHRpb25zID1cclxuICAgfCBQcm9jZXNzZWRPcHRpb25zV2l0aFBhZ2luYXRpb25cclxuICAgfCBQcm9jZXNzZWRPcHRpb25zV2l0aG91dFBhZ2luYXRpb247XHJcblxyXG4vKiogdGhlIHZhbHVlIGVtaXR0ZWQgZnJvbSB0aGUgcm9vdCBjb21wb25lbnQgYWZ0ZXIgYSBub2RlIGlzIGRyb3BwZWQgKi9cclxuZXhwb3J0IGludGVyZmFjZSBUcmVlRHJvcCB7XHJcbiAgIC8qKiBUaGUgbm9kZSB0aGF0IHdhcyBkcm9wcGVkICovXHJcbiAgIHRhcmdldDogTGltYmxlVHJlZU5vZGU7XHJcbiAgIC8qKiB0aGUgdGFyZ2V0J3MgcGFyZW50IGJlZm9yZSB0aGUgZHJhZyBhbmQgZHJvcCwgb3IgbnVsbCBpZiBpdCB3YXMgYSB0b3AtbGV2ZWwgbm9kZSAqL1xyXG4gICBvbGRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbDtcclxuICAgLyoqIHRoZSBpbmRleCBvZiB0aGUgbm9kZSBiZWZvcmUgdGhlIGRyYWcgYW5kIGRyb3AgcmVsYXRpdmUgdG8gaXRzIG9sZCBzaWJsaW5ncyAqL1xyXG4gICBvbGRJbmRleDogbnVtYmVyO1xyXG4gICAvKiogdGhlIHRhcmdldCdzIHBhcmVudCBhZnRlciB0aGUgZHJhZyBhbmQgZHJvcCwgb3IgbnVsbCBpZiBpdCBpcyBub3cgYSB0b3AtbGV2ZWwgbm9kZSAqL1xyXG4gICBuZXdQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbDtcclxuICAgLyoqIHRoZSBpbmRleCBvZiB0aGUgbm9kZSBhZnRlciB0aGUgZHJhZyBhbmQgZHJvcCByZWxhdGl2ZSB0byBpdHMgbmV3IHNpYmxpbmdzICovXHJcbiAgIG5ld0luZGV4OiBudW1iZXI7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFRyZWVTZXJ2aWNlIHtcclxuICAgcHVibGljIGNoYW5nZXMkOiBSZXBsYXlTdWJqZWN0PG51bGw+O1xyXG4gICBwdWJsaWMgZHJvcHMkOiBSZXBsYXlTdWJqZWN0PFRyZWVEcm9wPjtcclxuICAgcHJpdmF0ZSBob3N0OiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZURhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBwcml2YXRlIHVuY3V0RGF0YTogTGltYmxlVHJlZURhdGEgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlT3B0aW9uczogUHJvY2Vzc2VkT3B0aW9ucyB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVNb2RlbDogQnJhbmNoPGFueT47XHJcbiAgIHByaXZhdGUgcGxhY2Vob2xkZXI6IGJvb2xlYW47XHJcblxyXG4gICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnRDcmVhdG9yU2VydmljZTogQ29tcG9uZW50Q3JlYXRvclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgZHJvcFpvbmVTZXJ2aWNlOiBEcm9wWm9uZVNlcnZpY2VcclxuICAgKSB7XHJcbiAgICAgIHRoaXMuY2hhbmdlcyQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcclxuICAgICAgdGhpcy5kcm9wcyQgPSBuZXcgUmVwbGF5U3ViamVjdCgxKTtcclxuICAgICAgdGhpcy50cmVlTW9kZWwgPSBuZXcgQnJhbmNoKG51bGwpO1xyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBJbml0aWFsaXplcyB0aGUgc2VydmljZSBhbmQgcmVuZGVycyB0aGUgdHJlZS5cclxuICAgICogQHBhcmFtIGhvc3QgLSBUaGUgVmlld0NvbnRhaW5lclJlZiBpbnRvIHdoaWNoIHRoZSB0cmVlIHdpbGwgYmUgcmVuZGVyZWQuXHJcbiAgICAqIEBwYXJhbSBkYXRhIC0gVGhlIGRhdGEgYXJyYXkgdGhhdCB3YXMgcGFzc2VkIGluIHRvIExpbWJsZVRyZWVSb290LCB3aGljaCBpc1xyXG4gICAgKiB0aGUgdXNlcnMnIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0cmVlXHJcbiAgICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0IHRoYXQgd2FzIHBhc3NlZCBpbiB0byBMaW1ibGVUcmVlUm9vdFxyXG4gICAgKi9cclxuICAgcHVibGljIGluaXQoXHJcbiAgICAgIGhvc3Q6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgIGRhdGE6IExpbWJsZVRyZWVEYXRhLFxyXG4gICAgICBvcHRpb25zPzogTGltYmxlVHJlZU9wdGlvbnMsXHJcbiAgICAgIGl0ZW1zUGVyUGFnZT86IG51bWJlcixcclxuICAgICAgcGFnZT86IG51bWJlclxyXG4gICApOiB2b2lkIHtcclxuICAgICAgdGhpcy5ob3N0ID0gaG9zdDtcclxuICAgICAgdGhpcy51bmN1dERhdGEgPSBkYXRhO1xyXG4gICAgICB0aGlzLnRyZWVPcHRpb25zID0gdGhpcy5wcm9jZXNzT3B0aW9ucyhvcHRpb25zLCBpdGVtc1BlclBhZ2UsIHBhZ2UpO1xyXG4gICAgICBpZiAodGhpcy50cmVlT3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICBsZXQgc3RhcnQgPVxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSAqICh0aGlzLnRyZWVPcHRpb25zLnBhZ2UgLSAxKTtcclxuICAgICAgICAgaWYgKGlzTmFOKHN0YXJ0KSkge1xyXG4gICAgICAgICAgICAvL1RoaXMgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSBpdGVtc1BlclBhZ2Ugd2FzIG5vdCBwYXNzZWQgYnkgdGhlIHVzZXIsXHJcbiAgICAgICAgICAgIC8vY2F1c2luZyBgc3RhcnRgIHRvIGVxdWFsIGluZmluaXR5KjAsIHdoaWNoIGlzIE5hTi5cclxuICAgICAgICAgICAgc3RhcnQgPSAwO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPSB0aGlzLnVuY3V0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9IHRoaXMudW5jdXREYXRhO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZW5kZXJzIHRoZSBlbnRpcmUgdHJlZSBmcm9tIHJvb3QgdG8gbGVhdmVzICovXHJcbiAgIHByaXZhdGUgcmVuZGVyKCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ob3N0LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsID0gbmV3IEJyYW5jaChudWxsKTtcclxuICAgICAgdGhpcy5kcm9wWm9uZVNlcnZpY2UucmVzZXQoKTtcclxuICAgICAgaWYgKHRoaXMudHJlZURhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgIC8vVHJlZSBpcyBlbXB0eSwgYnV0IHdlIGhhdmUgdG8gdG8gaGF2ZSBzb21ldGhpbmcgdGhlcmUgc28gb3RoZXIgdHJlZXMnIGl0ZW1zIGNhbiBiZSBkcm9wcGVkIGludG8gaXRcclxuICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IHRydWU7XHJcbiAgICAgICAgIGNvbnN0IHBsYWNlaG9sZGVyTm9kZTogTGltYmxlVHJlZU5vZGUgPSB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudDogeyBjbGFzczogTGltYmxlVHJlZVBsYWNlaG9sZGVyQ29tcG9uZW50IH1cclxuICAgICAgICAgfTtcclxuICAgICAgICAgY29uc3QgYnJhbmNoID0gbmV3IEJyYW5jaChwbGFjZWhvbGRlck5vZGUpO1xyXG4gICAgICAgICB0aGlzLnRyZWVNb2RlbC5hcHBlbmRDaGlsZChicmFuY2gpO1xyXG4gICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgICAgKTtcclxuICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xyXG4gICAgICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgdGhpcy50cmVlRGF0YSkge1xyXG4gICAgICAgICAgICBjb25zdCBicmFuY2ggPSBuZXcgQnJhbmNoKG5vZGUpO1xyXG4gICAgICAgICAgICB0aGlzLnRyZWVNb2RlbC5hcHBlbmRDaGlsZChicmFuY2gpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIHRoaXMudHJlZU1vZGVsLmdldENoaWxkcmVuKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRDcmVhdG9yU2VydmljZS5hcHBlbmRDb21wb25lbnQ8TGltYmxlVHJlZU5vZGVDb21wb25lbnQ+KFxyXG4gICAgICAgICAgICAgICBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCxcclxuICAgICAgICAgICAgICAgdGhpcy5ob3N0XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5icmFuY2ggPSBicmFuY2g7XHJcbiAgICAgICAgICAgIC8vVGhlIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50IHdpbGwgKGluZGlyZWN0bHkpIGNhbGwgdGhlIGByZW5kZXJCcmFuY2hgIG1ldGhvZCBvZiB0aGlzIHNlcnZpY2UgdG8gcmVuZGVyXHJcbiAgICAgICAgICAgIC8vaXRzIG93biBjaGlsZHJlblxyXG4gICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgIGlmICh0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZU1vZGVsIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgICAgfVxyXG4gICAgICAgICB0aGlzLmRyb3Bab25lU2VydmljZS5pbml0KHRoaXMudHJlZU1vZGVsLCB0aGlzLnRyZWVPcHRpb25zKTtcclxuICAgICAgICAgdGhpcy5jaGFuZ2VzJC5uZXh0KG51bGwpO1xyXG4gICAgICB9KTtcclxuICAgfVxyXG5cclxuICAgLyoqIFJlbmRlcnMgYSBicmFuY2ggb2YgdGhlIHRyZWUgYW5kIGFsbCBvZiBpdHMgZGVzY2VuZGFudHMgKi9cclxuICAgcHVibGljIHJlbmRlckJyYW5jaChob3N0OiBWaWV3Q29udGFpbmVyUmVmLCBicmFuY2g6IEJyYW5jaDxhbnk+KSB7XHJcbiAgICAgIGlmICh0aGlzLnRyZWVNb2RlbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgaG9zdC5jbGVhcigpO1xyXG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgYnJhbmNoLmRhdGEubm9kZXMgPz8gW10pIHtcclxuICAgICAgICAgY29uc3QgbmV3QnJhbmNoID0gbmV3IEJyYW5jaChub2RlKTtcclxuICAgICAgICAgYnJhbmNoLmFwcGVuZENoaWxkKG5ld0JyYW5jaCk7XHJcbiAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Q3JlYXRvclNlcnZpY2UuYXBwZW5kQ29tcG9uZW50PExpbWJsZVRyZWVOb2RlQ29tcG9uZW50PihcclxuICAgICAgICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgICAgICAgIGhvc3RcclxuICAgICAgICAgKTtcclxuICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IG5ld0JyYW5jaDtcclxuICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgIH1cclxuICAgfVxyXG5cclxuICAgcHJpdmF0ZSBwcm9jZXNzT3B0aW9ucyhcclxuICAgICAgb3B0aW9uczogTGltYmxlVHJlZU9wdGlvbnMgPSB7fSxcclxuICAgICAgaXRlbXNQZXJQYWdlOiBudW1iZXIgPSBJbmZpbml0eSxcclxuICAgICAgcGFnZTogbnVtYmVyID0gMVxyXG4gICApOiBQcm9jZXNzZWRPcHRpb25zIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICBvcHRpb25zLmxpc3RNb2RlID09PSB0cnVlICYmXHJcbiAgICAgICAgIG9wdGlvbnMuYWxsb3dOZXN0aW5nICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgb3B0aW9ucy5hbGxvd05lc3RpbmcgIT09IGZhbHNlXHJcbiAgICAgICkge1xyXG4gICAgICAgICBjb25zb2xlLndhcm4oXHJcbiAgICAgICAgICAgIFwiVGhlIHZhbHVlIG9mIGBhbGxvd05lc3RpbmdgIHdpbGwgYmUgaWdub3JlZDsgaXQgbXVzdCBiZSBmYWxzZSB3aGVuIGBsaXN0TW9kZWAgaXMgdHJ1ZVwiXHJcbiAgICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVzdWx0OiBQcm9jZXNzZWRPcHRpb25zQmFzZSA9IHtcclxuICAgICAgICAgZGVmYXVsdENvbXBvbmVudDogb3B0aW9ucy5kZWZhdWx0Q29tcG9uZW50LFxyXG4gICAgICAgICBpbmRlbnQ6IG9wdGlvbnMuaW5kZW50ID8/IElOREVOVCxcclxuICAgICAgICAgYWxsb3dOZXN0aW5nOlxyXG4gICAgICAgICAgICBvcHRpb25zLmxpc3RNb2RlICE9PSB0cnVlICYmIChvcHRpb25zLmFsbG93TmVzdGluZyA/PyB0cnVlKSxcclxuICAgICAgICAgYWxsb3dEcmFnZ2luZzogb3B0aW9ucy5hbGxvd0RyYWdnaW5nID8/IHRydWUsXHJcbiAgICAgICAgIGFsbG93RHJvcDogb3B0aW9ucy5hbGxvd0Ryb3AgPz8gKCgpID0+IHRydWUpLFxyXG4gICAgICAgICBsaXN0TW9kZTogb3B0aW9ucy5saXN0TW9kZSA/PyBmYWxzZSxcclxuICAgICAgICAgaXRlbXNQZXJQYWdlOiBvcHRpb25zLmxpc3RNb2RlID8gaXRlbXNQZXJQYWdlIDogdW5kZWZpbmVkLFxyXG4gICAgICAgICBwYWdlOiBvcHRpb25zLmxpc3RNb2RlID8gcGFnZSA6IHVuZGVmaW5lZFxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gcmVzdWx0IGFzIFByb2Nlc3NlZE9wdGlvbnM7XHJcbiAgIH1cclxuXHJcbiAgIHB1YmxpYyBkcm9wKHNvdXJjZTogQnJhbmNoPGFueT4sIHRhcmdldENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcykge1xyXG4gICAgICBjb25zdCBzb3VyY2VQYXJlbnQgPSBzb3VyY2UuZ2V0UGFyZW50KCk7XHJcbiAgICAgIGNvbnN0IHNvdXJjZUluZGV4ID0gc291cmNlLmdldEluZGV4KCk7XHJcbiAgICAgIGlmIChzb3VyY2VJbmRleCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBtb3ZlIHRoZSBoaWRkZW4gcm9vdCBub2RlXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0YXJnZXRQYXJlbnRDb29yZGluYXRlczogQnJhbmNoQ29vcmRpbmF0ZXM7XHJcbiAgICAgIGxldCBpbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFtdO1xyXG4gICAgICAgICBpbmRleCA9IDA7XHJcbiAgICAgICAgIHRoaXMudHJlZU1vZGVsLnJlbW92ZUNoaWxkKDApOyAvL3JlbW92ZSB0aGUgcGxhY2Vob2xkZXJcclxuICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFsuLi50YXJnZXRDb29yZGluYXRlc107XHJcbiAgICAgICAgIGluZGV4ID0gdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXMucG9wKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGFyZ2V0IGNvb3JkaW5hdGVzIGFyZSBlbXB0eVwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0YXJnZXRQYXJlbnQgPSB0aGlzLnRyZWVNb2RlbC5nZXREZXNjZW5kYW50KFxyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlc1xyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0UGFyZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY291bGQgbm90IGdldCB0byB0YXJnZXRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGFyZ2V0UGFyZW50Lmluc2VydENoaWxkKHNvdXJjZSwgaW5kZXgpO1xyXG4gICAgICB0aGlzLnJlYnVpbGRUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLmRyb3BzJC5uZXh0KHtcclxuICAgICAgICAgdGFyZ2V0OiBzb3VyY2UuZGF0YSxcclxuICAgICAgICAgb2xkUGFyZW50OiBzb3VyY2VQYXJlbnQ/LmRhdGEgYXMgTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgICAgIG9sZEluZGV4OiBzb3VyY2VJbmRleCxcclxuICAgICAgICAgbmV3UGFyZW50OiB0YXJnZXRQYXJlbnQuZGF0YSxcclxuICAgICAgICAgbmV3SW5kZXg6IGluZGV4XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgcmVtb3ZlKHRhcmdldDogQnJhbmNoPGFueT4pIHtcclxuICAgICAgdGFyZ2V0LnJlbW92ZSgpO1xyXG4gICAgICB0aGlzLnJlYnVpbGRUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRUcmVlRGF0YSgpOiB2b2lkIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgICB0aGlzLnVuY3V0RGF0YSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWUgZGF0YSBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50cmVlRGF0YS5sZW5ndGggPSAwO1xyXG4gICAgICBmb3IgKGNvbnN0IGJyYW5jaCBvZiB0aGlzLnRyZWVNb2RlbC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goYnJhbmNoKSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMubGlzdE1vZGUgPT09IHRydWUpIHtcclxuICAgICAgICAgbGV0IHN0YXJ0ID1cclxuICAgICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2UgKiAodGhpcy50cmVlT3B0aW9ucy5wYWdlIC0gMSk7XHJcbiAgICAgICAgIGlmIChpc05hTihzdGFydCkpIHtcclxuICAgICAgICAgICAgLy9UaGlzIGNhdGNoZXMgdGhlIGNhc2Ugd2hlcmUgaXRlbXNQZXJQYWdlIHdhcyBub3QgcGFzc2VkIGJ5IHRoZSB1c2VyLFxyXG4gICAgICAgICAgICAvL2NhdXNpbmcgYHN0YXJ0YCB0byBlcXVhbCBpbmZpbml0eSowLCB3aGljaCBpcyBOYU4uXHJcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICB0aGlzLnVuY3V0RGF0YS5zcGxpY2UoXHJcbiAgICAgICAgICAgIHN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSxcclxuICAgICAgICAgICAgLi4udGhpcy50cmVlRGF0YVxyXG4gICAgICAgICApO1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy51bmN1dERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhID0gdGhpcy50cmVlRGF0YTtcclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHJlYnVpbGRCcmFuY2goYnJhbmNoOiBCcmFuY2g8YW55Pik6IExpbWJsZVRyZWVOb2RlIHtcclxuICAgICAgY29uc3QgdGVtcDogTGltYmxlVHJlZU5vZGUgPSBicmFuY2guZGF0YTtcclxuICAgICAgdGVtcC5ub2RlcyA9IFtdO1xyXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGJyYW5jaC5nZXRDaGlsZHJlbigpKSB7XHJcbiAgICAgICAgIHRlbXAubm9kZXMucHVzaCh0aGlzLnJlYnVpbGRCcmFuY2goY2hpbGQpKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGVtcDtcclxuICAgfVxyXG5cclxuICAgcHVibGljIGdldFBsYWNlaG9sZGVyKCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5wbGFjZWhvbGRlcjtcclxuICAgfVxyXG59XHJcbiJdfQ==

@@ -1132,2 +1132,3 @@ import { Injectable, ComponentFactoryResolver, Component, Input, ChangeDetectorRef, ViewChild, ViewContainerRef, Output, ElementRef, EventEmitter, NgModule } from '@angular/core';

else {
this.placeholder = false;
for (const node of this.treeData) {

@@ -1134,0 +1135,0 @@ const branch = new Branch(node);

{
"name": "@limble/limble-tree",
"version": "0.7.0",
"version": "0.7.1",
"peerDependencies": {

@@ -5,0 +5,0 @@ "@angular/common": "^11.2.3",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc