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.8.0 to 0.8.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("@angular/common"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@limble/limble-tree",["exports","@angular/core","rxjs","@angular/common","rxjs/operators"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).limble=e.limble||{},e.limble["limble-tree"]={}),e.ng.core,e.rxjs,e.ng.common,e.rxjs.operators)}(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 l(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 s(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(l(arguments[t]));return e}Object.create;var d=function(e,t){return{active:e,related:t}},c=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 p(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 s=l(i.value,2),d=s[0],c=s[1],h=t[d];if(c instanceof Array&&h instanceof Array){if(!p(c,h))return!1}else if(c!==h)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 h(e,t){return void 0!==e&&(!0===e.allowNesting||"function"==typeof e.allowNesting&&void 0!==t&&!0===e.allowNesting(t))}c.ɵfac=function(e){return new(e||c)(t.ɵɵdirectiveInject(w))},c.ɵcmp=t.ɵɵdefineComponent({type:c,selectors:[["drop-zone"]],inputs:{active:"active",coordinates:"coordinates"},decls:2,vars:4,consts:[[1,"dropZoneContainer",3,"dragenter"],[3,"ngClass"]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div",0),t.ɵɵlistener("dragenter",(function(){return r.dragenterHandler()})),t.ɵɵelement(1,"div",1),t.ɵɵelementEnd()),2&e&&(t.ɵɵadvance(1),t.ɵɵproperty("ngClass",t.ɵɵpureFunction2(1,d,r.active,!r.active)))},directives:[n.NgClass],styles:[".active[_ngcontent-%COMP%]{height:105px;border-radius:5px;background:#f0f9ff;border:2px dashed #bed2db}.active[_ngcontent-%COMP%], .related[_ngcontent-%COMP%]{margin:10px 0;width:calc(100% - 20px);box-sizing:border-box}.related[_ngcontent-%COMP%]{height:30px;border-radius:5px;background:#fff6f0;border:1px dashed #dbccbe;opacity:.8}.dropZoneContainer[_ngcontent-%COMP%]{position:relative}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(c,[{type:t.Component,args:[{selector:"drop-zone",templateUrl:"./drop-zone.component.html",styleUrls:["./drop-zone.component.scss"]}]}],(function(){return[{type:w}]}),{active:[{type:t.Input}],coordinates:[{type:t.Input}]});var u=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 l=i.value;if(void 0===(n=n.getChild(l)))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.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 l=i.value;if(void 0===(n=n.children[l]))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 l=i.value;n.appendChild(l.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 v(e.data);try{for(var o=a(e.getChildren()),i=o.next();!i.done;i=o.next()){var l=i.value;n.appendChild(v.fromBranch(l)).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 v=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()),s=i.next();!s.done;s=i.next()){var d=l(s.value,2),c=d[0],p=d[1],h=void 0;if(void 0===(h=c===e.length-1&&!0===t?o.getHiddenChild(p):o.getChild(p)))return;o=h}}catch(e){r={error:e}}finally{try{s&&!s.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 s=l(i.value,2),d=s[0];if(s[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 s=l(i.value,2),d=s[0],c=s[1];n.addHiddenChild(c.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}(u),g=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}();g.ɵfac=function(e){return new(e||g)},g.ɵprov=t.ɵɵdefineInjectable({token:g,factory:g.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(g,[{type:t.Injectable}],(function(){return[]}),null);var y=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}();function m(e,t){var r=e.getCoordinates(),n=t.getCoordinates();return r.length>n.length?-1:r.length<n.length?1:0}y.ɵfac=function(e){return new(e||y)(t.ɵɵinject(t.ComponentFactoryResolver))},y.ɵprov=t.ɵɵdefineInjectable({token:y,factory:y.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(y,[{type:t.Injectable}],(function(){return[{type:t.ComponentFactoryResolver}]}),null);var w=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 p(t.coordinates,e)}))){var r=new v({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.restoreFamilies(),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 p(t.getCoordinates(),e.coordinates)}))||(i.dropZoneInventory.push(e.dropZone),i.addToTree(e.dropZone,e.coordinates))},i=this;try{for(var l=a(this.dropZoneStack),s=l.next();!s.done;s=l.next()){o(s.value)}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=l.return)&&n.call(l)}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=v.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 l=a(this.tempFamilies[1].members),s=l.next();!s.done;s=l.next()){s.value.data.family=this.tempFamilies[1]}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}}this.tempFamilies=[]}},e.prototype.showDropZoneFamily=function(e,t){var r,n,o,i,l,d;if(void 0===t&&(t={joinFamilies:!1,activateLowestInsteadOfFounder:!1}),null===this.activeDropZone||!p(this.activeDropZone.getCoordinates(),e)){if(null===this.visibleFamily&&null===this.activeDropZone||this.clear(),void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var c=this.treeWithDropZones.findByCoordinates(e,!0);if(void 0===c)throw new Error("Could not find drop zone to show");var h=c.data.family;if(!0===t.joinFamilies){var u=s(e);u[u.length-1]++;var f=this.treeWithDropZones.findByCoordinates(u,!0);if(void 0===f)throw new Error("Could not find drop zone to show");var v=f.data.family;if(void 0===h||void 0===v)throw new Error("No family");var g={founder:h.founder,members:s(h.members)};try{for(var y=a(h.members),w=y.next();!w.done;w=y.next()){(I=w.value).data.family=g,I===h.founder?this.showDropZone(I,!0):this.showDropZone(I)}}catch(e){r={error:e}}finally{try{w&&!w.done&&(n=y.return)&&n.call(y)}finally{if(r)throw r.error}}try{for(var b=a(v.members),C=b.next();!C.done;C=b.next()){(I=C.value).data.family=g,I.getCoordinates().length<f.getCoordinates().length&&(g.members.push(I),this.showDropZone(I))}}catch(e){o={error:e}}finally{try{C&&!C.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}this.tempFamilies=[h,v];var Z=this.dropZoneFamilies.indexOf(h);this.dropZoneFamilies.splice(Z,1);var D=this.dropZoneFamilies.indexOf(v);this.dropZoneFamilies.splice(D,1),this.dropZoneFamilies.push(g),this.visibleFamily=g}else{if(void 0===h)throw new Error("No family");this.visibleFamily=h;try{for(var S=a(h.members),x=S.next();!x.done;x=S.next()){var I;(I=x.value)===h.founder?this.showDropZone(I,!0):this.showDropZone(I)}}catch(e){l={error:e}}finally{try{x&&!x.done&&(d=S.return)&&d.call(S)}finally{if(l)throw l.error}}}if(!0===t.activateLowestInsteadOfFounder){var E=s(this.visibleFamily.members).sort(m).pop();if(void 0===E)throw new Error("Could not get lowest member");this.swapActiveDropZone(E.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 p(t.getCoordinates(),e)})))throw new Error("failed to swap active drop zone");t.data.componentRef&&(t.data.componentRef.instance.active=!1);var r=this.treeWithDropZones.findByCoordinates(e,!0);if(void 0===r)throw new Error("Failed to get new drop zone");this.setActiveDropZone(r)},e.prototype.addToTree=function(e,t){if(void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var r=s(t);r.pop();var n=this.treeWithDropZones.findByCoordinates(r);if(void 0===n)throw new Error("could not get parent");n.addHiddenChild(e,t[t.length-1])},e.prototype.assignFamilies=function(){var e,t,r,n,o,i,l=s(this.dropZoneInventory),d=l.filter((function(e){var t=e.getCoordinates();return 0===t[t.length-1]&&t.length>1})).sort((function(e,t){for(var r,n,o,i,a=e.getCoordinates(),l=t.getCoordinates(),s=Math.max(a.length,l.length),d=0;d<s;d++){if((null!==(r=a[d])&&void 0!==r?r:-1)>(null!==(n=l[d])&&void 0!==n?n:-1))return-1;if((null!==(o=a[d])&&void 0!==o?o:-1)<(null!==(i=l[d])&&void 0!==i?i:-1))return 1}return 0})),c=function(e){if(!l.includes(e))return"continue";var t={founder:e,members:[]};e.data.family=t;for(var r=s(e.getCoordinates());r.length>0;){var n=l.findIndex((function(e){return p(e.getCoordinates(),r)}));if(-1!==n){var o=l.splice(n,1)[0];t.members.push(o),o.data.family=t}r.pop(),r[r.length-1]++}h.dropZoneFamilies.push(t)},h=this;try{for(var u=a(d),f=u.next();!f.done;f=u.next()){c(y=f.value)}}catch(t){e={error:t}}finally{try{f&&!f.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}try{for(var v=a(l.filter((function(e){return 1===e.getCoordinates().length}))),g=v.next();!g.done;g=v.next()){var y,m={founder:y=g.value,members:[y]};y.data.family=m,this.dropZoneFamilies.push(m),l.splice(l.indexOf(y),1)}}catch(e){r={error:e}}finally{try{g&&!g.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}if(0!==l.length){var w="";try{for(var b=a(l),C=b.next();!C.done;C=b.next()){var Z=C.value;w+=JSON.stringify(Z.getCoordinates())+", "}}catch(e){o={error:e}}finally{try{C&&!C.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}throw w=w.slice(0,w.length-2),new Error("Some zones were not assigned to a family. The orphan zones have the following coordinates: "+w)}},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(c,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}();w.ɵfac=function(e){return new(e||w)(t.ɵɵinject(g),t.ɵɵinject(y))},w.ɵprov=t.ɵɵdefineInjectable({token:w,factory:w.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(w,[{type:t.Injectable}],(function(){return[{type:g},{type:y}]}),null);var b=["host"],C=["dropZoneInside"];function Z(e,t){}function D(e,t){}var S=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}();function x(e){var t,r,n,o=/(auto|scroll)/,i=function(e,t){return null===e||null===e.parentNode?t:i(e.parentElement,t.concat([e]))},l=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},s=function(e){return o.test(function(e){return l(e,"overflow")+l(e,"overflow-y")+l(e,"overflow-x")}(e))},d=i(e.parentElement,[]);try{for(var c=a(d),p=c.next();!p.done;p=c.next()){var h=p.value;if(s(h))return h}}catch(e){t={error:e}}finally{try{p&&!p.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return null!==(n=document.scrollingElement)&&void 0!==n?n:document.documentElement}S.ɵfac=function(e){return new(e||S)(t.ɵɵdirectiveInject($),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},S.ɵcmp=t.ɵɵdefineComponent({type:S,selectors:[["limble-tree-branch"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(b,1,t.ViewContainerRef),t.ɵɵviewQuery(C,1,t.ViewContainerRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneInside=n.first)}},inputs:{branch:"branch"},outputs:{dropZoneInside$:"dropZoneInside$"},decls:6,vars:3,consts:[["dropZoneInside",""],[1,"limble-child-nodes",3,"hidden"],["host",""]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div"),t.ɵɵtemplate(1,Z,0,0,"ng-template",null,0,t.ɵɵtemplateRefExtractor),t.ɵɵelementStart(3,"span",1),t.ɵɵtemplate(4,D,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵelementEnd()),2&e&&(t.ɵɵstyleProp("margin-left",r.indent,"px"),t.ɵɵadvance(3),t.ɵɵproperty("hidden",r.branch&&r.branch.data.collapsed))},styles:["./limble-tree-branch.component.scss"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(S,[{type:t.Component,args:[{selector:"limble-tree-branch",templateUrl:"./limble-tree-branch.component.html",styles:["./limble-tree-branch.component.scss"]}]}],(function(){return[{type:$},{type:t.ChangeDetectorRef}]}),{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 I=function(){function e(){this.globalDrag$=r.fromEvent(document,"drag"),this.scrolling=!1}return e.prototype.addScrolling=function(){var e,t,r,n,i,a,l,s,d,c=this;void 0===this.globalDragSubscription&&(this.globalDragSubscription=this.globalDrag$.pipe(o.throttleTime(25),o.filter((function(o){if(!o.target)return!1;s=x(o.target),e=s.clientHeight;var l,c=s.clientWidth;if("fixed"===window.getComputedStyle(s).getPropertyValue("position").toLowerCase())l=o.clientX,d=o.clientY;else{var p=s.getBoundingClientRect(),h=x(s);l=o.clientX-(p.left+h.scrollLeft),d=o.clientY-(p.top+h.scrollTop)}return!(l<0||l>c||d<0||d>e)&&(t=Math.max(.1*e,100),a=d>(n=e-t),(i=d<(r=t))||a)}))).subscribe((function(){if(null!==s){var o,p=s.scrollHeight-e,h=s.scrollTop;if(i&&h>0){o=h-75*((r-d)/t)}else{if(!a||!(h<p))return;o=h+75*((d-n)/t)}(o=Math.max(0,Math.min(p,o)))!==h&&(s.scrollTo({top:o}),c.scrolling=!0,clearTimeout(l),l=setTimeout((function(){c.scrolling=!1}),100))}})))},e.prototype.removeScrolling=function(){void 0!==this.globalDragSubscription&&this.globalDragSubscription.unsubscribe()},e}();I.ɵfac=function(e){return new(e||I)},I.ɵprov=t.ɵɵdefineInjectable({token:I,factory:I.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(I,[{type:t.Injectable}],(function(){return[]}),null);var E=["nodeHost"],M=["dropZoneAbove"],P=["dropZoneBelow"],F=["children"],O=["draggableDiv"];function R(e,t){}function j(e,t){}function H(e,t){}function A(e,t){}var T=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(){var e;if(n.classList.add("dragging"),void 0===r.branch)throw new Error("Could not show surrounding drop zones");var t,o=r.branch.getParent(),i=!0;null!==(null==o?void 0:o.data)&&(t=null==o?void 0:o.data,i=h(r.treeService.treeOptions,t)),void 0!==r.dropZoneAbove&&i&&(r.dropZoneService.showDropZoneFamily(r.branch.getCoordinates(),{joinFamilies:!0}),1===(null===(e=r.treeService.treeData)||void 0===e?void 0:e.length)&&1===r.branch.getCoordinates().length&&r.treeService.usePlaceholder())})))},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(),this.dropZoneService.restoreFamilies(),void this.treeService.removePlaceholder();this.dragStateService.state$.pipe(o.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,l=2*a,d=this.branch.getParent(),c=!0;if(null!==(null==d?void 0:d.data)&&(i=null==d?void 0:d.data,c=h(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&&c){p=s(this.branch.getCoordinates());this.dropZoneService.showDropZoneFamily(p,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<l&&void 0!==this.dropZoneInside&&(null===(r=this.dropZoneService.getActiveDropZone())||void 0===r?void 0:r.data.container)!==this.dropZoneInside){(p=s(this.branch.getCoordinates())).push(0),this.dropZoneService.showDropZoneFamily(p)}else if(e.offsetY>=l&&void 0!==this.dropZoneBelow&&(null===(n=this.dropZoneService.getActiveDropZone())||void 0===n?void 0:n.data.container)!==this.dropZoneBelow&&0===this.branch.getChildren().length&&c){(p=s(this.branch.getCoordinates()))[p.length-1]++,this.dropZoneService.showDropZoneFamily(p)}}else{var p=s(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)&&!0!==this.treeService.getPlaceholder()){if(void 0===this.branch)throw new Error("branch is undefined");var r=this.componentCreatorService.appendComponent(S,this.children);r.instance.branch=this.branch,h(this.treeService.treeOptions,this.branch.data)&&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,h(this.treeService.treeOptions,t))){var n=this.branch.getCoordinates(),o=s(n);if(this.dropZoneService.addDropZone(o,this.dropZoneAbove),!0!==this.treeService.getPlaceholder()){var i=s(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,n,i=this.draggableDiv.nativeElement,a=i.querySelector(".limble-tree-handle");r=this.treeService.treeOptions,n=null===(e=this.branch)||void 0===e?void 0:e.data,void 0===r||!0!==r.allowDragging&&("function"!=typeof r.allowDragging||void 0===n||!0!==r.allowDragging(n))?i.setAttribute("draggable","false"):null===a?i.setAttribute("draggable","true"):a.addEventListener("mousedown",(function(){i.setAttribute("draggable","true");var e=t.dragStateService.state$.pipe(o.filter((function(e){return"dragging"===e})),o.first());t.dragStateService.state$.pipe(o.skipUntil(e),o.filter((function(e){return"idle"===e})),o.first()).subscribe((function(){i.setAttribute("draggable","false")}))}))}},e}();T.ɵfac=function(e){return new(e||T)(t.ɵɵdirectiveInject(y),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(g),t.ɵɵdirectiveInject(w),t.ɵɵdirectiveInject($),t.ɵɵdirectiveInject(I))},T.ɵcmp=t.ɵɵdefineComponent({type:T,selectors:[["limble-tree-node"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(E,1,t.ViewContainerRef),t.ɵɵviewQuery(M,1,t.ViewContainerRef),t.ɵɵviewQuery(P,1,t.ViewContainerRef),t.ɵɵviewQuery(F,1,t.ViewContainerRef),t.ɵɵviewQuery(O,1,t.ElementRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.nodeHost=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneAbove=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneBelow=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.children=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.draggableDiv=n.first)}},inputs:{branch:"branch"},decls:11,vars:0,consts:[["dropZoneAbove",""],[1,"limble-parent-container",3,"dragstart","dragend"],["draggableDiv",""],[3,"dragover"],["nodeHost",""],["children",""],["dropZoneBelow",""]],template:function(e,r){1&e&&(t.ɵɵtemplate(0,R,0,0,"ng-template",null,0,t.ɵɵtemplateRefExtractor),t.ɵɵelementStart(2,"div",1,2),t.ɵɵlistener("dragstart",(function(e){return r.dragstartHandler(e)}))("dragend",(function(e){return r.dragendHandler(e)})),t.ɵɵelementStart(4,"div",3),t.ɵɵlistener("dragover",(function(e){return r.dragoverHandler(e)})),t.ɵɵtemplate(5,j,0,0,"ng-template",null,4,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(7,H,0,0,"ng-template",null,5,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(9,A,0,0,"ng-template",null,6,t.ɵɵtemplateRefExtractor))},styles:[".dragging[_ngcontent-%COMP%]{position:absolute;transition:transform .01s;transform:translateX(-9999px)}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(T,[{type:t.Component,args:[{selector:"limble-tree-node",templateUrl:"./limble-tree-node.component.html",styleUrls:["./limble-tree-node.component.scss"]}]}],(function(){return[{type:y},{type:t.ChangeDetectorRef},{type:g},{type:w},{type:$},{type:I}]}),{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 V=function(){};V.ɵfac=function(e){return new(e||V)},V.ɵcmp=t.ɵɵdefineComponent({type:V,selectors:[["limble-tree-placeholder"]],decls:1,vars:0,consts:[[1,"placeholder"]],template:function(e,r){1&e&&t.ɵɵelement(0,"div",0)},styles:[".placeholder[_ngcontent-%COMP%]{width:100%;height:20px}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(V,[{type:t.Component,args:[{selector:"limble-tree-placeholder",templateUrl:"./limble-tree-placeholder.component.html",styleUrls:["./limble-tree-placeholder.component.scss"]}]}],null,null);var $=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 u(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.usePlaceholder=function(){if(!0!==this.placeholder){if(void 0===this.host)throw new Error("TreeModel not initialized");this.placeholder=!0;var e=new u({component:{class:V}});this.treeModel.appendChild(e),this.componentCreatorService.appendComponent(T,this.host).instance.branch=e}},e.prototype.removePlaceholder=function(){if(!1!==this.placeholder){var e=this.treeModel.getChildren().length-1;-1!==e&&this.treeModel.removeChild(e),this.placeholder=!1}},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.dropZoneService.reset(),this.treeModel=new u(null),0===this.treeData.length)this.usePlaceholder();else{this.removePlaceholder();try{for(var i=a(this.treeData),l=i.next();!l.done;l=i.next()){var s=l.value,d=new u(s);this.treeModel.appendChild(d)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}try{for(var c=a(this.treeModel.getChildren()),p=c.next();!p.done;p=c.next()){d=p.value;this.componentCreatorService.appendComponent(T,this.host).instance.branch=d}}catch(e){r={error:e}}finally{try{p&&!p.done&&(n=c.return)&&n.call(c)}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:[]),l=i.next();!l.done;l=i.next()){var s=l.value,d=new u(s);t.appendChild(d),this.componentCreatorService.appendComponent(T,e).instance.branch=d}}catch(e){r={error:e}}finally{try{l&&!l.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,l;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!==(l=e.listMode)&&void 0!==l&&l,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.removePlaceholder()):n=(r=s(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.removePlaceholder(),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 l=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(l)&&(l=0);var d=l+this.treeOptions.itemsPerPage;(r=this.uncutData).splice.apply(r,s([l,this.treeOptions.itemsPerPage],this.treeData)),this.treeData=this.uncutData.slice(l,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 l=i.value;n.nodes.push(this.rebuildBranch(l))}}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}();$.ɵfac=function(e){return new(e||$)(t.ɵɵinject(y),t.ɵɵinject(w))},$.ɵprov=t.ɵɵdefineInjectable({token:$,factory:$.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata($,[{type:t.Injectable}],(function(){return[{type:y},{type:w}]}),null);var z=["host"],B=["dropZoneInside"];function N(e,t){}function Q(e,t){}var _=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()},e}();_.ɵfac=function(e){return new(e||_)(t.ɵɵdirectiveInject($),t.ɵɵdirectiveInject(w),t.ɵɵdirectiveInject(g),t.ɵɵdirectiveInject(I))},_.ɵcmp=t.ɵɵdefineComponent({type:_,selectors:[["limble-tree-root"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(z,1,t.ViewContainerRef),t.ɵɵviewQuery(B,1,t.ViewContainerRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneInside=n.first)}},inputs:{data:"data",options:"options",itemsPerPage:"itemsPerPage",page:"page"},outputs:{dropZoneInside$:"dropZoneInside$",treeChange:"treeChange",treeDrop:"treeDrop"},features:[t.ɵɵProvidersFeature([$,w]),t.ɵɵNgOnChangesFeature],decls:5,vars:0,consts:[[3,"dragover","dragleave","drop"],["dropZoneInside",""],["host",""]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div",0),t.ɵɵlistener("dragover",(function(e){return r.dragoverHandler(e)}))("dragleave",(function(e){return r.dragleaveHandler(e)}))("drop",(function(e){return r.dropHandler(e)})),t.ɵɵtemplate(1,N,0,0,"ng-template",null,1,t.ɵɵtemplateRefExtractor),t.ɵɵtemplate(3,Q,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd())},styles:[""]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(_,[{type:t.Component,args:[{selector:"limble-tree-root",templateUrl:"./limble-tree-root.component.html",styleUrls:["./limble-tree-root.component.scss"],providers:[$,w]}]}],(function(){return[{type:$},{type:w},{type:g},{type:I}]}),{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 k=function(){};k.ɵmod=t.ɵɵdefineNgModule({type:k}),k.ɵinj=t.ɵɵdefineInjector({factory:function(e){return new(e||k)},providers:[y,g,I],imports:[[n.CommonModule]]}),("undefined"==typeof ngJitMode||ngJitMode)&&t.ɵɵsetNgModuleScope(k,{declarations:[S,c,T,_,V],imports:[n.CommonModule],exports:[_]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(k,[{type:t.NgModule,args:[{declarations:[S,c,T,_,V],imports:[n.CommonModule],exports:[_],providers:[y,g,I]}]}],null,null),e.LimbleTreeModule=k,e.LimbleTreeRootComponent=_,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 l(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 s(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(l(arguments[t]));return e}Object.create;var d=function(e,t){return{active:e,related:t}},c=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 p(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 s=l(i.value,2),d=s[0],c=s[1],h=t[d];if(c instanceof Array&&h instanceof Array){if(!p(c,h))return!1}else if(c!==h)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 h(e,t){return void 0!==e&&(!0===e.allowNesting||"function"==typeof e.allowNesting&&void 0!==t&&!0===e.allowNesting(t))}c.ɵfac=function(e){return new(e||c)(t.ɵɵdirectiveInject(w))},c.ɵcmp=t.ɵɵdefineComponent({type:c,selectors:[["drop-zone"]],inputs:{active:"active",coordinates:"coordinates"},decls:2,vars:4,consts:[[1,"dropZoneContainer",3,"dragenter"],[3,"ngClass"]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div",0),t.ɵɵlistener("dragenter",(function(){return r.dragenterHandler()})),t.ɵɵelement(1,"div",1),t.ɵɵelementEnd()),2&e&&(t.ɵɵadvance(1),t.ɵɵproperty("ngClass",t.ɵɵpureFunction2(1,d,r.active,!r.active)))},directives:[n.NgClass],styles:[".active[_ngcontent-%COMP%]{height:105px;border-radius:5px;background:#f0f9ff;border:2px dashed #bed2db}.active[_ngcontent-%COMP%], .related[_ngcontent-%COMP%]{margin:10px 0;width:calc(100% - 20px);box-sizing:border-box}.related[_ngcontent-%COMP%]{height:30px;border-radius:5px;background:#fff6f0;border:1px dashed #dbccbe;opacity:.8}.dropZoneContainer[_ngcontent-%COMP%]{position:relative}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(c,[{type:t.Component,args:[{selector:"drop-zone",templateUrl:"./drop-zone.component.html",styleUrls:["./drop-zone.component.scss"]}]}],(function(){return[{type:w}]}),{active:[{type:t.Input}],coordinates:[{type:t.Input}]});var u=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 l=i.value;if(void 0===(n=n.getChild(l)))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.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 l=i.value;if(void 0===(n=n.children[l]))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 l=i.value;n.appendChild(l.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 v(e.data);try{for(var o=a(e.getChildren()),i=o.next();!i.done;i=o.next()){var l=i.value;n.appendChild(v.fromBranch(l)).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 v=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()),s=i.next();!s.done;s=i.next()){var d=l(s.value,2),c=d[0],p=d[1],h=void 0;if(void 0===(h=c===e.length-1&&!0===t?o.getHiddenChild(p):o.getChild(p)))return;o=h}}catch(e){r={error:e}}finally{try{s&&!s.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 s=l(i.value,2),d=s[0];if(s[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 s=l(i.value,2),d=s[0],c=s[1];n.addHiddenChild(c.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}(u),g=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}();g.ɵfac=function(e){return new(e||g)},g.ɵprov=t.ɵɵdefineInjectable({token:g,factory:g.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(g,[{type:t.Injectable}],(function(){return[]}),null);var y=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}();function m(e,t){var r=e.getCoordinates(),n=t.getCoordinates();return r.length>n.length?-1:r.length<n.length?1:0}y.ɵfac=function(e){return new(e||y)(t.ɵɵinject(t.ComponentFactoryResolver))},y.ɵprov=t.ɵɵdefineInjectable({token:y,factory:y.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(y,[{type:t.Injectable}],(function(){return[{type:t.ComponentFactoryResolver}]}),null);var w=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 p(t.coordinates,e)}))){var r=new v({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.restoreFamilies(),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 p(t.getCoordinates(),e.coordinates)}))||(i.dropZoneInventory.push(e.dropZone),i.addToTree(e.dropZone,e.coordinates))},i=this;try{for(var l=a(this.dropZoneStack),s=l.next();!s.done;s=l.next()){o(s.value)}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=l.return)&&n.call(l)}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=v.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 l=a(this.tempFamilies[1].members),s=l.next();!s.done;s=l.next()){s.value.data.family=this.tempFamilies[1]}}catch(e){r={error:e}}finally{try{s&&!s.done&&(n=l.return)&&n.call(l)}finally{if(r)throw r.error}}}this.tempFamilies=[]}},e.prototype.showDropZoneFamily=function(e,t){var r,n,o,i,l,d;if(void 0===t&&(t={joinFamilies:!1,activateLowestInsteadOfFounder:!1}),null===this.activeDropZone||!p(this.activeDropZone.getCoordinates(),e)){if(null===this.visibleFamily&&null===this.activeDropZone||this.clear(),void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var c=this.treeWithDropZones.findByCoordinates(e,!0);if(void 0===c)throw new Error("Could not find drop zone to show");var h=c.data.family;if(!0===t.joinFamilies){var u=s(e);u[u.length-1]++;var f=this.treeWithDropZones.findByCoordinates(u,!0);if(void 0===f)throw new Error("Could not find drop zone to show");var v=f.data.family;if(void 0===h||void 0===v)throw new Error("No family");var g={founder:h.founder,members:s(h.members)};try{for(var y=a(h.members),w=y.next();!w.done;w=y.next()){(I=w.value).data.family=g,I===h.founder?this.showDropZone(I,!0):this.showDropZone(I)}}catch(e){r={error:e}}finally{try{w&&!w.done&&(n=y.return)&&n.call(y)}finally{if(r)throw r.error}}try{for(var b=a(v.members),C=b.next();!C.done;C=b.next()){(I=C.value).data.family=g,I.getCoordinates().length<f.getCoordinates().length&&(g.members.push(I),this.showDropZone(I))}}catch(e){o={error:e}}finally{try{C&&!C.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}this.tempFamilies=[h,v];var Z=this.dropZoneFamilies.indexOf(h);this.dropZoneFamilies.splice(Z,1);var D=this.dropZoneFamilies.indexOf(v);this.dropZoneFamilies.splice(D,1),this.dropZoneFamilies.push(g),this.visibleFamily=g}else{if(void 0===h)throw new Error("No family");this.visibleFamily=h;try{for(var S=a(h.members),x=S.next();!x.done;x=S.next()){var I;(I=x.value)===h.founder?this.showDropZone(I,!0):this.showDropZone(I)}}catch(e){l={error:e}}finally{try{x&&!x.done&&(d=S.return)&&d.call(S)}finally{if(l)throw l.error}}}if(!0===t.activateLowestInsteadOfFounder){var E=s(this.visibleFamily.members).sort(m).pop();if(void 0===E)throw new Error("Could not get lowest member");this.swapActiveDropZone(E.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 p(t.getCoordinates(),e)})))throw new Error("failed to swap active drop zone");t.data.componentRef&&(t.data.componentRef.instance.active=!1);var r=this.treeWithDropZones.findByCoordinates(e,!0);if(void 0===r)throw new Error("Failed to get new drop zone");this.setActiveDropZone(r)},e.prototype.addToTree=function(e,t){if(void 0===this.treeWithDropZones)throw new Error("dropZoneService not initialized");var r=s(t);r.pop();var n=this.treeWithDropZones.findByCoordinates(r);if(void 0===n)throw new Error("could not get parent");n.addHiddenChild(e,t[t.length-1])},e.prototype.assignFamilies=function(){var e,t,r,n,o,i,l=s(this.dropZoneInventory),d=l.filter((function(e){var t=e.getCoordinates();return 0===t[t.length-1]&&t.length>1})).sort((function(e,t){for(var r,n,o,i,a=e.getCoordinates(),l=t.getCoordinates(),s=Math.max(a.length,l.length),d=0;d<s;d++){if((null!==(r=a[d])&&void 0!==r?r:-1)>(null!==(n=l[d])&&void 0!==n?n:-1))return-1;if((null!==(o=a[d])&&void 0!==o?o:-1)<(null!==(i=l[d])&&void 0!==i?i:-1))return 1}return 0})),c=function(e){if(!l.includes(e))return"continue";var t={founder:e,members:[]};e.data.family=t;for(var r=s(e.getCoordinates());r.length>0;){var n=l.findIndex((function(e){return p(e.getCoordinates(),r)}));if(-1!==n){var o=l.splice(n,1)[0];t.members.push(o),o.data.family=t}r.pop(),r[r.length-1]++}h.dropZoneFamilies.push(t)},h=this;try{for(var u=a(d),f=u.next();!f.done;f=u.next()){c(y=f.value)}}catch(t){e={error:t}}finally{try{f&&!f.done&&(t=u.return)&&t.call(u)}finally{if(e)throw e.error}}try{for(var v=a(l.filter((function(e){return 1===e.getCoordinates().length}))),g=v.next();!g.done;g=v.next()){var y,m={founder:y=g.value,members:[y]};y.data.family=m,this.dropZoneFamilies.push(m),l.splice(l.indexOf(y),1)}}catch(e){r={error:e}}finally{try{g&&!g.done&&(n=v.return)&&n.call(v)}finally{if(r)throw r.error}}if(0!==l.length){var w="";try{for(var b=a(l),C=b.next();!C.done;C=b.next()){var Z=C.value;w+=JSON.stringify(Z.getCoordinates())+", "}}catch(e){o={error:e}}finally{try{C&&!C.done&&(i=b.return)&&i.call(b)}finally{if(o)throw o.error}}throw w=w.slice(0,w.length-2),new Error("Some zones were not assigned to a family. The orphan zones have the following coordinates: "+w)}},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(c,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}();w.ɵfac=function(e){return new(e||w)(t.ɵɵinject(g),t.ɵɵinject(y))},w.ɵprov=t.ɵɵdefineInjectable({token:w,factory:w.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(w,[{type:t.Injectable}],(function(){return[{type:g},{type:y}]}),null);var b=["host"],C=["dropZoneInside"];function Z(e,t){}function D(e,t){}var S=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}();function x(e){var t,r,n,o=/(auto|scroll)/,i=function(e,t){return null===e||null===e.parentNode?t:i(e.parentElement,t.concat([e]))},l=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},s=function(e){return o.test(function(e){return l(e,"overflow")+l(e,"overflow-y")+l(e,"overflow-x")}(e))},d=i(e.parentElement,[]);try{for(var c=a(d),p=c.next();!p.done;p=c.next()){var h=p.value;if(s(h))return h}}catch(e){t={error:e}}finally{try{p&&!p.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return null!==(n=document.scrollingElement)&&void 0!==n?n:document.documentElement}S.ɵfac=function(e){return new(e||S)(t.ɵɵdirectiveInject($),t.ɵɵdirectiveInject(t.ChangeDetectorRef))},S.ɵcmp=t.ɵɵdefineComponent({type:S,selectors:[["limble-tree-branch"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(b,1,t.ViewContainerRef),t.ɵɵviewQuery(C,1,t.ViewContainerRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneInside=n.first)}},inputs:{branch:"branch"},outputs:{dropZoneInside$:"dropZoneInside$"},decls:6,vars:3,consts:[["dropZoneInside",""],[1,"limble-child-nodes",3,"hidden"],["host",""]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div"),t.ɵɵtemplate(1,Z,0,0,"ng-template",null,0,t.ɵɵtemplateRefExtractor),t.ɵɵelementStart(3,"span",1),t.ɵɵtemplate(4,D,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵelementEnd()),2&e&&(t.ɵɵstyleProp("margin-left",r.indent,"px"),t.ɵɵadvance(3),t.ɵɵproperty("hidden",r.branch&&r.branch.data.collapsed))},styles:["./limble-tree-branch.component.scss"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(S,[{type:t.Component,args:[{selector:"limble-tree-branch",templateUrl:"./limble-tree-branch.component.html",styles:["./limble-tree-branch.component.scss"]}]}],(function(){return[{type:$},{type:t.ChangeDetectorRef}]}),{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 I=function(){function e(){this.globalDrag$=r.fromEvent(document,"drag"),this.scrolling=!1}return e.prototype.addScrolling=function(){var e,t,r,n,i,a,l,s,d,c=this;void 0===this.globalDragSubscription&&(this.globalDragSubscription=this.globalDrag$.pipe(o.throttleTime(25),o.filter((function(o){if(!o.target)return!1;s=x(o.target),e=s.clientHeight;var l,c=s.clientWidth;if("fixed"===window.getComputedStyle(s).getPropertyValue("position").toLowerCase())l=o.clientX,d=o.clientY;else{var p=s.getBoundingClientRect(),h=x(s);l=o.clientX-(p.left+h.scrollLeft),d=o.clientY-(p.top+h.scrollTop)}return!(l<0||l>c||d<0||d>e)&&(t=Math.max(.1*e,100),a=d>(n=e-t),(i=d<(r=t))||a)}))).subscribe((function(){if(null!==s){var o,p=s.scrollHeight-e,h=s.scrollTop;if(i&&h>0){o=h-75*((r-d)/t)}else{if(!a||!(h<p))return;o=h+75*((d-n)/t)}(o=Math.max(0,Math.min(p,o)))!==h&&(s.scrollTo({top:o}),c.scrolling=!0,clearTimeout(l),l=setTimeout((function(){c.scrolling=!1}),100))}})))},e.prototype.removeScrolling=function(){void 0!==this.globalDragSubscription&&this.globalDragSubscription.unsubscribe()},e}();I.ɵfac=function(e){return new(e||I)},I.ɵprov=t.ɵɵdefineInjectable({token:I,factory:I.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(I,[{type:t.Injectable}],(function(){return[]}),null);var E=["nodeHost"],M=["dropZoneAbove"],P=["dropZoneBelow"],F=["children"],O=["draggableDiv"];function R(e,t){}function j(e,t){}function H(e,t){}function A(e,t){}var T=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(){var e;if(n.classList.add("dragging"),void 0===r.branch)throw new Error("Could not show surrounding drop zones");var t,o=r.branch.getParent(),i=!0;null!==(null==o?void 0:o.data)&&(t=null==o?void 0:o.data,i=h(r.treeService.treeOptions,t)),void 0!==r.dropZoneAbove&&i&&(r.dropZoneService.showDropZoneFamily(r.branch.getCoordinates(),{joinFamilies:!0}),1===(null===(e=r.treeService.treeData)||void 0===e?void 0:e.length)&&1===r.branch.getCoordinates().length&&r.treeService.usePlaceholder())})))},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(),this.dropZoneService.restoreFamilies(),void this.treeService.removePlaceholder();this.dragStateService.state$.pipe(o.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,l=2*a,d=this.branch.getParent(),c=!0;if(null!==(null==d?void 0:d.data)&&(i=null==d?void 0:d.data,c=h(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&&c){p=s(this.branch.getCoordinates());this.dropZoneService.showDropZoneFamily(p,{activateLowestInsteadOfFounder:!0})}else if(e.offsetY<l&&void 0!==this.dropZoneInside&&(null===(r=this.dropZoneService.getActiveDropZone())||void 0===r?void 0:r.data.container)!==this.dropZoneInside){(p=s(this.branch.getCoordinates())).push(0),this.dropZoneService.showDropZoneFamily(p)}else if(e.offsetY>=l&&void 0!==this.dropZoneBelow&&(null===(n=this.dropZoneService.getActiveDropZone())||void 0===n?void 0:n.data.container)!==this.dropZoneBelow&&0===this.branch.getChildren().length&&c){(p=s(this.branch.getCoordinates()))[p.length-1]++,this.dropZoneService.showDropZoneFamily(p)}}else{var p=s(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)&&!0!==this.treeService.getPlaceholder()){if(void 0===this.branch)throw new Error("branch is undefined");var r=this.componentCreatorService.appendComponent(S,this.children);r.instance.branch=this.branch,h(this.treeService.treeOptions,this.branch.data)&&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,h(this.treeService.treeOptions,t))){var n=this.branch.getCoordinates(),o=s(n);if(this.dropZoneService.addDropZone(o,this.dropZoneAbove),!0!==this.treeService.getPlaceholder()){var i=s(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,n,i=this.draggableDiv.nativeElement,a=i.querySelector(".limble-tree-handle");r=this.treeService.treeOptions,n=null===(e=this.branch)||void 0===e?void 0:e.data,void 0===r||!0!==r.allowDragging&&("function"!=typeof r.allowDragging||void 0===n||!0!==r.allowDragging(n))?i.setAttribute("draggable","false"):null===a?i.setAttribute("draggable","true"):a.addEventListener("mousedown",(function(){i.setAttribute("draggable","true");var e=t.dragStateService.state$.pipe(o.filter((function(e){return"dragging"===e})),o.first());t.dragStateService.state$.pipe(o.skipUntil(e),o.filter((function(e){return"idle"===e})),o.first()).subscribe((function(){i.setAttribute("draggable","false")}))}))}},e}();T.ɵfac=function(e){return new(e||T)(t.ɵɵdirectiveInject(y),t.ɵɵdirectiveInject(t.ChangeDetectorRef),t.ɵɵdirectiveInject(g),t.ɵɵdirectiveInject(w),t.ɵɵdirectiveInject($),t.ɵɵdirectiveInject(I))},T.ɵcmp=t.ɵɵdefineComponent({type:T,selectors:[["limble-tree-node"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(E,1,t.ViewContainerRef),t.ɵɵviewQuery(M,1,t.ViewContainerRef),t.ɵɵviewQuery(P,1,t.ViewContainerRef),t.ɵɵviewQuery(F,1,t.ViewContainerRef),t.ɵɵviewQuery(O,1,t.ElementRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.nodeHost=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneAbove=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneBelow=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.children=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.draggableDiv=n.first)}},inputs:{branch:"branch"},decls:11,vars:0,consts:[["dropZoneAbove",""],[1,"limble-parent-container",3,"dragstart","dragend"],["draggableDiv",""],[3,"dragover"],["nodeHost",""],["children",""],["dropZoneBelow",""]],template:function(e,r){1&e&&(t.ɵɵtemplate(0,R,0,0,"ng-template",null,0,t.ɵɵtemplateRefExtractor),t.ɵɵelementStart(2,"div",1,2),t.ɵɵlistener("dragstart",(function(e){return r.dragstartHandler(e)}))("dragend",(function(e){return r.dragendHandler(e)})),t.ɵɵelementStart(4,"div",3),t.ɵɵlistener("dragover",(function(e){return r.dragoverHandler(e)})),t.ɵɵtemplate(5,j,0,0,"ng-template",null,4,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(7,H,0,0,"ng-template",null,5,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd(),t.ɵɵtemplate(9,A,0,0,"ng-template",null,6,t.ɵɵtemplateRefExtractor))},styles:[".dragging[_ngcontent-%COMP%]{position:absolute;transition:transform .01s;transform:translateX(-9999px)}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(T,[{type:t.Component,args:[{selector:"limble-tree-node",templateUrl:"./limble-tree-node.component.html",styleUrls:["./limble-tree-node.component.scss"]}]}],(function(){return[{type:y},{type:t.ChangeDetectorRef},{type:g},{type:w},{type:$},{type:I}]}),{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 V=function(){};V.ɵfac=function(e){return new(e||V)},V.ɵcmp=t.ɵɵdefineComponent({type:V,selectors:[["limble-tree-placeholder"]],decls:1,vars:0,consts:[[1,"placeholder"]],template:function(e,r){1&e&&t.ɵɵelement(0,"div",0)},styles:[".placeholder[_ngcontent-%COMP%]{width:100%;height:20px}"]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(V,[{type:t.Component,args:[{selector:"limble-tree-placeholder",templateUrl:"./limble-tree-placeholder.component.html",styleUrls:["./limble-tree-placeholder.component.scss"]}]}],null,null);var $=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 u(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.usePlaceholder=function(){if(!0!==this.placeholder){if(void 0===this.host)throw new Error("TreeModel not initialized");this.placeholder=!0;var e=new u({component:{class:V}});this.treeModel.appendChild(e),this.componentCreatorService.appendComponent(T,this.host).instance.branch=e}},e.prototype.removePlaceholder=function(){if(!1!==this.placeholder){var e=this.treeModel.getChildren().length-1;-1!==e&&this.treeModel.removeChild(e),this.placeholder=!1}},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.dropZoneService.reset(),this.placeholder=!1,this.treeModel=new u(null),0===this.treeData.length)this.usePlaceholder();else{try{for(var i=a(this.treeData),l=i.next();!l.done;l=i.next()){var s=l.value,d=new u(s);this.treeModel.appendChild(d)}}catch(t){e={error:t}}finally{try{l&&!l.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}try{for(var c=a(this.treeModel.getChildren()),p=c.next();!p.done;p=c.next()){d=p.value;this.componentCreatorService.appendComponent(T,this.host).instance.branch=d}}catch(e){r={error:e}}finally{try{p&&!p.done&&(n=c.return)&&n.call(c)}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:[]),l=i.next();!l.done;l=i.next()){var s=l.value,d=new u(s);t.appendChild(d),this.componentCreatorService.appendComponent(T,e).instance.branch=d}}catch(e){r={error:e}}finally{try{l&&!l.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,l;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!==(l=e.listMode)&&void 0!==l&&l,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.removePlaceholder()):n=(r=s(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.removePlaceholder(),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 l=this.treeOptions.itemsPerPage*(this.treeOptions.page-1);isNaN(l)&&(l=0);var d=l+this.treeOptions.itemsPerPage;(r=this.uncutData).splice.apply(r,s([l,this.treeOptions.itemsPerPage],this.treeData)),this.treeData=this.uncutData.slice(l,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 l=i.value;n.nodes.push(this.rebuildBranch(l))}}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}();$.ɵfac=function(e){return new(e||$)(t.ɵɵinject(y),t.ɵɵinject(w))},$.ɵprov=t.ɵɵdefineInjectable({token:$,factory:$.ɵfac}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata($,[{type:t.Injectable}],(function(){return[{type:y},{type:w}]}),null);var z=["host"],B=["dropZoneInside"];function N(e,t){}function Q(e,t){}var _=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()},e}();_.ɵfac=function(e){return new(e||_)(t.ɵɵdirectiveInject($),t.ɵɵdirectiveInject(w),t.ɵɵdirectiveInject(g),t.ɵɵdirectiveInject(I))},_.ɵcmp=t.ɵɵdefineComponent({type:_,selectors:[["limble-tree-root"]],viewQuery:function(e,r){if(1&e&&(t.ɵɵviewQuery(z,1,t.ViewContainerRef),t.ɵɵviewQuery(B,1,t.ViewContainerRef)),2&e){var n=void 0;t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.host=n.first),t.ɵɵqueryRefresh(n=t.ɵɵloadQuery())&&(r.dropZoneInside=n.first)}},inputs:{data:"data",options:"options",itemsPerPage:"itemsPerPage",page:"page"},outputs:{dropZoneInside$:"dropZoneInside$",treeChange:"treeChange",treeDrop:"treeDrop"},features:[t.ɵɵProvidersFeature([$,w]),t.ɵɵNgOnChangesFeature],decls:5,vars:0,consts:[[3,"dragover","dragleave","drop"],["dropZoneInside",""],["host",""]],template:function(e,r){1&e&&(t.ɵɵelementStart(0,"div",0),t.ɵɵlistener("dragover",(function(e){return r.dragoverHandler(e)}))("dragleave",(function(e){return r.dragleaveHandler(e)}))("drop",(function(e){return r.dropHandler(e)})),t.ɵɵtemplate(1,N,0,0,"ng-template",null,1,t.ɵɵtemplateRefExtractor),t.ɵɵtemplate(3,Q,0,0,"ng-template",null,2,t.ɵɵtemplateRefExtractor),t.ɵɵelementEnd())},styles:[""]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(_,[{type:t.Component,args:[{selector:"limble-tree-root",templateUrl:"./limble-tree-root.component.html",styleUrls:["./limble-tree-root.component.scss"],providers:[$,w]}]}],(function(){return[{type:$},{type:w},{type:g},{type:I}]}),{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 k=function(){};k.ɵmod=t.ɵɵdefineNgModule({type:k}),k.ɵinj=t.ɵɵdefineInjector({factory:function(e){return new(e||k)},providers:[y,g,I],imports:[[n.CommonModule]]}),("undefined"==typeof ngJitMode||ngJitMode)&&t.ɵɵsetNgModuleScope(k,{declarations:[S,c,T,_,V],imports:[n.CommonModule],exports:[_]}),("undefined"==typeof ngDevMode||ngDevMode)&&t.ɵsetClassMetadata(k,[{type:t.NgModule,args:[{declarations:[S,c,T,_,V],imports:[n.CommonModule],exports:[_],providers:[y,g,I]}]}],null,null),e.LimbleTreeModule=k,e.LimbleTreeRootComponent=_,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=limble-limble-tree.umd.min.js.map

@@ -80,2 +80,4 @@ import { Injectable } from "@angular/core";

this.dropZoneService.reset();
//We don't need to call removePlaceholder here because we already cleared it away in the preceding lines. We just have to tell the service that it is done.
this.placeholder = false;
this.treeModel = new Branch(null);

@@ -87,4 +89,2 @@ if (this.treeData.length === 0) {

else {
//If a placeholder was being used previously, remove it.
this.removePlaceholder();
for (const node of this.treeData) {

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

}], function () { return [{ type: i1.ComponentCreatorService }, { type: i2.DropZoneService }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JDLE9BQU8sRUFBRSxNQUFNLEVBQXFCLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7O0FBOEQ5RyxnREFBZ0Q7QUFDaEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQWtEekIsTUFBTSxPQUFPLFdBQVc7SUFVckIsWUFDb0IsdUJBQWdELEVBQ2hELGVBQWdDO1FBRGhDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRWpELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUksQ0FDUixJQUFzQixFQUN0QixJQUFvQixFQUNwQixPQUEyQixFQUMzQixZQUFxQixFQUNyQixJQUFhO1FBRWIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFD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bnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDcmVhdG9yU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2NvbXBvbmVudC1jcmVhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vZHJvcC16b25lLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJhbmNoLCBCcmFuY2hDb29yZGluYXRlcyB9IGZyb20gXCIuLi9CcmFuY2hcIjtcclxuaW1wb3J0IHsgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtbm9kZS9saW1ibGUtdHJlZS1ub2RlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBMaW1ibGVUcmVlUGxhY2Vob2xkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcGxhY2Vob2xkZXIvbGltYmxlLXRyZWUtcGxhY2Vob2xkZXIuY29tcG9uZW50XCI7XHJcblxyXG4vKiogQW4gb2JqZWN0IGRlc2NyaWJpbmcgYSBub2RlIG9mIHRoZSB0cmVlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGltYmxlVHJlZU5vZGUge1xyXG4gICAvKiogQSBsaXN0IG9mIG5vZGVzIHRvIGJlIHJlbmRlcmVkIFwidW5kZXJcIiB0aGlzIG9uZSwgb25lIGxldmVsIGRlZXBlciBpbiB0aGUgdHJlZS4gKi9cclxuICAgbm9kZXM/OiBMaW1ibGVUcmVlRGF0YTtcclxuICAgLy8gLyoqIEEgY3VzdG9tIGRhdGEgb2JqZWN0IHRoYXQgd2lsbCBiZSBwYXNzZWQgaW50byB0aGUgY29tcG9uZW50IGFzIGFuIGBJbnB1dCgpYCBiaW5kaW5nIGNhbGxlZCBgbm9kZURhdGFgICovXHJcbiAgIC8vIGRhdGE6IHVua25vd247XHJcbiAgIC8qKiBBbiBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhlIGNvbXBvbmVudCB3aGljaCB3aWxsIHJlcHJlc2VudCB0aGlzIG5vZGUgaW4gdGhlIHZpc3VhbCB0cmVlICovXHJcbiAgIGNvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgY29sbGFwc2VkPzogYm9vbGVhbjtcclxuICAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xyXG59XHJcblxyXG4vKiogQW4gb2JqZWN0IHRoYXQgdGhlIGxpbWJsZS10cmVlLXJvb3QgY29tcG9uZW50IHVzZXMgdG8gYnVpbGQgdGhlIHRyZWUgKi9cclxuZXhwb3J0IHR5cGUgTGltYmxlVHJlZURhdGEgPSBBcnJheTxMaW1ibGVUcmVlTm9kZT47XHJcblxyXG4vKiogQSBncm91cCBvZiBzZXR0aW5ncyBmb3IgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRyZWUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBMaW1ibGVUcmVlT3B0aW9ucyB7XHJcbiAgIC8qKiBUaGUgY29tcG9uZW50IG9iamVjdCB0byB1c2UgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQgZm9yIGEgcGFydGljdWxhciBub2RlICovXHJcbiAgIGRlZmF1bHRDb21wb25lbnQ/OiBDb21wb25lbnRPYmo7XHJcbiAgIC8qKiBUaGUgbnVtYmVyIG9mIHBpeGVscyB0byBpbmRlbnQgZWFjaCBsZXZlbCBvZiB0aGUgdHJlZS4gRGVmYXVsdHMgdG8gNDUgKi9cclxuICAgaW5kZW50PzogbnVtYmVyO1xyXG4gICAvKipcclxuICAgICogV2hldGhlciB0byBhbGxvdyBcIm5lc3RpbmdcIiAocGxhY2luZyBhIG5vZGUgb25lIGxldmVsIGRlZXBlciB0aGFuIGN1cnJlbnRseSBleGlzdHMgb24gdGhlIGJyYW5jaCkuXHJcbiAgICAqIFdoZW4gdGhpcyBpcyBhIGJvb2xlYW4sIGl0IGFwcGxpZXMgdG8gYWxsIG5vZGVzLiBXaGVuIHRoaXMgaXMgYSBmdW5jdGlvbiwgdGhlIG5vZGUgaW4gcXVlc3Rpb25cclxuICAgICogaXMgcGFzc2VkIGluLiBEZWZhdWx0cyB0byB0cnVlLlxyXG4gICAgKi9cclxuICAgYWxsb3dOZXN0aW5nPzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgLyoqXHJcbiAgICAqIFdoZXRoZXIgdG8gYWxsb3cgYSBub2RlIHRvIGJlIGRyYWdnZWQuIFdoZW4gdGhpcyBpcyBhIGJvb2xlYW4sIGl0IGFwcGxpZXMgdG8gYWxsIG5vZGVzLiBXaGVuIHRoaXNcclxuICAgICogaXMgYSBmdW5jdGlvbiwgdGhlIG5vZGUgaW4gcXVlc3Rpb24gaXMgcGFzc2VkIGluLiBEZWZhdWx0cyB0byB0cnVlLlxyXG4gICAgKi9cclxuICAgYWxsb3dEcmFnZ2luZz86IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIC8qKiBBIGNhbGxiYWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc291cmNlTm9kZSBjYW4gYmUgZHJvcHBlZCBhdCBhIHBhcnRpY3VsYXIgbG9jYXRpb24uICovXHJcbiAgIGFsbG93RHJvcD86IChcclxuICAgICAgc291cmNlTm9kZTogTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgIHByb3Bvc2VkUGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGwsXHJcbiAgICAgIHByb3Bvc2VkSW5kZXg6IG51bWJlclxyXG4gICApID0+IGJvb2xlYW47XHJcbiAgIC8qKiBXaGVuIHNldCB0byB0cnVlLCBsaXN0IG1vZGUgd2lsbCBlbmZvcmNlIGEgZmxhdCB0cmVlIHN0cnVjdHVyZSwgbWVhbmluZyB0aGVyZVxyXG4gICAgKiBjYW4gb25seSBiZSBvbmUgbGV2ZWwgb2YgdGhlIHRyZWUuIGBhbGxvd05lc3RpbmdgIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIGBmYWxzZWBcclxuICAgICogYW5kIGFueSBjaGlsZHJlbiB3aWxsIGJlIGRlbGV0ZWQuXHJcbiAgICAqXHJcbiAgICAqIFRoaXMgbW9kZSBjYW4gYmUgdXNlZCB3aGVuIHRoZSBzYW1lIGR5bmFtaWMgZHJhZyBhbmQgZHJvcCBmdW5jdGlvbmFsaXR5IG9mXHJcbiAgICAqIHRoZSB0cmVlIGlzIGRlc2lyZWQsIGJ1dCB0aGUgdHJlZSBzdHJ1Y3R1cmUgaXRzZWxmIGlzIG5vdCBuZWNlc3NhcnkuIFRoaXNcclxuICAgICogYWxzbyBvcGVucyB1cCB0aGUgcGFnaW5hdGlvbiBBUEkgb24gdGhlIGxpbWJsZS10cmVlLXJvb3QgY29tcG9uZW50LiBTZWUgdGhlXHJcbiAgICAqIFJFQURNRSBmb3IgZGV0YWlscyBvbiBwYWdpbmF0aW9uLlxyXG4gICAgKi9cclxuICAgbGlzdE1vZGU/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQW4gb2JqZWN0IHRoYXQgcmVmZXJlbmNlcyB0aGUgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkIGFuZCBpdHMgYmluZGluZ3MgKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRPYmoge1xyXG4gICAvKiogVGhlIGNvbXBvbmVudCBjbGFzcyAqL1xyXG4gICBjbGFzczogVHlwZTx1bmtub3duPjtcclxuICAgLyoqIFRoZSBiaW5kaW5ncyAoaW5wdXRzIGFuZCBvdXRwdXRzKSBvZiB0aGUgY2xhc3MgKi9cclxuICAgYmluZGluZ3M/OiB7XHJcbiAgICAgIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcclxuICAgfTtcclxufVxyXG5cclxuLyoqIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYGluZGVudGAgb3B0aW9uICovXHJcbmV4cG9ydCBjb25zdCBJTkRFTlQgPSA0NTtcclxuXHJcbi8qKiBBbiBvcHRpb25zIG9iamVjdCB3aXRoIGRlZmF1bHQgdmFsdWVzIGxvYWRlZCB3aGVyZSBhcHBsaWNhYmxlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkT3B0aW9uc0Jhc2UgZXh0ZW5kcyBMaW1ibGVUcmVlT3B0aW9ucyB7XHJcbiAgIGRlZmF1bHRDb21wb25lbnQ/OiBDb21wb25lbnRPYmo7XHJcbiAgIGluZGVudDogbnVtYmVyO1xyXG4gICBhbGxvd05lc3Rpbmc6IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIGFsbG93RHJhZ2dpbmc6IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIGFsbG93RHJvcDogKFxyXG4gICAgICBzb3VyY2VOb2RlOiBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgcHJvcG9zZWRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbCxcclxuICAgICAgcHJvcG9zZWRJbmRleDogbnVtYmVyXHJcbiAgICkgPT4gYm9vbGVhbjtcclxuICAgbGlzdE1vZGU6IGJvb2xlYW47XHJcbiAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICBwYWdlOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkT3B0aW9uc1dpdGhQYWdpbmF0aW9uIGV4dGVuZHMgUHJvY2Vzc2VkT3B0aW9uc0Jhc2Uge1xyXG4gICBsaXN0TW9kZTogdHJ1ZTtcclxuICAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XHJcbiAgIHBhZ2U6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zV2l0aG91dFBhZ2luYXRpb25cclxuICAgZXh0ZW5kcyBQcm9jZXNzZWRPcHRpb25zQmFzZSB7XHJcbiAgIGxpc3RNb2RlOiBmYWxzZTtcclxuICAgaXRlbXNQZXJQYWdlOiB1bmRlZmluZWQ7XHJcbiAgIHBhZ2U6IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvY2Vzc2VkT3B0aW9ucyA9XHJcbiAgIHwgUHJvY2Vzc2VkT3B0aW9uc1dpdGhQYWdpbmF0aW9uXHJcbiAgIHwgUHJvY2Vzc2VkT3B0aW9uc1dpdGhvdXRQYWdpbmF0aW9uO1xyXG5cclxuLyoqIHRoZSB2YWx1ZSBlbWl0dGVkIGZyb20gdGhlIHJvb3QgY29tcG9uZW50IGFmdGVyIGEgbm9kZSBpcyBkcm9wcGVkICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJlZURyb3Age1xyXG4gICAvKiogVGhlIG5vZGUgdGhhdCB3YXMgZHJvcHBlZCAqL1xyXG4gICB0YXJnZXQ6IExpbWJsZVRyZWVOb2RlO1xyXG4gICAvKiogdGhlIHRhcmdldCdzIHBhcmVudCBiZWZvcmUgdGhlIGRyYWcgYW5kIGRyb3AsIG9yIG51bGwgaWYgaXQgd2FzIGEgdG9wLWxldmVsIG5vZGUgKi9cclxuICAgb2xkUGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGw7XHJcbiAgIC8qKiB0aGUgaW5kZXggb2YgdGhlIG5vZGUgYmVmb3JlIHRoZSBkcmFnIGFuZCBkcm9wIHJlbGF0aXZlIHRvIGl0cyBvbGQgc2libGluZ3MgKi9cclxuICAgb2xkSW5kZXg6IG51bWJlcjtcclxuICAgLyoqIHRoZSB0YXJnZXQncyBwYXJlbnQgYWZ0ZXIgdGhlIGRyYWcgYW5kIGRyb3AsIG9yIG51bGwgaWYgaXQgaXMgbm93IGEgdG9wLWxldmVsIG5vZGUgKi9cclxuICAgbmV3UGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGw7XHJcbiAgIC8qKiB0aGUgaW5kZXggb2YgdGhlIG5vZGUgYWZ0ZXIgdGhlIGRyYWcgYW5kIGRyb3AgcmVsYXRpdmUgdG8gaXRzIG5ldyBzaWJsaW5ncyAqL1xyXG4gICBuZXdJbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcmVlU2VydmljZSB7XHJcbiAgIHB1YmxpYyBjaGFuZ2VzJDogUmVwbGF5U3ViamVjdDxudWxsPjtcclxuICAgcHVibGljIGRyb3BzJDogUmVwbGF5U3ViamVjdDxUcmVlRHJvcD47XHJcbiAgIHByaXZhdGUgaG9zdDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVEYXRhOiBMaW1ibGVUcmVlRGF0YSB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSB1bmN1dERhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZU9wdGlvbnM6IFByb2Nlc3NlZE9wdGlvbnMgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlTW9kZWw6IEJyYW5jaDxhbnk+O1xyXG4gICBwcml2YXRlIHBsYWNlaG9sZGVyOiBib29sZWFuO1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q3JlYXRvclNlcnZpY2U6IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bab25lU2VydmljZTogRHJvcFpvbmVTZXJ2aWNlXHJcbiAgICkge1xyXG4gICAgICB0aGlzLmNoYW5nZXMkID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XHJcbiAgICAgIHRoaXMuZHJvcHMkID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsID0gbmV3IEJyYW5jaChudWxsKTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xyXG4gICB9XHJcblxyXG4gICAvKiogSW5pdGlhbGl6ZXMgdGhlIHNlcnZpY2UgYW5kIHJlbmRlcnMgdGhlIHRyZWUuXHJcbiAgICAqIEBwYXJhbSBob3N0IC0gVGhlIFZpZXdDb250YWluZXJSZWYgaW50byB3aGljaCB0aGUgdHJlZSB3aWxsIGJlIHJlbmRlcmVkLlxyXG4gICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIGFycmF5IHRoYXQgd2FzIHBhc3NlZCBpbiB0byBMaW1ibGVUcmVlUm9vdCwgd2hpY2ggaXNcclxuICAgICogdGhlIHVzZXJzJyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHJlZVxyXG4gICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gTGltYmxlVHJlZVJvb3RcclxuICAgICovXHJcbiAgIHB1YmxpYyBpbml0KFxyXG4gICAgICBob3N0OiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICBkYXRhOiBMaW1ibGVUcmVlRGF0YSxcclxuICAgICAgb3B0aW9ucz86IExpbWJsZVRyZWVPcHRpb25zLFxyXG4gICAgICBpdGVtc1BlclBhZ2U/OiBudW1iZXIsXHJcbiAgICAgIHBhZ2U/OiBudW1iZXJcclxuICAgKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuaG9zdCA9IGhvc3Q7XHJcbiAgICAgIHRoaXMudW5jdXREYXRhID0gZGF0YTtcclxuICAgICAgdGhpcy50cmVlT3B0aW9ucyA9IHRoaXMucHJvY2Vzc09wdGlvbnMob3B0aW9ucywgaXRlbXNQZXJQYWdlLCBwYWdlKTtcclxuICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMubGlzdE1vZGUgPT09IHRydWUpIHtcclxuICAgICAgICAgbGV0IHN0YXJ0ID1cclxuICAgICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2UgKiAodGhpcy50cmVlT3B0aW9ucy5wYWdlIC0gMSk7XHJcbiAgICAgICAgIGlmIChpc05hTihzdGFydCkpIHtcclxuICAgICAgICAgICAgLy9UaGlzIGNhdGNoZXMgdGhlIGNhc2Ugd2hlcmUgaXRlbXNQZXJQYWdlIHdhcyBub3QgcGFzc2VkIGJ5IHRoZSB1c2VyLFxyXG4gICAgICAgICAgICAvL2NhdXNpbmcgYHN0YXJ0YCB0byBlcXVhbCBpbmZpbml0eSowLCB3aGljaCBpcyBOYU4uXHJcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy51bmN1dERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPSB0aGlzLnVuY3V0RGF0YTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgdXNlUGxhY2Vob2xkZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ob3N0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZU1vZGVsIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJOb2RlOiBMaW1ibGVUcmVlTm9kZSA9IHtcclxuICAgICAgICAgY29tcG9uZW50OiB7IGNsYXNzOiBMaW1ibGVUcmVlUGxhY2Vob2xkZXJDb21wb25lbnQgfVxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBicmFuY2ggPSBuZXcgQnJhbmNoKHBsYWNlaG9sZGVyTm9kZSk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsLmFwcGVuZENoaWxkKGJyYW5jaCk7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Q3JlYXRvclNlcnZpY2UuYXBwZW5kQ29tcG9uZW50PExpbWJsZVRyZWVOb2RlQ29tcG9uZW50PihcclxuICAgICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgICAgIHRoaXMuaG9zdFxyXG4gICAgICApO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gYnJhbmNoO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgcmVtb3ZlUGxhY2Vob2xkZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSBmYWxzZSkge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJJbmRleCA9IHRoaXMudHJlZU1vZGVsLmdldENoaWxkcmVuKCkubGVuZ3RoIC0gMTtcclxuICAgICAgaWYgKHBsYWNlaG9sZGVySW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgIHRoaXMudHJlZU1vZGVsLnJlbW92ZUNoaWxkKHBsYWNlaG9sZGVySW5kZXgpOyAvL3JlbW92ZSB0aGUgcGxhY2Vob2xkZXJcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZW5kZXJzIHRoZSBlbnRpcmUgdHJlZSBmcm9tIHJvb3QgdG8gbGVhdmVzICovXHJcbiAgIHByaXZhdGUgcmVuZGVyKCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ob3N0LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsID0gbmV3IEJyYW5jaChudWxsKTtcclxuICAgICAgaWYgKHRoaXMudHJlZURhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgIC8vVHJlZSBpcyBlbXB0eSwgYnV0IHdlIGhhdmUgdG8gdG8gaGF2ZSBzb21ldGhpbmcgdGhlcmUgc28gb3RoZXIgdHJlZXMnIGl0ZW1zIGNhbiBiZSBkcm9wcGVkIGludG8gaXRcclxuICAgICAgICAgdGhpcy51c2VQbGFjZWhvbGRlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAvL0lmIGEgcGxhY2Vob2xkZXIgd2FzIGJlaW5nIHVzZWQgcHJldmlvdXNseSwgcmVtb3ZlIGl0LlxyXG4gICAgICAgICB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLnRyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU1vZGVsLmFwcGVuZENoaWxkKGJyYW5jaCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy50cmVlTW9kZWwuZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmluaXQodGhpcy50cmVlTW9kZWwsIHRoaXMudHJlZU9wdGlvbnMpO1xyXG4gICAgICAgICB0aGlzLmNoYW5nZXMkLm5leHQobnVsbCk7XHJcbiAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICAvKiogUmVuZGVycyBhIGJyYW5jaCBvZiB0aGUgdHJlZSBhbmQgYWxsIG9mIGl0cyBkZXNjZW5kYW50cyAqL1xyXG4gICBwdWJsaWMgcmVuZGVyQnJhbmNoKGhvc3Q6IFZpZXdDb250YWluZXJSZWYsIGJyYW5jaDogQnJhbmNoPGFueT4pIHtcclxuICAgICAgaWYgKHRoaXMudHJlZU1vZGVsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZU1vZGVsIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICBob3N0LmNsZWFyKCk7XHJcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBicmFuY2guZGF0YS5ub2RlcyA/PyBbXSkge1xyXG4gICAgICAgICBjb25zdCBuZXdCcmFuY2ggPSBuZXcgQnJhbmNoKG5vZGUpO1xyXG4gICAgICAgICBicmFuY2guYXBwZW5kQ2hpbGQobmV3QnJhbmNoKTtcclxuICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRDcmVhdG9yU2VydmljZS5hcHBlbmRDb21wb25lbnQ8TGltYmxlVHJlZU5vZGVDb21wb25lbnQ+KFxyXG4gICAgICAgICAgICBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCxcclxuICAgICAgICAgICAgaG9zdFxyXG4gICAgICAgICApO1xyXG4gICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gbmV3QnJhbmNoO1xyXG4gICAgICAgICAvL1RoZSBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCB3aWxsIChpbmRpcmVjdGx5KSBjYWxsIHRoZSBgcmVuZGVyQnJhbmNoYCBtZXRob2Qgb2YgdGhpcyBzZXJ2aWNlIHRvIHJlbmRlclxyXG4gICAgICAgICAvL2l0cyBvd24gY2hpbGRyZW5cclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHByb2Nlc3NPcHRpb25zKFxyXG4gICAgICBvcHRpb25zOiBMaW1ibGVUcmVlT3B0aW9ucyA9IHt9LFxyXG4gICAgICBpdGVtc1BlclBhZ2U6IG51bWJlciA9IEluZmluaXR5LFxyXG4gICAgICBwYWdlOiBudW1iZXIgPSAxXHJcbiAgICk6IFByb2Nlc3NlZE9wdGlvbnMge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIG9wdGlvbnMubGlzdE1vZGUgPT09IHRydWUgJiZcclxuICAgICAgICAgb3B0aW9ucy5hbGxvd05lc3RpbmcgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICBvcHRpb25zLmFsbG93TmVzdGluZyAhPT0gZmFsc2VcclxuICAgICAgKSB7XHJcbiAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgXCJUaGUgdmFsdWUgb2YgYGFsbG93TmVzdGluZ2Agd2lsbCBiZSBpZ25vcmVkOyBpdCBtdXN0IGJlIGZhbHNlIHdoZW4gYGxpc3RNb2RlYCBpcyB0cnVlXCJcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZXN1bHQ6IFByb2Nlc3NlZE9wdGlvbnNCYXNlID0ge1xyXG4gICAgICAgICBkZWZhdWx0Q29tcG9uZW50OiBvcHRpb25zLmRlZmF1bHRDb21wb25lbnQsXHJcbiAgICAgICAgIGluZGVudDogb3B0aW9ucy5pbmRlbnQgPz8gSU5ERU5ULFxyXG4gICAgICAgICBhbGxvd05lc3Rpbmc6XHJcbiAgICAgICAgICAgIG9wdGlvbnMubGlzdE1vZGUgIT09IHRydWUgJiYgKG9wdGlvbnMuYWxsb3dOZXN0aW5nID8/IHRydWUpLFxyXG4gICAgICAgICBhbGxvd0RyYWdnaW5nOiBvcHRpb25zLmFsbG93RHJhZ2dpbmcgPz8gdHJ1ZSxcclxuICAgICAgICAgYWxsb3dEcm9wOiBvcHRpb25zLmFsbG93RHJvcCA/PyAoKCkgPT4gdHJ1ZSksXHJcbiAgICAgICAgIGxpc3RNb2RlOiBvcHRpb25zLmxpc3RNb2RlID8/IGZhbHNlLFxyXG4gICAgICAgICBpdGVtc1BlclBhZ2U6IG9wdGlvbnMubGlzdE1vZGUgPyBpdGVtc1BlclBhZ2UgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgIHBhZ2U6IG9wdGlvbnMubGlzdE1vZGUgPyBwYWdlIDogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiByZXN1bHQgYXMgUHJvY2Vzc2VkT3B0aW9ucztcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyb3Aoc291cmNlOiBCcmFuY2g8YW55PiwgdGFyZ2V0Q29vcmRpbmF0ZXM6IEJyYW5jaENvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGNvbnN0IHNvdXJjZVBhcmVudCA9IHNvdXJjZS5nZXRQYXJlbnQoKTtcclxuICAgICAgY29uc3Qgc291cmNlSW5kZXggPSBzb3VyY2UuZ2V0SW5kZXgoKTtcclxuICAgICAgaWYgKHNvdXJjZUluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IG1vdmUgdGhlIGhpZGRlbiByb290IG5vZGVcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHRhcmdldFBhcmVudENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcztcclxuICAgICAgbGV0IGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzID0gW107XHJcbiAgICAgICAgIGluZGV4ID0gMDtcclxuICAgICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFsuLi50YXJnZXRDb29yZGluYXRlc107XHJcbiAgICAgICAgIGluZGV4ID0gdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXMucG9wKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGFyZ2V0IGNvb3JkaW5hdGVzIGFyZSBlbXB0eVwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0YXJnZXRQYXJlbnQgPSB0aGlzLnRyZWVNb2RlbC5nZXREZXNjZW5kYW50KFxyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlc1xyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0UGFyZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY291bGQgbm90IGdldCB0byB0YXJnZXRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGFyZ2V0UGFyZW50Lmluc2VydENoaWxkKHNvdXJjZSwgaW5kZXgpO1xyXG4gICAgICB0aGlzLnJlYnVpbGRUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLmRyb3BzJC5uZXh0KHtcclxuICAgICAgICAgdGFyZ2V0OiBzb3VyY2UuZGF0YSxcclxuICAgICAgICAgb2xkUGFyZW50OiBzb3VyY2VQYXJlbnQ/LmRhdGEgYXMgTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgICAgIG9sZEluZGV4OiBzb3VyY2VJbmRleCxcclxuICAgICAgICAgbmV3UGFyZW50OiB0YXJnZXRQYXJlbnQuZGF0YSxcclxuICAgICAgICAgbmV3SW5kZXg6IGluZGV4XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgcmVtb3ZlKHRhcmdldDogQnJhbmNoPGFueT4pIHtcclxuICAgICAgdGFyZ2V0LnJlbW92ZSgpO1xyXG4gICAgICB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAgIHRoaXMucmVidWlsZFRyZWVEYXRhKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcmVidWlsZFRyZWVEYXRhKCk6IHZvaWQge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZSBkYXRhIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyZWVEYXRhLmxlbmd0aCA9IDA7XHJcbiAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIHRoaXMudHJlZU1vZGVsLmdldENoaWxkcmVuKCkpIHtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YS5wdXNoKHRoaXMucmVidWlsZEJyYW5jaChicmFuY2gpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50cmVlT3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICBsZXQgc3RhcnQgPVxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSAqICh0aGlzLnRyZWVPcHRpb25zLnBhZ2UgLSAxKTtcclxuICAgICAgICAgaWYgKGlzTmFOKHN0YXJ0KSkge1xyXG4gICAgICAgICAgICAvL1RoaXMgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSBpdGVtc1BlclBhZ2Ugd2FzIG5vdCBwYXNzZWQgYnkgdGhlIHVzZXIsXHJcbiAgICAgICAgICAgIC8vY2F1c2luZyBgc3RhcnRgIHRvIGVxdWFsIGluZmluaXR5KjAsIHdoaWNoIGlzIE5hTi5cclxuICAgICAgICAgICAgc3RhcnQgPSAwO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhLnNwbGljZShcclxuICAgICAgICAgICAgc3RhcnQsXHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlLFxyXG4gICAgICAgICAgICAuLi50aGlzLnRyZWVEYXRhXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPSB0aGlzLnVuY3V0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy51bmN1dERhdGEgPSB0aGlzLnRyZWVEYXRhO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcmVidWlsZEJyYW5jaChicmFuY2g6IEJyYW5jaDxhbnk+KTogTGltYmxlVHJlZU5vZGUge1xyXG4gICAgICBjb25zdCB0ZW1wOiBMaW1ibGVUcmVlTm9kZSA9IGJyYW5jaC5kYXRhO1xyXG4gICAgICB0ZW1wLm5vZGVzID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgYnJhbmNoLmdldENoaWxkcmVuKCkpIHtcclxuICAgICAgICAgdGVtcC5ub2Rlcy5wdXNoKHRoaXMucmVidWlsZEJyYW5jaChjaGlsZCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0ZW1wO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyO1xyXG4gICB9XHJcbn1cclxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGltYmxlLXRyZWUvc3JjL2xpYi9saW1ibGUtdHJlZS1yb290L3RyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3JDLE9BQU8sRUFBRSxNQUFNLEVBQXFCLE1BQU0sV0FBVyxDQUFDO0FBQ3RELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ3pGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7O0FBOEQ5RyxnREFBZ0Q7QUFDaEQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQWtEekIsTUFBTSxPQUFPLFdBQVc7SUFVckIsWUFDb0IsdUJBQWdELEVBQ2hELGVBQWdDO1FBRGhDLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBRWpELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUksQ0FDUixJQUFzQixFQUN0QixJQUFvQixFQUNwQixPQUEyQixFQUMzQixZQUFxQixFQUNyQixJQUFhO1FBRWIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFD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d0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJlcGxheVN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBDb21wb25lbnRDcmVhdG9yU2VydmljZSB9IGZyb20gXCIuLi9zaW5nbGV0b25zL2NvbXBvbmVudC1jcmVhdG9yLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRHJvcFpvbmVTZXJ2aWNlIH0gZnJvbSBcIi4vZHJvcC16b25lLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgQnJhbmNoLCBCcmFuY2hDb29yZGluYXRlcyB9IGZyb20gXCIuLi9CcmFuY2hcIjtcclxuaW1wb3J0IHsgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtbm9kZS9saW1ibGUtdHJlZS1ub2RlLmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBMaW1ibGVUcmVlUGxhY2Vob2xkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vbGltYmxlLXRyZWUtcGxhY2Vob2xkZXIvbGltYmxlLXRyZWUtcGxhY2Vob2xkZXIuY29tcG9uZW50XCI7XHJcblxyXG4vKiogQW4gb2JqZWN0IGRlc2NyaWJpbmcgYSBub2RlIG9mIHRoZSB0cmVlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGltYmxlVHJlZU5vZGUge1xyXG4gICAvKiogQSBsaXN0IG9mIG5vZGVzIHRvIGJlIHJlbmRlcmVkIFwidW5kZXJcIiB0aGlzIG9uZSwgb25lIGxldmVsIGRlZXBlciBpbiB0aGUgdHJlZS4gKi9cclxuICAgbm9kZXM/OiBMaW1ibGVUcmVlRGF0YTtcclxuICAgLy8gLyoqIEEgY3VzdG9tIGRhdGEgb2JqZWN0IHRoYXQgd2lsbCBiZSBwYXNzZWQgaW50byB0aGUgY29tcG9uZW50IGFzIGFuIGBJbnB1dCgpYCBiaW5kaW5nIGNhbGxlZCBgbm9kZURhdGFgICovXHJcbiAgIC8vIGRhdGE6IHVua25vd247XHJcbiAgIC8qKiBBbiBvYmplY3QgdGhhdCBkZXNjcmliZXMgdGhlIGNvbXBvbmVudCB3aGljaCB3aWxsIHJlcHJlc2VudCB0aGlzIG5vZGUgaW4gdGhlIHZpc3VhbCB0cmVlICovXHJcbiAgIGNvbXBvbmVudD86IENvbXBvbmVudE9iajtcclxuICAgY29sbGFwc2VkPzogYm9vbGVhbjtcclxuICAgW2luZGV4OiBzdHJpbmddOiB1bmtub3duO1xyXG59XHJcblxyXG4vKiogQW4gb2JqZWN0IHRoYXQgdGhlIGxpbWJsZS10cmVlLXJvb3QgY29tcG9uZW50IHVzZXMgdG8gYnVpbGQgdGhlIHRyZWUgKi9cclxuZXhwb3J0IHR5cGUgTGltYmxlVHJlZURhdGEgPSBBcnJheTxMaW1ibGVUcmVlTm9kZT47XHJcblxyXG4vKiogQSBncm91cCBvZiBzZXR0aW5ncyBmb3IgY2hhbmdpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIHRyZWUgKi9cclxuZXhwb3J0IGludGVyZmFjZSBMaW1ibGVUcmVlT3B0aW9ucyB7XHJcbiAgIC8qKiBUaGUgY29tcG9uZW50IG9iamVjdCB0byB1c2UgaWYgb25lIGlzIG5vdCBzcGVjaWZpZWQgZm9yIGEgcGFydGljdWxhciBub2RlICovXHJcbiAgIGRlZmF1bHRDb21wb25lbnQ/OiBDb21wb25lbnRPYmo7XHJcbiAgIC8qKiBUaGUgbnVtYmVyIG9mIHBpeGVscyB0byBpbmRlbnQgZWFjaCBsZXZlbCBvZiB0aGUgdHJlZS4gRGVmYXVsdHMgdG8gNDUgKi9cclxuICAgaW5kZW50PzogbnVtYmVyO1xyXG4gICAvKipcclxuICAgICogV2hldGhlciB0byBhbGxvdyBcIm5lc3RpbmdcIiAocGxhY2luZyBhIG5vZGUgb25lIGxldmVsIGRlZXBlciB0aGFuIGN1cnJlbnRseSBleGlzdHMgb24gdGhlIGJyYW5jaCkuXHJcbiAgICAqIFdoZW4gdGhpcyBpcyBhIGJvb2xlYW4sIGl0IGFwcGxpZXMgdG8gYWxsIG5vZGVzLiBXaGVuIHRoaXMgaXMgYSBmdW5jdGlvbiwgdGhlIG5vZGUgaW4gcXVlc3Rpb25cclxuICAgICogaXMgcGFzc2VkIGluLiBEZWZhdWx0cyB0byB0cnVlLlxyXG4gICAgKi9cclxuICAgYWxsb3dOZXN0aW5nPzogYm9vbGVhbiB8ICgobm9kZURhdGE6IExpbWJsZVRyZWVOb2RlKSA9PiBib29sZWFuKTtcclxuICAgLyoqXHJcbiAgICAqIFdoZXRoZXIgdG8gYWxsb3cgYSBub2RlIHRvIGJlIGRyYWdnZWQuIFdoZW4gdGhpcyBpcyBhIGJvb2xlYW4sIGl0IGFwcGxpZXMgdG8gYWxsIG5vZGVzLiBXaGVuIHRoaXNcclxuICAgICogaXMgYSBmdW5jdGlvbiwgdGhlIG5vZGUgaW4gcXVlc3Rpb24gaXMgcGFzc2VkIGluLiBEZWZhdWx0cyB0byB0cnVlLlxyXG4gICAgKi9cclxuICAgYWxsb3dEcmFnZ2luZz86IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIC8qKiBBIGNhbGxiYWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGEgc291cmNlTm9kZSBjYW4gYmUgZHJvcHBlZCBhdCBhIHBhcnRpY3VsYXIgbG9jYXRpb24uICovXHJcbiAgIGFsbG93RHJvcD86IChcclxuICAgICAgc291cmNlTm9kZTogTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgIHByb3Bvc2VkUGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGwsXHJcbiAgICAgIHByb3Bvc2VkSW5kZXg6IG51bWJlclxyXG4gICApID0+IGJvb2xlYW47XHJcbiAgIC8qKiBXaGVuIHNldCB0byB0cnVlLCBsaXN0IG1vZGUgd2lsbCBlbmZvcmNlIGEgZmxhdCB0cmVlIHN0cnVjdHVyZSwgbWVhbmluZyB0aGVyZVxyXG4gICAgKiBjYW4gb25seSBiZSBvbmUgbGV2ZWwgb2YgdGhlIHRyZWUuIGBhbGxvd05lc3RpbmdgIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIGBmYWxzZWBcclxuICAgICogYW5kIGFueSBjaGlsZHJlbiB3aWxsIGJlIGRlbGV0ZWQuXHJcbiAgICAqXHJcbiAgICAqIFRoaXMgbW9kZSBjYW4gYmUgdXNlZCB3aGVuIHRoZSBzYW1lIGR5bmFtaWMgZHJhZyBhbmQgZHJvcCBmdW5jdGlvbmFsaXR5IG9mXHJcbiAgICAqIHRoZSB0cmVlIGlzIGRlc2lyZWQsIGJ1dCB0aGUgdHJlZSBzdHJ1Y3R1cmUgaXRzZWxmIGlzIG5vdCBuZWNlc3NhcnkuIFRoaXNcclxuICAgICogYWxzbyBvcGVucyB1cCB0aGUgcGFnaW5hdGlvbiBBUEkgb24gdGhlIGxpbWJsZS10cmVlLXJvb3QgY29tcG9uZW50LiBTZWUgdGhlXHJcbiAgICAqIFJFQURNRSBmb3IgZGV0YWlscyBvbiBwYWdpbmF0aW9uLlxyXG4gICAgKi9cclxuICAgbGlzdE1vZGU/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQW4gb2JqZWN0IHRoYXQgcmVmZXJlbmNlcyB0aGUgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkIGFuZCBpdHMgYmluZGluZ3MgKi9cclxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRPYmoge1xyXG4gICAvKiogVGhlIGNvbXBvbmVudCBjbGFzcyAqL1xyXG4gICBjbGFzczogVHlwZTx1bmtub3duPjtcclxuICAgLyoqIFRoZSBiaW5kaW5ncyAoaW5wdXRzIGFuZCBvdXRwdXRzKSBvZiB0aGUgY2xhc3MgKi9cclxuICAgYmluZGluZ3M/OiB7XHJcbiAgICAgIFtpbmRleDogc3RyaW5nXTogdW5rbm93bjtcclxuICAgfTtcclxufVxyXG5cclxuLyoqIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYGluZGVudGAgb3B0aW9uICovXHJcbmV4cG9ydCBjb25zdCBJTkRFTlQgPSA0NTtcclxuXHJcbi8qKiBBbiBvcHRpb25zIG9iamVjdCB3aXRoIGRlZmF1bHQgdmFsdWVzIGxvYWRlZCB3aGVyZSBhcHBsaWNhYmxlICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkT3B0aW9uc0Jhc2UgZXh0ZW5kcyBMaW1ibGVUcmVlT3B0aW9ucyB7XHJcbiAgIGRlZmF1bHRDb21wb25lbnQ/OiBDb21wb25lbnRPYmo7XHJcbiAgIGluZGVudDogbnVtYmVyO1xyXG4gICBhbGxvd05lc3Rpbmc6IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIGFsbG93RHJhZ2dpbmc6IGJvb2xlYW4gfCAoKG5vZGVEYXRhOiBMaW1ibGVUcmVlTm9kZSkgPT4gYm9vbGVhbik7XHJcbiAgIGFsbG93RHJvcDogKFxyXG4gICAgICBzb3VyY2VOb2RlOiBMaW1ibGVUcmVlTm9kZSxcclxuICAgICAgcHJvcG9zZWRQYXJlbnQ6IExpbWJsZVRyZWVOb2RlIHwgbnVsbCxcclxuICAgICAgcHJvcG9zZWRJbmRleDogbnVtYmVyXHJcbiAgICkgPT4gYm9vbGVhbjtcclxuICAgbGlzdE1vZGU6IGJvb2xlYW47XHJcbiAgIGl0ZW1zUGVyUGFnZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gICBwYWdlOiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY2Vzc2VkT3B0aW9uc1dpdGhQYWdpbmF0aW9uIGV4dGVuZHMgUHJvY2Vzc2VkT3B0aW9uc0Jhc2Uge1xyXG4gICBsaXN0TW9kZTogdHJ1ZTtcclxuICAgaXRlbXNQZXJQYWdlOiBudW1iZXI7XHJcbiAgIHBhZ2U6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jZXNzZWRPcHRpb25zV2l0aG91dFBhZ2luYXRpb25cclxuICAgZXh0ZW5kcyBQcm9jZXNzZWRPcHRpb25zQmFzZSB7XHJcbiAgIGxpc3RNb2RlOiBmYWxzZTtcclxuICAgaXRlbXNQZXJQYWdlOiB1bmRlZmluZWQ7XHJcbiAgIHBhZ2U6IHVuZGVmaW5lZDtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgUHJvY2Vzc2VkT3B0aW9ucyA9XHJcbiAgIHwgUHJvY2Vzc2VkT3B0aW9uc1dpdGhQYWdpbmF0aW9uXHJcbiAgIHwgUHJvY2Vzc2VkT3B0aW9uc1dpdGhvdXRQYWdpbmF0aW9uO1xyXG5cclxuLyoqIHRoZSB2YWx1ZSBlbWl0dGVkIGZyb20gdGhlIHJvb3QgY29tcG9uZW50IGFmdGVyIGEgbm9kZSBpcyBkcm9wcGVkICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgVHJlZURyb3Age1xyXG4gICAvKiogVGhlIG5vZGUgdGhhdCB3YXMgZHJvcHBlZCAqL1xyXG4gICB0YXJnZXQ6IExpbWJsZVRyZWVOb2RlO1xyXG4gICAvKiogdGhlIHRhcmdldCdzIHBhcmVudCBiZWZvcmUgdGhlIGRyYWcgYW5kIGRyb3AsIG9yIG51bGwgaWYgaXQgd2FzIGEgdG9wLWxldmVsIG5vZGUgKi9cclxuICAgb2xkUGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGw7XHJcbiAgIC8qKiB0aGUgaW5kZXggb2YgdGhlIG5vZGUgYmVmb3JlIHRoZSBkcmFnIGFuZCBkcm9wIHJlbGF0aXZlIHRvIGl0cyBvbGQgc2libGluZ3MgKi9cclxuICAgb2xkSW5kZXg6IG51bWJlcjtcclxuICAgLyoqIHRoZSB0YXJnZXQncyBwYXJlbnQgYWZ0ZXIgdGhlIGRyYWcgYW5kIGRyb3AsIG9yIG51bGwgaWYgaXQgaXMgbm93IGEgdG9wLWxldmVsIG5vZGUgKi9cclxuICAgbmV3UGFyZW50OiBMaW1ibGVUcmVlTm9kZSB8IG51bGw7XHJcbiAgIC8qKiB0aGUgaW5kZXggb2YgdGhlIG5vZGUgYWZ0ZXIgdGhlIGRyYWcgYW5kIGRyb3AgcmVsYXRpdmUgdG8gaXRzIG5ldyBzaWJsaW5ncyAqL1xyXG4gICBuZXdJbmRleDogbnVtYmVyO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUcmVlU2VydmljZSB7XHJcbiAgIHB1YmxpYyBjaGFuZ2VzJDogUmVwbGF5U3ViamVjdDxudWxsPjtcclxuICAgcHVibGljIGRyb3BzJDogUmVwbGF5U3ViamVjdDxUcmVlRHJvcD47XHJcbiAgIHByaXZhdGUgaG9zdDogVmlld0NvbnRhaW5lclJlZiB8IHVuZGVmaW5lZDtcclxuICAgcHVibGljIHRyZWVEYXRhOiBMaW1ibGVUcmVlRGF0YSB8IHVuZGVmaW5lZDtcclxuICAgcHJpdmF0ZSB1bmN1dERhdGE6IExpbWJsZVRyZWVEYXRhIHwgdW5kZWZpbmVkO1xyXG4gICBwdWJsaWMgdHJlZU9wdGlvbnM6IFByb2Nlc3NlZE9wdGlvbnMgfCB1bmRlZmluZWQ7XHJcbiAgIHB1YmxpYyB0cmVlTW9kZWw6IEJyYW5jaDxhbnk+O1xyXG4gICBwcml2YXRlIHBsYWNlaG9sZGVyOiBib29sZWFuO1xyXG5cclxuICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29tcG9uZW50Q3JlYXRvclNlcnZpY2U6IENvbXBvbmVudENyZWF0b3JTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlYWRvbmx5IGRyb3Bab25lU2VydmljZTogRHJvcFpvbmVTZXJ2aWNlXHJcbiAgICkge1xyXG4gICAgICB0aGlzLmNoYW5nZXMkID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XHJcbiAgICAgIHRoaXMuZHJvcHMkID0gbmV3IFJlcGxheVN1YmplY3QoMSk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsID0gbmV3IEJyYW5jaChudWxsKTtcclxuICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGZhbHNlO1xyXG4gICB9XHJcblxyXG4gICAvKiogSW5pdGlhbGl6ZXMgdGhlIHNlcnZpY2UgYW5kIHJlbmRlcnMgdGhlIHRyZWUuXHJcbiAgICAqIEBwYXJhbSBob3N0IC0gVGhlIFZpZXdDb250YWluZXJSZWYgaW50byB3aGljaCB0aGUgdHJlZSB3aWxsIGJlIHJlbmRlcmVkLlxyXG4gICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBkYXRhIGFycmF5IHRoYXQgd2FzIHBhc3NlZCBpbiB0byBMaW1ibGVUcmVlUm9vdCwgd2hpY2ggaXNcclxuICAgICogdGhlIHVzZXJzJyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHJlZVxyXG4gICAgKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zIG9iamVjdCB0aGF0IHdhcyBwYXNzZWQgaW4gdG8gTGltYmxlVHJlZVJvb3RcclxuICAgICovXHJcbiAgIHB1YmxpYyBpbml0KFxyXG4gICAgICBob3N0OiBWaWV3Q29udGFpbmVyUmVmLFxyXG4gICAgICBkYXRhOiBMaW1ibGVUcmVlRGF0YSxcclxuICAgICAgb3B0aW9ucz86IExpbWJsZVRyZWVPcHRpb25zLFxyXG4gICAgICBpdGVtc1BlclBhZ2U/OiBudW1iZXIsXHJcbiAgICAgIHBhZ2U/OiBudW1iZXJcclxuICAgKTogdm9pZCB7XHJcbiAgICAgIHRoaXMuaG9zdCA9IGhvc3Q7XHJcbiAgICAgIHRoaXMudW5jdXREYXRhID0gZGF0YTtcclxuICAgICAgdGhpcy50cmVlT3B0aW9ucyA9IHRoaXMucHJvY2Vzc09wdGlvbnMob3B0aW9ucywgaXRlbXNQZXJQYWdlLCBwYWdlKTtcclxuICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMubGlzdE1vZGUgPT09IHRydWUpIHtcclxuICAgICAgICAgbGV0IHN0YXJ0ID1cclxuICAgICAgICAgICAgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2UgKiAodGhpcy50cmVlT3B0aW9ucy5wYWdlIC0gMSk7XHJcbiAgICAgICAgIGlmIChpc05hTihzdGFydCkpIHtcclxuICAgICAgICAgICAgLy9UaGlzIGNhdGNoZXMgdGhlIGNhc2Ugd2hlcmUgaXRlbXNQZXJQYWdlIHdhcyBub3QgcGFzc2VkIGJ5IHRoZSB1c2VyLFxyXG4gICAgICAgICAgICAvL2NhdXNpbmcgYHN0YXJ0YCB0byBlcXVhbCBpbmZpbml0eSowLCB3aGljaCBpcyBOYU4uXHJcbiAgICAgICAgICAgIHN0YXJ0ID0gMDtcclxuICAgICAgICAgfVxyXG4gICAgICAgICBjb25zdCBlbmQgPSBzdGFydCArIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICB0aGlzLnRyZWVEYXRhID0gdGhpcy51bmN1dERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPSB0aGlzLnVuY3V0RGF0YTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgdXNlUGxhY2Vob2xkZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5ob3N0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZU1vZGVsIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdHJ1ZTtcclxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJOb2RlOiBMaW1ibGVUcmVlTm9kZSA9IHtcclxuICAgICAgICAgY29tcG9uZW50OiB7IGNsYXNzOiBMaW1ibGVUcmVlUGxhY2Vob2xkZXJDb21wb25lbnQgfVxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBicmFuY2ggPSBuZXcgQnJhbmNoKHBsYWNlaG9sZGVyTm9kZSk7XHJcbiAgICAgIHRoaXMudHJlZU1vZGVsLmFwcGVuZENoaWxkKGJyYW5jaCk7XHJcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuY29tcG9uZW50Q3JlYXRvclNlcnZpY2UuYXBwZW5kQ29tcG9uZW50PExpbWJsZVRyZWVOb2RlQ29tcG9uZW50PihcclxuICAgICAgICAgTGltYmxlVHJlZU5vZGVDb21wb25lbnQsXHJcbiAgICAgICAgIHRoaXMuaG9zdFxyXG4gICAgICApO1xyXG4gICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gYnJhbmNoO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgcmVtb3ZlUGxhY2Vob2xkZXIoKSB7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSBmYWxzZSkge1xyXG4gICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGxhY2Vob2xkZXJJbmRleCA9IHRoaXMudHJlZU1vZGVsLmdldENoaWxkcmVuKCkubGVuZ3RoIC0gMTtcclxuICAgICAgaWYgKHBsYWNlaG9sZGVySW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgIHRoaXMudHJlZU1vZGVsLnJlbW92ZUNoaWxkKHBsYWNlaG9sZGVySW5kZXgpOyAvL3JlbW92ZSB0aGUgcGxhY2Vob2xkZXJcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnBsYWNlaG9sZGVyID0gZmFsc2U7XHJcbiAgIH1cclxuXHJcbiAgIC8qKiBSZW5kZXJzIHRoZSBlbnRpcmUgdHJlZSBmcm9tIHJvb3QgdG8gbGVhdmVzICovXHJcbiAgIHByaXZhdGUgcmVuZGVyKCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMuaG9zdCA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPT09IHVuZGVmaW5lZCB8fFxyXG4gICAgICAgICB0aGlzLnRyZWVPcHRpb25zID09PSB1bmRlZmluZWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRyZWVNb2RlbCBub3QgaW5pdGlhbGl6ZWRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5ob3N0LmNsZWFyKCk7XHJcbiAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLnJlc2V0KCk7XHJcbiAgICAgIC8vV2UgZG9uJ3QgbmVlZCB0byBjYWxsIHJlbW92ZVBsYWNlaG9sZGVyIGhlcmUgYmVjYXVzZSB3ZSBhbHJlYWR5IGNsZWFyZWQgaXQgYXdheSBpbiB0aGUgcHJlY2VkaW5nIGxpbmVzLiBXZSBqdXN0IGhhdmUgdG8gdGVsbCB0aGUgc2VydmljZSB0aGF0IGl0IGlzIGRvbmUuXHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBmYWxzZTtcclxuICAgICAgdGhpcy50cmVlTW9kZWwgPSBuZXcgQnJhbmNoKG51bGwpO1xyXG4gICAgICBpZiAodGhpcy50cmVlRGF0YS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgLy9UcmVlIGlzIGVtcHR5LCBidXQgd2UgaGF2ZSB0byB0byBoYXZlIHNvbWV0aGluZyB0aGVyZSBzbyBvdGhlciB0cmVlcycgaXRlbXMgY2FuIGJlIGRyb3BwZWQgaW50byBpdFxyXG4gICAgICAgICB0aGlzLnVzZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiB0aGlzLnRyZWVEYXRhKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IG5ldyBCcmFuY2gobm9kZSk7XHJcbiAgICAgICAgICAgIHRoaXMudHJlZU1vZGVsLmFwcGVuZENoaWxkKGJyYW5jaCk7XHJcbiAgICAgICAgIH1cclxuICAgICAgICAgZm9yIChjb25zdCBicmFuY2ggb2YgdGhpcy50cmVlTW9kZWwuZ2V0Q2hpbGRyZW4oKSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLmNvbXBvbmVudENyZWF0b3JTZXJ2aWNlLmFwcGVuZENvbXBvbmVudDxMaW1ibGVUcmVlTm9kZUNvbXBvbmVudD4oXHJcbiAgICAgICAgICAgICAgIExpbWJsZVRyZWVOb2RlQ29tcG9uZW50LFxyXG4gICAgICAgICAgICAgICB0aGlzLmhvc3RcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmJyYW5jaCA9IGJyYW5jaDtcclxuICAgICAgICAgICAgLy9UaGUgTGltYmxlVHJlZU5vZGVDb21wb25lbnQgd2lsbCAoaW5kaXJlY3RseSkgY2FsbCB0aGUgYHJlbmRlckJyYW5jaGAgbWV0aG9kIG9mIHRoaXMgc2VydmljZSB0byByZW5kZXJcclxuICAgICAgICAgICAgLy9pdHMgb3duIGNoaWxkcmVuXHJcbiAgICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgaWYgKHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUcmVlTW9kZWwgbm90IGluaXRpYWxpemVkXCIpO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIHRoaXMuZHJvcFpvbmVTZXJ2aWNlLmluaXQodGhpcy50cmVlTW9kZWwsIHRoaXMudHJlZU9wdGlvbnMpO1xyXG4gICAgICAgICB0aGlzLmNoYW5nZXMkLm5leHQobnVsbCk7XHJcbiAgICAgIH0pO1xyXG4gICB9XHJcblxyXG4gICAvKiogUmVuZGVycyBhIGJyYW5jaCBvZiB0aGUgdHJlZSBhbmQgYWxsIG9mIGl0cyBkZXNjZW5kYW50cyAqL1xyXG4gICBwdWJsaWMgcmVuZGVyQnJhbmNoKGhvc3Q6IFZpZXdDb250YWluZXJSZWYsIGJyYW5jaDogQnJhbmNoPGFueT4pIHtcclxuICAgICAgaWYgKHRoaXMudHJlZU1vZGVsID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZU1vZGVsIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICBob3N0LmNsZWFyKCk7XHJcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBicmFuY2guZGF0YS5ub2RlcyA/PyBbXSkge1xyXG4gICAgICAgICBjb25zdCBuZXdCcmFuY2ggPSBuZXcgQnJhbmNoKG5vZGUpO1xyXG4gICAgICAgICBicmFuY2guYXBwZW5kQ2hpbGQobmV3QnJhbmNoKTtcclxuICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdGhpcy5jb21wb25lbnRDcmVhdG9yU2VydmljZS5hcHBlbmRDb21wb25lbnQ8TGltYmxlVHJlZU5vZGVDb21wb25lbnQ+KFxyXG4gICAgICAgICAgICBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCxcclxuICAgICAgICAgICAgaG9zdFxyXG4gICAgICAgICApO1xyXG4gICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuYnJhbmNoID0gbmV3QnJhbmNoO1xyXG4gICAgICAgICAvL1RoZSBMaW1ibGVUcmVlTm9kZUNvbXBvbmVudCB3aWxsIChpbmRpcmVjdGx5KSBjYWxsIHRoZSBgcmVuZGVyQnJhbmNoYCBtZXRob2Qgb2YgdGhpcyBzZXJ2aWNlIHRvIHJlbmRlclxyXG4gICAgICAgICAvL2l0cyBvd24gY2hpbGRyZW5cclxuICAgICAgfVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIHByb2Nlc3NPcHRpb25zKFxyXG4gICAgICBvcHRpb25zOiBMaW1ibGVUcmVlT3B0aW9ucyA9IHt9LFxyXG4gICAgICBpdGVtc1BlclBhZ2U6IG51bWJlciA9IEluZmluaXR5LFxyXG4gICAgICBwYWdlOiBudW1iZXIgPSAxXHJcbiAgICk6IFByb2Nlc3NlZE9wdGlvbnMge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIG9wdGlvbnMubGlzdE1vZGUgPT09IHRydWUgJiZcclxuICAgICAgICAgb3B0aW9ucy5hbGxvd05lc3RpbmcgIT09IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICBvcHRpb25zLmFsbG93TmVzdGluZyAhPT0gZmFsc2VcclxuICAgICAgKSB7XHJcbiAgICAgICAgIGNvbnNvbGUud2FybihcclxuICAgICAgICAgICAgXCJUaGUgdmFsdWUgb2YgYGFsbG93TmVzdGluZ2Agd2lsbCBiZSBpZ25vcmVkOyBpdCBtdXN0IGJlIGZhbHNlIHdoZW4gYGxpc3RNb2RlYCBpcyB0cnVlXCJcclxuICAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZXN1bHQ6IFByb2Nlc3NlZE9wdGlvbnNCYXNlID0ge1xyXG4gICAgICAgICBkZWZhdWx0Q29tcG9uZW50OiBvcHRpb25zLmRlZmF1bHRDb21wb25lbnQsXHJcbiAgICAgICAgIGluZGVudDogb3B0aW9ucy5pbmRlbnQgPz8gSU5ERU5ULFxyXG4gICAgICAgICBhbGxvd05lc3Rpbmc6XHJcbiAgICAgICAgICAgIG9wdGlvbnMubGlzdE1vZGUgIT09IHRydWUgJiYgKG9wdGlvbnMuYWxsb3dOZXN0aW5nID8/IHRydWUpLFxyXG4gICAgICAgICBhbGxvd0RyYWdnaW5nOiBvcHRpb25zLmFsbG93RHJhZ2dpbmcgPz8gdHJ1ZSxcclxuICAgICAgICAgYWxsb3dEcm9wOiBvcHRpb25zLmFsbG93RHJvcCA/PyAoKCkgPT4gdHJ1ZSksXHJcbiAgICAgICAgIGxpc3RNb2RlOiBvcHRpb25zLmxpc3RNb2RlID8/IGZhbHNlLFxyXG4gICAgICAgICBpdGVtc1BlclBhZ2U6IG9wdGlvbnMubGlzdE1vZGUgPyBpdGVtc1BlclBhZ2UgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgIHBhZ2U6IG9wdGlvbnMubGlzdE1vZGUgPyBwYWdlIDogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiByZXN1bHQgYXMgUHJvY2Vzc2VkT3B0aW9ucztcclxuICAgfVxyXG5cclxuICAgcHVibGljIGRyb3Aoc291cmNlOiBCcmFuY2g8YW55PiwgdGFyZ2V0Q29vcmRpbmF0ZXM6IEJyYW5jaENvb3JkaW5hdGVzKSB7XHJcbiAgICAgIGNvbnN0IHNvdXJjZVBhcmVudCA9IHNvdXJjZS5nZXRQYXJlbnQoKTtcclxuICAgICAgY29uc3Qgc291cmNlSW5kZXggPSBzb3VyY2UuZ2V0SW5kZXgoKTtcclxuICAgICAgaWYgKHNvdXJjZUluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IG1vdmUgdGhlIGhpZGRlbiByb290IG5vZGVcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHRhcmdldFBhcmVudENvb3JkaW5hdGVzOiBCcmFuY2hDb29yZGluYXRlcztcclxuICAgICAgbGV0IGluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQ7XHJcbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyID09PSB0cnVlKSB7XHJcbiAgICAgICAgIHRhcmdldFBhcmVudENvb3JkaW5hdGVzID0gW107XHJcbiAgICAgICAgIGluZGV4ID0gMDtcclxuICAgICAgICAgdGhpcy5yZW1vdmVQbGFjZWhvbGRlcigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlcyA9IFsuLi50YXJnZXRDb29yZGluYXRlc107XHJcbiAgICAgICAgIGluZGV4ID0gdGFyZ2V0UGFyZW50Q29vcmRpbmF0ZXMucG9wKCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidGFyZ2V0IGNvb3JkaW5hdGVzIGFyZSBlbXB0eVwiKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCB0YXJnZXRQYXJlbnQgPSB0aGlzLnRyZWVNb2RlbC5nZXREZXNjZW5kYW50KFxyXG4gICAgICAgICB0YXJnZXRQYXJlbnRDb29yZGluYXRlc1xyXG4gICAgICApO1xyXG4gICAgICBpZiAodGFyZ2V0UGFyZW50ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY291bGQgbm90IGdldCB0byB0YXJnZXRcIik7XHJcbiAgICAgIH1cclxuICAgICAgdGFyZ2V0UGFyZW50Lmluc2VydENoaWxkKHNvdXJjZSwgaW5kZXgpO1xyXG4gICAgICB0aGlzLnJlYnVpbGRUcmVlRGF0YSgpO1xyXG4gICAgICB0aGlzLmRyb3BzJC5uZXh0KHtcclxuICAgICAgICAgdGFyZ2V0OiBzb3VyY2UuZGF0YSxcclxuICAgICAgICAgb2xkUGFyZW50OiBzb3VyY2VQYXJlbnQ/LmRhdGEgYXMgTGltYmxlVHJlZU5vZGUsXHJcbiAgICAgICAgIG9sZEluZGV4OiBzb3VyY2VJbmRleCxcclxuICAgICAgICAgbmV3UGFyZW50OiB0YXJnZXRQYXJlbnQuZGF0YSxcclxuICAgICAgICAgbmV3SW5kZXg6IGluZGV4XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgcmVtb3ZlKHRhcmdldDogQnJhbmNoPGFueT4pIHtcclxuICAgICAgdGFyZ2V0LnJlbW92ZSgpO1xyXG4gICAgICB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyKCk7XHJcbiAgICAgIHRoaXMucmVidWlsZFRyZWVEYXRhKCk7XHJcbiAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcmVidWlsZFRyZWVEYXRhKCk6IHZvaWQge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhID09PSB1bmRlZmluZWQgfHxcclxuICAgICAgICAgdGhpcy50cmVlRGF0YSA9PT0gdW5kZWZpbmVkIHx8XHJcbiAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMgPT09IHVuZGVmaW5lZFxyXG4gICAgICApIHtcclxuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVHJlZSBkYXRhIG5vdCBpbml0aWFsaXplZFwiKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRyZWVEYXRhLmxlbmd0aCA9IDA7XHJcbiAgICAgIGZvciAoY29uc3QgYnJhbmNoIG9mIHRoaXMudHJlZU1vZGVsLmdldENoaWxkcmVuKCkpIHtcclxuICAgICAgICAgdGhpcy50cmVlRGF0YS5wdXNoKHRoaXMucmVidWlsZEJyYW5jaChicmFuY2gpKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy50cmVlT3B0aW9ucy5saXN0TW9kZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICBsZXQgc3RhcnQgPVxyXG4gICAgICAgICAgICB0aGlzLnRyZWVPcHRpb25zLml0ZW1zUGVyUGFnZSAqICh0aGlzLnRyZWVPcHRpb25zLnBhZ2UgLSAxKTtcclxuICAgICAgICAgaWYgKGlzTmFOKHN0YXJ0KSkge1xyXG4gICAgICAgICAgICAvL1RoaXMgY2F0Y2hlcyB0aGUgY2FzZSB3aGVyZSBpdGVtc1BlclBhZ2Ugd2FzIG5vdCBwYXNzZWQgYnkgdGhlIHVzZXIsXHJcbiAgICAgICAgICAgIC8vY2F1c2luZyBgc3RhcnRgIHRvIGVxdWFsIGluZmluaXR5KjAsIHdoaWNoIGlzIE5hTi5cclxuICAgICAgICAgICAgc3RhcnQgPSAwO1xyXG4gICAgICAgICB9XHJcbiAgICAgICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy50cmVlT3B0aW9ucy5pdGVtc1BlclBhZ2U7XHJcbiAgICAgICAgIHRoaXMudW5jdXREYXRhLnNwbGljZShcclxuICAgICAgICAgICAgc3RhcnQsXHJcbiAgICAgICAgICAgIHRoaXMudHJlZU9wdGlvbnMuaXRlbXNQZXJQYWdlLFxyXG4gICAgICAgICAgICAuLi50aGlzLnRyZWVEYXRhXHJcbiAgICAgICAgICk7XHJcbiAgICAgICAgIHRoaXMudHJlZURhdGEgPSB0aGlzLnVuY3V0RGF0YS5zbGljZShzdGFydCwgZW5kKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgdGhpcy51bmN1dERhdGEgPSB0aGlzLnRyZWVEYXRhO1xyXG4gICAgICB9XHJcbiAgIH1cclxuXHJcbiAgIHByaXZhdGUgcmVidWlsZEJyYW5jaChicmFuY2g6IEJyYW5jaDxhbnk+KTogTGltYmxlVHJlZU5vZGUge1xyXG4gICAgICBjb25zdCB0ZW1wOiBMaW1ibGVUcmVlTm9kZSA9IGJyYW5jaC5kYXRhO1xyXG4gICAgICB0ZW1wLm5vZGVzID0gW107XHJcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgYnJhbmNoLmdldENoaWxkcmVuKCkpIHtcclxuICAgICAgICAgdGVtcC5ub2Rlcy5wdXNoKHRoaXMucmVidWlsZEJyYW5jaChjaGlsZCkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0ZW1wO1xyXG4gICB9XHJcblxyXG4gICBwdWJsaWMgZ2V0UGxhY2Vob2xkZXIoKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyO1xyXG4gICB9XHJcbn1cclxuIl19
{
"name": "@limble/limble-tree",
"version": "0.8.0",
"version": "0.8.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 too big to display

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