UNPKG

react-dropdown-select

Version:
1 lines 35.5 kB
"use strict";exports.__esModule=!0,exports.default=exports.Select=void 0;var _base=_interopRequireDefault(require("@emotion/styled/base")),_react=_interopRequireWildcard(require("react")),_reactDom=_interopRequireDefault(require("react-dom")),_ClickOutside=_interopRequireDefault(require("./components/ClickOutside")),_Content=_interopRequireDefault(require("./components/Content")),_Dropdown=_interopRequireDefault(require("./components/Dropdown")),_Loading=_interopRequireDefault(require("./components/Loading")),_Clear=_interopRequireDefault(require("./components/Clear")),_Separator=_interopRequireDefault(require("./components/Separator")),_DropdownHandle=_interopRequireDefault(require("./components/DropdownHandle")),_util=require("./util"),_constants=require("./constants"),_SelectPropsModel=_interopRequireDefault(require("./models/SelectPropsModel"));function _getRequireWildcardCache(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(_getRequireWildcardCache=function(a){return a?c:b})(a)}function _interopRequireWildcard(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!=typeof a&&"function"!=typeof a)return{default:a};var c=_getRequireWildcardCache(b);if(c&&c.has(a))return c.get(a);var d={},e=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!=f&&Object.prototype.hasOwnProperty.call(a,f)){var g=e?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(d,f,g):d[f]=a[f]}return d.default=a,c&&c.set(a,d),d}function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _extends(){return _extends=Object.assign?Object.assign.bind():function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _inheritsLoose(a,b){a.prototype=Object.create(b.prototype),a.prototype.constructor=a,_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}var Select=/*#__PURE__*/function(a){function b(b){var c;return c=a.call(this,b)||this,c.onDropdownClose=function(){c.setState({cursor:null}),c.props.onDropdownClose()},c.onScroll=function(){c.props.closeOnScroll&&c.dropDown("close"),c.updateSelectBounds()},c.updateSelectBounds=function(){return c.select.current&&c.setState({selectBounds:c.select.current.getBoundingClientRect()})},c.getSelectBounds=function(){return c.state.selectBounds},c.dropDown=function(a,b,d){void 0===a&&(a="toggle"),void 0===d&&(d=!1);var e=b&&b.target||b&&b.srcElement;return void 0!==c.props.onDropdownCloseRequest&&c.state.dropdown&&!1===d&&"close"===a?c.props.onDropdownCloseRequest({props:c.props,methods:c.methods,state:c.state,close:function close(){return c.dropDown("close",null,!0)}}):c.props.portal&&!c.props.closeOnScroll&&!c.props.closeOnSelect&&b&&e&&e.offsetParent&&e.offsetParent.classList.contains("react-dropdown-select-dropdown")?void 0:c.props.keepOpen?c.setState({dropdown:!0}):"close"===a&&c.state.dropdown?(c.select.current.blur(),c.setState({dropdown:!1,search:c.props.clearOnBlur?"":c.state.search,searchResults:c.props.options})):"open"!==a||c.state.dropdown?"toggle"===a&&(c.select.current.focus(),c.setState({dropdown:!c.state.dropdown})):c.setState({dropdown:!0})},c.getSelectRef=function(){return c.select.current},c.addItem=function(a){if(c.props.multi){if((0,_util.valueExistInSelected)((0,_util.getByPath)(a,c.props.valueField),c.state.values,c.props))return c.removeItem(null,a,!1);c.setState({values:[].concat(c.state.values,[a])})}else c.setState({values:[a],dropdown:!1});return c.props.clearOnSelect&&c.setState({search:""},function(){c.setState({searchResults:c.searchResults()})}),!0},c.removeItem=function(a,b,d){void 0===d&&(d=!1),a&&d&&(a.preventDefault(),a.stopPropagation(),c.dropDown("close")),c.setState({values:c.state.values.filter(function(a){return(0,_util.getByPath)(a,c.props.valueField)!==(0,_util.getByPath)(b,c.props.valueField)})})},c.setSearch=function(a){c.setState({cursor:null}),c.setState({search:a.target.value},function(){c.setState({searchResults:c.searchResults()})})},c.getInputSize=function(){return c.state.search?c.state.search.length:0<c.state.values.length?c.props.addPlaceholder.length:c.props.placeholder.length},c.toggleSelectAll=function(){return c.setState({values:0===c.state.values.length?c.selectAll():c.clearAll()})},c.clearAll=function(){c.props.onClearAll(),c.setState({values:[]})},c.selectAll=function(a){void 0===a&&(a=[]),c.props.onSelectAll();var b=0<a.length?a:c.props.options.filter(function(a){return!a.disabled});c.setState({values:b})},c.isSelected=function(a){return!!c.state.values.find(function(b){return(0,_util.getByPath)(b,c.props.valueField)===(0,_util.getByPath)(a,c.props.valueField)})},c.areAllSelected=function(){return c.state.values.length===c.props.options.filter(function(a){return!a.disabled}).length},c.safeString=function(a){return a.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")},c.sortBy=function(){var a=c.props,d=a.sortBy,e=a.options;return d?(e.sort(function(c,a){return(0,_util.getProp)(c,d)<(0,_util.getProp)(a,d)?-1:(0,_util.getProp)(c,d)>(0,_util.getProp)(a,d)?1:0}),e):e},c.searchFn=function(a){var b=a.state,d=a.methods,e=new RegExp(d.safeString(b.search),"i");return d.sortBy().filter(function(a){return e.test((0,_util.getByPath)(a,c.props.searchBy)||(0,_util.getByPath)(a,c.props.valueField))})},c.searchResults=function(){var a={state:c.state,props:c.props,methods:c.methods};return c.props.searchFn(a)||c.searchFn(a)},c.activeCursorItem=function(a){return c.setState({activeCursorItem:a})},c.handleKeyDown=function(a){var b={event:a,state:c.state,props:c.props,methods:c.methods,setState:c.setState.bind(_assertThisInitialized(c))};return c.props.handleKeyDownFn(b)||c.handleKeyDownFn(b)},c.handleKeyDownFn=function(a){var b=a.event,d=a.state,e=a.props,f=a.methods,g=a.setState,h=d.cursor,i=d.searchResults,j="Escape"===b.key,k="Enter"===b.key,l="ArrowUp"===b.key,m="ArrowDown"===b.key,n="Backspace"===b.key,o="Tab"===b.key&&!b.shiftKey,p=b.shiftKey&&"Tab"===b.key;if(m&&!d.dropdown)return b.preventDefault(),c.dropDown("open"),g({cursor:0});if((m||o&&d.dropdown)&&null===h)return g({cursor:0});if((l||m||p&&d.dropdown||o&&d.dropdown)&&b.preventDefault(),j&&c.dropDown("close"),k){var q=i[h];if(q&&!q.disabled){if(e.create&&(0,_util.valueExistInSelected)(d.search,d.values,e))return null;f.addItem(q)}}return(m||o&&d.dropdown)&&i.length===h?g({cursor:0}):void((m||o&&d.dropdown)&&g(function(a){return{cursor:a.cursor+1}}),(l||p&&d.dropdown)&&0<h&&g(function(a){return{cursor:a.cursor-1}}),(l||p&&d.dropdown)&&0===h&&g({cursor:i.length}),n&&e.backspaceDelete&&0===c.getInputSize()&&c.setState({values:c.state.values.slice(0,-1)}))},c.renderDropdown=function(){return c.props.portal?/*#__PURE__*/_reactDom.default.createPortal(/*#__PURE__*/_react.default.createElement(_Dropdown.default,{props:c.props,state:c.state,methods:c.methods}),c.dropdownRoot):/*#__PURE__*/_react.default.createElement(_Dropdown.default,{props:c.props,state:c.state,methods:c.methods})},c.createNew=function(a){var b,d=(b={},b[c.props.labelField]=a,b[c.props.valueField]=a,b);c.addItem(d),c.props.onCreateNew(d),c.setState({search:""})},c.state={dropdown:!1,values:b.values,search:"",selectBounds:{},cursor:null,searchResults:b.options},c.methods={activeCursorItem:c.activeCursorItem,addItem:c.addItem,areAllSelected:c.areAllSelected,clearAll:c.clearAll,createNew:c.createNew,dropDown:c.dropDown,getInputSize:c.getInputSize,getSelectBounds:c.getSelectBounds,getSelectRef:c.getSelectRef,handleKeyDown:c.handleKeyDown,isSelected:c.isSelected,removeItem:c.removeItem,safeString:c.safeString,searchResults:c.searchResults,selectAll:c.selectAll,setSearch:c.setSearch,sortBy:c.sortBy,toggleSelectAll:c.toggleSelectAll},c.select=/*#__PURE__*/_react.default.createRef(),c.dropdownRoot="undefined"!=typeof document&&document.createElement("div"),c}_inheritsLoose(b,a);var c=b.prototype;return c.componentDidMount=function componentDidMount(){this.props.portal&&this.props.portal.appendChild(this.dropdownRoot),(0,_util.isomorphicWindow)().addEventListener("resize",(0,_util.debounce)(this.updateSelectBounds)),(0,_util.isomorphicWindow)().addEventListener("scroll",(0,_util.debounce)(this.onScroll)),this.dropDown("close"),this.select&&this.updateSelectBounds(),this.props.defaultMenuIsOpen&&this.dropDown("open")},c.componentDidUpdate=function componentDidUpdate(a,b){var c=this;!this.props.compareValuesFunc(a.values,this.props.values)&&this.props.compareValuesFunc(a.values,b.values)&&(this.setState({values:this.props.values},function(){c.props.onChange(c.state.values)}),this.updateSelectBounds()),a.options!==this.props.options&&this.setState({searchResults:this.searchResults()}),b.values!==this.state.values&&(this.props.onChange(this.state.values),this.updateSelectBounds()),b.search!==this.state.search&&this.updateSelectBounds(),b.values!==this.state.values&&this.props.closeOnSelect&&this.dropDown("close"),a.multi!==this.props.multi&&this.updateSelectBounds(),b.dropdown&&b.dropdown!==this.state.dropdown&&this.onDropdownClose(),b.dropdown||b.dropdown===this.state.dropdown||this.props.onDropdownOpen()},c.componentWillUnmount=function componentWillUnmount(){this.props.portal&&this.props.portal.removeChild(this.dropdownRoot),(0,_util.isomorphicWindow)().removeEventListener("resize",(0,_util.debounce)(this.updateSelectBounds,this.props.debounceDelay)),(0,_util.isomorphicWindow)().removeEventListener("scroll",(0,_util.debounce)(this.onScroll,this.props.debounceDelay))},c.render=function render(){var a=this;return/*#__PURE__*/_react.default.createElement(_ClickOutside.default,{onClickOutside:function onClickOutside(b){return a.dropDown("close",b)}},/*#__PURE__*/_react.default.createElement(ReactDropdownSelect,_extends({onKeyDown:this.handleKeyDown,"aria-label":"Dropdown select","aria-expanded":this.state.dropdown,onClick:function onClick(b){return a.dropDown("open",b)},tabIndex:this.props.disabled?"-1":"0",direction:this.props.direction,style:this.props.style,ref:this.select,disabled:this.props.disabled,className:_constants.LIB_NAME+" "+this.props.className,color:this.props.color},this.props.additionalProps),/*#__PURE__*/_react.default.createElement(_Content.default,{props:this.props,state:this.state,methods:this.methods}),(this.props.name||this.props.required)&&/*#__PURE__*/_react.default.createElement("input",{tabIndex:-1,style:{opacity:0,width:0,position:"absolute"},name:this.props.name,required:this.props.required,pattern:this.props.pattern,defaultValue:this.state.values.map(function(b){return b[a.props.labelField]}).toString()||[],disabled:this.props.disabled}),this.props.loading&&/*#__PURE__*/_react.default.createElement(_Loading.default,{props:this.props}),this.props.clearable&&/*#__PURE__*/_react.default.createElement(_Clear.default,{props:this.props,state:this.state,methods:this.methods}),this.props.separator&&/*#__PURE__*/_react.default.createElement(_Separator.default,{props:this.props,state:this.state,methods:this.methods}),this.props.dropdownHandle&&/*#__PURE__*/_react.default.createElement(_DropdownHandle.default,{onClick:function onClick(){return a.select.current.focus()},props:this.props,state:this.state,methods:this.methods}),this.state.dropdown&&!this.props.disabled&&this.renderDropdown()))},b}(_react.Component);exports.Select=Select,Select.defaultProps={addPlaceholder:"",additionalProps:null,autoFocus:!1,backspaceDelete:!0,clearAllLabel:"Clear all",clearOnBlur:!0,clearOnSelect:!0,clearable:!1,closeOnScroll:!1,closeOnSelect:!1,closeOnClickInput:!1,color:"#0074D9",compareValuesFunc:_util.isEqual,create:!1,createNewLabel:"add {search}",debounceDelay:0,direction:"ltr",disabled:!1,disabledLabel:"disabled",dropdownGap:5,dropdownHandle:!0,dropdownHeight:"300px",dropdownPosition:"bottom",handleKeyDownFn:function handleKeyDownFn(){},keepOpen:!1,keepSelectedInList:!0,labelField:"label",loading:!1,multi:!1,name:null,noDataLabel:"No data",onChange:function onChange(){},onClearAll:function onClearAll(){},onCreateNew:function onCreateNew(){},onDropdownClose:function onDropdownClose(){},onDropdownCloseRequest:void 0,onDropdownOpen:function onDropdownOpen(){},onSelectAll:function onSelectAll(){},options:[],pattern:void 0,placeholder:"Select...",portal:null,required:!1,searchBy:"label",searchFn:function searchFn(){},searchable:!0,selectAll:!1,selectAllLabel:"Select all",separator:!1,sortBy:null,valueField:"value",values:[],defaultMenuIsOpen:!1};var ReactDropdownSelect=/*#__PURE__*/(0,_base.default)("div","production"===process.env.NODE_ENV?{target:"e1gzf2xs0"}:{target:"e1gzf2xs0",label:"ReactDropdownSelect"})("box-sizing:border-box;position:relative;display:flex;border:1px solid #ccc;width:100%;border-radius:2px;padding:2px 5px;flex-direction:row;direction:",function(a){var b=a.direction;return b},";align-items:center;cursor:pointer;min-height:36px;",function(a){var b=a.disabled;return b?"cursor: not-allowed;pointer-events: none;opacity: 0.3;":"pointer-events: all;"}," :hover,:focus-within{border-color:",function(a){var b=a.color;return b},";}:focus,:focus-within{outline:0;box-shadow:0 0 0 3px ",function(a){var b=a.color;return(0,_util.hexToRGBA)(b,.2)},";}*{box-sizing:border-box;}"+("production"===process.env.NODE_ENV?"":"/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpa0JzQyIsImZpbGUiOiIuLi9zcmMvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgQ2xpY2tPdXRzaWRlIGZyb20gJy4vY29tcG9uZW50cy9DbGlja091dHNpZGUnO1xuXG5pbXBvcnQgQ29udGVudCBmcm9tICcuL2NvbXBvbmVudHMvQ29udGVudCc7XG5pbXBvcnQgRHJvcGRvd24gZnJvbSAnLi9jb21wb25lbnRzL0Ryb3Bkb3duJztcbmltcG9ydCBMb2FkaW5nIGZyb20gJy4vY29tcG9uZW50cy9Mb2FkaW5nJztcbmltcG9ydCBDbGVhciBmcm9tICcuL2NvbXBvbmVudHMvQ2xlYXInO1xuaW1wb3J0IFNlcGFyYXRvciBmcm9tICcuL2NvbXBvbmVudHMvU2VwYXJhdG9yJztcbmltcG9ydCBEcm9wZG93bkhhbmRsZSBmcm9tICcuL2NvbXBvbmVudHMvRHJvcGRvd25IYW5kbGUnO1xuXG5pbXBvcnQge1xuICBkZWJvdW5jZSxcbiAgaGV4VG9SR0JBLFxuICBpc0VxdWFsLFxuICBnZXRCeVBhdGgsXG4gIGdldFByb3AsXG4gIHZhbHVlRXhpc3RJblNlbGVjdGVkLFxuICBpc29tb3JwaGljV2luZG93XG59IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBMSUJfTkFNRSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBTZWxlY3RQcm9wc01vZGVsIGZyb20gJy4vbW9kZWxzL1NlbGVjdFByb3BzTW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IFNlbGVjdFByb3BzTW9kZWw7XG5cbiAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZHJvcGRvd246IGZhbHNlLFxuICAgICAgdmFsdWVzOiBwcm9wcy52YWx1ZXMsXG4gICAgICBzZWFyY2g6ICcnLFxuICAgICAgc2VsZWN0Qm91bmRzOiB7fSxcbiAgICAgIGN1cnNvcjogbnVsbCxcbiAgICAgIHNlYXJjaFJlc3VsdHM6IHByb3BzLm9wdGlvbnNcbiAgICB9O1xuXG4gICAgdGhpcy5tZXRob2RzID0ge1xuICAgICAgYWN0aXZlQ3Vyc29ySXRlbTogdGhpcy5hY3RpdmVDdXJzb3JJdGVtLFxuICAgICAgYWRkSXRlbTogdGhpcy5hZGRJdGVtLFxuICAgICAgYXJlQWxsU2VsZWN0ZWQ6IHRoaXMuYXJlQWxsU2VsZWN0ZWQsXG4gICAgICBjbGVhckFsbDogdGhpcy5jbGVhckFsbCxcbiAgICAgIGNyZWF0ZU5ldzogdGhpcy5jcmVhdGVOZXcsXG4gICAgICBkcm9wRG93bjogdGhpcy5kcm9wRG93bixcbiAgICAgIGdldElucHV0U2l6ZTogdGhpcy5nZXRJbnB1dFNpemUsXG4gICAgICBnZXRTZWxlY3RCb3VuZHM6IHRoaXMuZ2V0U2VsZWN0Qm91bmRzLFxuICAgICAgZ2V0U2VsZWN0UmVmOiB0aGlzLmdldFNlbGVjdFJlZixcbiAgICAgIGhhbmRsZUtleURvd246IHRoaXMuaGFuZGxlS2V5RG93bixcbiAgICAgIGlzU2VsZWN0ZWQ6IHRoaXMuaXNTZWxlY3RlZCxcbiAgICAgIHJlbW92ZUl0ZW06IHRoaXMucmVtb3ZlSXRlbSxcbiAgICAgIHNhZmVTdHJpbmc6IHRoaXMuc2FmZVN0cmluZyxcbiAgICAgIHNlYXJjaFJlc3VsdHM6IHRoaXMuc2VhcmNoUmVzdWx0cyxcbiAgICAgIHNlbGVjdEFsbDogdGhpcy5zZWxlY3RBbGwsXG4gICAgICBzZXRTZWFyY2g6IHRoaXMuc2V0U2VhcmNoLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnRCeSxcbiAgICAgIHRvZ2dsZVNlbGVjdEFsbDogdGhpcy50b2dnbGVTZWxlY3RBbGxcbiAgICB9O1xuXG4gICAgdGhpcy5zZWxlY3QgPSBSZWFjdC5jcmVhdGVSZWYoKTtcbiAgICB0aGlzLmRyb3Bkb3duUm9vdCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICB0aGlzLnByb3BzLnBvcnRhbCAmJiB0aGlzLnByb3BzLnBvcnRhbC5hcHBlbmRDaGlsZCh0aGlzLmRyb3Bkb3duUm9vdCk7XG4gICAgaXNvbW9ycGhpY1dpbmRvdygpLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGRlYm91bmNlKHRoaXMudXBkYXRlU2VsZWN0Qm91bmRzKSk7XG4gICAgaXNvbW9ycGhpY1dpbmRvdygpLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGRlYm91bmNlKHRoaXMub25TY3JvbGwpKTtcblxuICAgIHRoaXMuZHJvcERvd24oJ2Nsb3NlJyk7XG5cbiAgICBpZiAodGhpcy5zZWxlY3QpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0Qm91bmRzKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmRlZmF1bHRNZW51SXNPcGVuKSB7XG4gICAgICB0aGlzLmRyb3BEb3duKCdvcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcywgcHJldlN0YXRlKSB7XG4gICAgaWYgKFxuICAgICAgIXRoaXMucHJvcHMuY29tcGFyZVZhbHVlc0Z1bmMocHJldlByb3BzLnZhbHVlcywgdGhpcy5wcm9wcy52YWx1ZXMpICYmXG4gICAgICB0aGlzLnByb3BzLmNvbXBhcmVWYWx1ZXNGdW5jKHByZXZQcm9wcy52YWx1ZXMsIHByZXZTdGF0ZS52YWx1ZXMpXG4gICAgKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWVzOiB0aGlzLnByb3BzLnZhbHVlc1xuICAgICAgICB9LFxuICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9wcy5vbkNoYW5nZSh0aGlzLnN0YXRlLnZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdEJvdW5kcygpO1xuICAgIH1cblxuICAgIGlmIChwcmV2UHJvcHMub3B0aW9ucyAhPT0gdGhpcy5wcm9wcy5vcHRpb25zKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoUmVzdWx0czogdGhpcy5zZWFyY2hSZXN1bHRzKCkgfSk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZTdGF0ZS52YWx1ZXMgIT09IHRoaXMuc3RhdGUudmFsdWVzKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlKHRoaXMuc3RhdGUudmFsdWVzKTtcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0Qm91bmRzKCk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZTdGF0ZS5zZWFyY2ggIT09IHRoaXMuc3RhdGUuc2VhcmNoKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGVjdEJvdW5kcygpO1xuICAgIH1cblxuICAgIGlmIChwcmV2U3RhdGUudmFsdWVzICE9PSB0aGlzLnN0YXRlLnZhbHVlcyAmJiB0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgIHRoaXMuZHJvcERvd24oJ2Nsb3NlJyk7XG4gICAgfVxuXG4gICAgaWYgKHByZXZQcm9wcy5tdWx0aSAhPT0gdGhpcy5wcm9wcy5tdWx0aSkge1xuICAgICAgdGhpcy51cGRhdGVTZWxlY3RCb3VuZHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJldlN0YXRlLmRyb3Bkb3duICYmIHByZXZTdGF0ZS5kcm9wZG93biAhPT0gdGhpcy5zdGF0ZS5kcm9wZG93bikge1xuICAgICAgdGhpcy5vbkRyb3Bkb3duQ2xvc2UoKTtcbiAgICB9XG5cbiAgICBpZiAoIXByZXZTdGF0ZS5kcm9wZG93biAmJiBwcmV2U3RhdGUuZHJvcGRvd24gIT09IHRoaXMuc3RhdGUuZHJvcGRvd24pIHtcbiAgICAgIHRoaXMucHJvcHMub25Ecm9wZG93bk9wZW4oKTtcbiAgICB9XG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICB0aGlzLnByb3BzLnBvcnRhbCAmJiB0aGlzLnByb3BzLnBvcnRhbC5yZW1vdmVDaGlsZCh0aGlzLmRyb3Bkb3duUm9vdCk7XG4gICAgaXNvbW9ycGhpY1dpbmRvdygpLnJlbW92ZUV2ZW50TGlzdGVuZXIoXG4gICAgICAncmVzaXplJyxcbiAgICAgIGRlYm91bmNlKHRoaXMudXBkYXRlU2VsZWN0Qm91bmRzLCB0aGlzLnByb3BzLmRlYm91bmNlRGVsYXkpXG4gICAgKTtcbiAgICBpc29tb3JwaGljV2luZG93KCkucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICdzY3JvbGwnLFxuICAgICAgZGVib3VuY2UodGhpcy5vblNjcm9sbCwgdGhpcy5wcm9wcy5kZWJvdW5jZURlbGF5KVxuICAgICk7XG4gIH1cblxuICBvbkRyb3Bkb3duQ2xvc2UgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGN1cnNvcjogbnVsbCB9KTtcbiAgICB0aGlzLnByb3BzLm9uRHJvcGRvd25DbG9zZSgpO1xuICB9O1xuXG4gIG9uU2Nyb2xsID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25TY3JvbGwpIHtcbiAgICAgIHRoaXMuZHJvcERvd24oJ2Nsb3NlJyk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVTZWxlY3RCb3VuZHMoKTtcbiAgfTtcblxuICB1cGRhdGVTZWxlY3RCb3VuZHMgPSAoKSA9PlxuICAgIHRoaXMuc2VsZWN0LmN1cnJlbnQgJiZcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIHNlbGVjdEJvdW5kczogdGhpcy5zZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIH0pO1xuXG4gIGdldFNlbGVjdEJvdW5kcyA9ICgpID0+IHRoaXMuc3RhdGUuc2VsZWN0Qm91bmRzO1xuXG4gIGRyb3BEb3duID0gKGFjdGlvbiA9ICd0b2dnbGUnLCBldmVudCwgZm9yY2UgPSBmYWxzZSkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IChldmVudCAmJiBldmVudC50YXJnZXQpIHx8IChldmVudCAmJiBldmVudC5zcmNFbGVtZW50KTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMucHJvcHMub25Ecm9wZG93bkNsb3NlUmVxdWVzdCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLnN0YXRlLmRyb3Bkb3duICYmXG4gICAgICBmb3JjZSA9PT0gZmFsc2UgJiZcbiAgICAgIGFjdGlvbiA9PT0gJ2Nsb3NlJ1xuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMub25Ecm9wZG93bkNsb3NlUmVxdWVzdCh7XG4gICAgICAgIHByb3BzOiB0aGlzLnByb3BzLFxuICAgICAgICBtZXRob2RzOiB0aGlzLm1ldGhvZHMsXG4gICAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgICBjbG9zZTogKCkgPT4gdGhpcy5kcm9wRG93bignY2xvc2UnLCBudWxsLCB0cnVlKVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5wcm9wcy5wb3J0YWwgJiZcbiAgICAgICF0aGlzLnByb3BzLmNsb3NlT25TY3JvbGwgJiZcbiAgICAgICF0aGlzLnByb3BzLmNsb3NlT25TZWxlY3QgJiZcbiAgICAgIGV2ZW50ICYmXG4gICAgICB0YXJnZXQgJiZcbiAgICAgIHRhcmdldC5vZmZzZXRQYXJlbnQgJiZcbiAgICAgIHRhcmdldC5vZmZzZXRQYXJlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdyZWFjdC1kcm9wZG93bi1zZWxlY3QtZHJvcGRvd24nKVxuICAgICkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLmtlZXBPcGVuKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRTdGF0ZSh7IGRyb3Bkb3duOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGlmIChhY3Rpb24gPT09ICdjbG9zZScgJiYgdGhpcy5zdGF0ZS5kcm9wZG93bikge1xuICAgICAgdGhpcy5zZWxlY3QuY3VycmVudC5ibHVyKCk7XG5cbiAgICAgIHJldHVybiB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgZHJvcGRvd246IGZhbHNlLFxuICAgICAgICBzZWFyY2g6IHRoaXMucHJvcHMuY2xlYXJPbkJsdXIgPyAnJyA6IHRoaXMuc3RhdGUuc2VhcmNoLFxuICAgICAgICBzZWFyY2hSZXN1bHRzOiB0aGlzLnByb3BzLm9wdGlvbnNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChhY3Rpb24gPT09ICdvcGVuJyAmJiAhdGhpcy5zdGF0ZS5kcm9wZG93bikge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoeyBkcm9wZG93bjogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aW9uID09PSAndG9nZ2xlJykge1xuICAgICAgdGhpcy5zZWxlY3QuY3VycmVudC5mb2N1cygpO1xuICAgICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoeyBkcm9wZG93bjogIXRoaXMuc3RhdGUuZHJvcGRvd24gfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIGdldFNlbGVjdFJlZiA9ICgpID0+IHRoaXMuc2VsZWN0LmN1cnJlbnQ7XG5cbiAgYWRkSXRlbSA9IChpdGVtKSA9PiB7XG4gICAgaWYgKHRoaXMucHJvcHMubXVsdGkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdmFsdWVFeGlzdEluU2VsZWN0ZWQoZ2V0QnlQYXRoKGl0ZW0sIHRoaXMucHJvcHMudmFsdWVGaWVsZCksIHRoaXMuc3RhdGUudmFsdWVzLCB0aGlzLnByb3BzKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbW92ZUl0ZW0obnVsbCwgaXRlbSwgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgdmFsdWVzOiBbLi4udGhpcy5zdGF0ZS52YWx1ZXMsIGl0ZW1dXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgIHZhbHVlczogW2l0ZW1dLFxuICAgICAgICBkcm9wZG93bjogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMuY2xlYXJPblNlbGVjdCAmJlxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlYXJjaDogJycgfSwgKCkgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoUmVzdWx0czogdGhpcy5zZWFyY2hSZXN1bHRzKCkgfSk7XG4gICAgICB9KTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIHJlbW92ZUl0ZW0gPSAoZXZlbnQsIGl0ZW0sIGNsb3NlID0gZmFsc2UpID0+IHtcbiAgICBpZiAoZXZlbnQgJiYgY2xvc2UpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIHRoaXMuZHJvcERvd24oJ2Nsb3NlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICB2YWx1ZXM6IHRoaXMuc3RhdGUudmFsdWVzLmZpbHRlcihcbiAgICAgICAgKHZhbHVlcykgPT5cbiAgICAgICAgICBnZXRCeVBhdGgodmFsdWVzLCB0aGlzLnByb3BzLnZhbHVlRmllbGQpICE9PSBnZXRCeVBhdGgoaXRlbSwgdGhpcy5wcm9wcy52YWx1ZUZpZWxkKVxuICAgICAgKVxuICAgIH0pO1xuICB9O1xuXG4gIHNldFNlYXJjaCA9IChldmVudCkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgY3Vyc29yOiBudWxsXG4gICAgfSk7XG5cbiAgICB0aGlzLnNldFN0YXRlKFxuICAgICAge1xuICAgICAgICBzZWFyY2g6IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNlYXJjaFJlc3VsdHM6IHRoaXMuc2VhcmNoUmVzdWx0cygpIH0pO1xuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgZ2V0SW5wdXRTaXplID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnN0YXRlLnNlYXJjaCkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuc2VhcmNoLmxlbmd0aDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdGF0ZS52YWx1ZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRoaXMucHJvcHMuYWRkUGxhY2Vob2xkZXIubGVuZ3RoO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnByb3BzLnBsYWNlaG9sZGVyLmxlbmd0aDtcbiAgfTtcblxuICB0b2dnbGVTZWxlY3RBbGwgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgdmFsdWVzOiB0aGlzLnN0YXRlLnZhbHVlcy5sZW5ndGggPT09IDAgPyB0aGlzLnNlbGVjdEFsbCgpIDogdGhpcy5jbGVhckFsbCgpXG4gICAgfSk7XG4gIH07XG5cbiAgY2xlYXJBbGwgPSAoKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5vbkNsZWFyQWxsKCk7XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICB2YWx1ZXM6IFtdXG4gICAgfSk7XG4gIH07XG5cbiAgc2VsZWN0QWxsID0gKHZhbHVlc0xpc3QgPSBbXSkgPT4ge1xuICAgIHRoaXMucHJvcHMub25TZWxlY3RBbGwoKTtcbiAgICBjb25zdCB2YWx1ZXMgPVxuICAgICAgdmFsdWVzTGlzdC5sZW5ndGggPiAwID8gdmFsdWVzTGlzdCA6IHRoaXMucHJvcHMub3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gIW9wdGlvbi5kaXNhYmxlZCk7XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgdmFsdWVzIH0pO1xuICB9O1xuXG4gIGlzU2VsZWN0ZWQgPSAob3B0aW9uKSA9PlxuICAgICEhdGhpcy5zdGF0ZS52YWx1ZXMuZmluZChcbiAgICAgICh2YWx1ZSkgPT5cbiAgICAgICAgZ2V0QnlQYXRoKHZhbHVlLCB0aGlzLnByb3BzLnZhbHVlRmllbGQpID09PSBnZXRCeVBhdGgob3B0aW9uLCB0aGlzLnByb3BzLnZhbHVlRmllbGQpXG4gICAgKTtcblxuICBhcmVBbGxTZWxlY3RlZCA9ICgpID0+XG4gICAgdGhpcy5zdGF0ZS52YWx1ZXMubGVuZ3RoID09PSB0aGlzLnByb3BzLm9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+ICFvcHRpb24uZGlzYWJsZWQpLmxlbmd0aDtcblxuICBzYWZlU3RyaW5nID0gKHN0cmluZykgPT4gc3RyaW5nLnJlcGxhY2UoL1suKis/XiR7fSgpfFtcXF1cXFxcXS9nLCAnXFxcXCQmJyk7XG5cbiAgc29ydEJ5ID0gKCkgPT4ge1xuICAgIGNvbnN0IHsgc29ydEJ5LCBvcHRpb25zIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKCFzb3J0QnkpIHtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxuICAgIG9wdGlvbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKGdldFByb3AoYSwgc29ydEJ5KSA8IGdldFByb3AoYiwgc29ydEJ5KSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGdldFByb3AoYSwgc29ydEJ5KSA+IGdldFByb3AoYiwgc29ydEJ5KSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH07XG5cbiAgc2VhcmNoRm4gPSAoeyBzdGF0ZSwgbWV0aG9kcyB9KSA9PiB7XG4gICAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChtZXRob2RzLnNhZmVTdHJpbmcoc3RhdGUuc2VhcmNoKSwgJ2knKTtcblxuICAgIHJldHVybiBtZXRob2RzXG4gICAgICAuc29ydEJ5KClcbiAgICAgIC5maWx0ZXIoKGl0ZW0pID0+XG4gICAgICAgIHJlZ2V4cC50ZXN0KGdldEJ5UGF0aChpdGVtLCB0aGlzLnByb3BzLnNlYXJjaEJ5KSB8fCBnZXRCeVBhdGgoaXRlbSwgdGhpcy5wcm9wcy52YWx1ZUZpZWxkKSlcbiAgICAgICk7XG4gIH07XG5cbiAgc2VhcmNoUmVzdWx0cyA9ICgpID0+IHtcbiAgICBjb25zdCBhcmdzID0geyBzdGF0ZTogdGhpcy5zdGF0ZSwgcHJvcHM6IHRoaXMucHJvcHMsIG1ldGhvZHM6IHRoaXMubWV0aG9kcyB9O1xuXG4gICAgcmV0dXJuIHRoaXMucHJvcHMuc2VhcmNoRm4oYXJncykgfHwgdGhpcy5zZWFyY2hGbihhcmdzKTtcbiAgfTtcblxuICBhY3RpdmVDdXJzb3JJdGVtID0gKGFjdGl2ZUN1cnNvckl0ZW0pID0+XG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBhY3RpdmVDdXJzb3JJdGVtXG4gICAgfSk7XG5cbiAgaGFuZGxlS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IGFyZ3MgPSB7XG4gICAgICBldmVudCxcbiAgICAgIHN0YXRlOiB0aGlzLnN0YXRlLFxuICAgICAgcHJvcHM6IHRoaXMucHJvcHMsXG4gICAgICBtZXRob2RzOiB0aGlzLm1ldGhvZHMsXG4gICAgICBzZXRTdGF0ZTogdGhpcy5zZXRTdGF0ZS5iaW5kKHRoaXMpXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLnByb3BzLmhhbmRsZUtleURvd25GbihhcmdzKSB8fCB0aGlzLmhhbmRsZUtleURvd25GbihhcmdzKTtcbiAgfTtcblxuICBoYW5kbGVLZXlEb3duRm4gPSAoeyBldmVudCwgc3RhdGUsIHByb3BzLCBtZXRob2RzLCBzZXRTdGF0ZSB9KSA9PiB7XG4gICAgY29uc3QgeyBjdXJzb3IsIHNlYXJjaFJlc3VsdHMgfSA9IHN0YXRlO1xuICAgIGNvbnN0IGVzY2FwZSA9IGV2ZW50LmtleSA9PT0gJ0VzY2FwZSc7XG4gICAgY29uc3QgZW50ZXIgPSBldmVudC5rZXkgPT09ICdFbnRlcic7XG4gICAgY29uc3QgYXJyb3dVcCA9IGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnO1xuICAgIGNvbnN0IGFycm93RG93biA9IGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bic7XG4gICAgY29uc3QgYmFja3NwYWNlID0gZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJztcbiAgICBjb25zdCB0YWIgPSBldmVudC5rZXkgPT09ICdUYWInICYmICFldmVudC5zaGlmdEtleTtcbiAgICBjb25zdCBzaGlmdFRhYiA9IGV2ZW50LnNoaWZ0S2V5ICYmIGV2ZW50LmtleSA9PT0gJ1RhYic7XG5cbiAgICBpZiAoYXJyb3dEb3duICYmICFzdGF0ZS5kcm9wZG93bikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZHJvcERvd24oJ29wZW4nKTtcbiAgICAgIHJldHVybiBzZXRTdGF0ZSh7XG4gICAgICAgIGN1cnNvcjogMFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKChhcnJvd0Rvd24gfHwgKHRhYiAmJiBzdGF0ZS5kcm9wZG93bikpICYmIGN1cnNvciA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNldFN0YXRlKHtcbiAgICAgICAgY3Vyc29yOiAwXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYXJyb3dVcCB8fCBhcnJvd0Rvd24gfHwgKHNoaWZ0VGFiICYmIHN0YXRlLmRyb3Bkb3duKSB8fCAodGFiICYmIHN0YXRlLmRyb3Bkb3duKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpZiAoZXNjYXBlKSB7XG4gICAgICB0aGlzLmRyb3BEb3duKCdjbG9zZScpO1xuICAgIH1cblxuICAgIGlmIChlbnRlcikge1xuICAgICAgY29uc3QgY3VycmVudEl0ZW0gPSBzZWFyY2hSZXN1bHRzW2N1cnNvcl07XG4gICAgICBpZiAoY3VycmVudEl0ZW0gJiYgIWN1cnJlbnRJdGVtLmRpc2FibGVkKSB7XG4gICAgICAgIGlmIChwcm9wcy5jcmVhdGUgJiYgdmFsdWVFeGlzdEluU2VsZWN0ZWQoc3RhdGUuc2VhcmNoLCBzdGF0ZS52YWx1ZXMsIHByb3BzKSkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgbWV0aG9kcy5hZGRJdGVtKGN1cnJlbnRJdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoKGFycm93RG93biB8fCAodGFiICYmIHN0YXRlLmRyb3Bkb3duKSkgJiYgc2VhcmNoUmVzdWx0cy5sZW5ndGggPT09IGN1cnNvcikge1xuICAgICAgcmV0dXJuIHNldFN0YXRlKHtcbiAgICAgICAgY3Vyc29yOiAwXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoYXJyb3dEb3duIHx8ICh0YWIgJiYgc3RhdGUuZHJvcGRvd24pKSB7XG4gICAgICBzZXRTdGF0ZSgocHJldlN0YXRlKSA9PiAoe1xuICAgICAgICBjdXJzb3I6IHByZXZTdGF0ZS5jdXJzb3IgKyAxXG4gICAgICB9KSk7XG4gICAgfVxuXG4gICAgaWYgKChhcnJvd1VwIHx8IChzaGlmdFRhYiAmJiBzdGF0ZS5kcm9wZG93bikpICYmIGN1cnNvciA+IDApIHtcbiAgICAgIHNldFN0YXRlKChwcmV2U3RhdGUpID0+ICh7XG4gICAgICAgIGN1cnNvcjogcHJldlN0YXRlLmN1cnNvciAtIDFcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBpZiAoKGFycm93VXAgfHwgKHNoaWZ0VGFiICYmIHN0YXRlLmRyb3Bkb3duKSkgJiYgY3Vyc29yID09PSAwKSB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGN1cnNvcjogc2VhcmNoUmVzdWx0cy5sZW5ndGhcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChiYWNrc3BhY2UgJiYgcHJvcHMuYmFja3NwYWNlRGVsZXRlICYmIHRoaXMuZ2V0SW5wdXRTaXplKCkgPT09IDApIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICB2YWx1ZXM6IHRoaXMuc3RhdGUudmFsdWVzLnNsaWNlKDAsIC0xKVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIHJlbmRlckRyb3Bkb3duID0gKCkgPT5cbiAgICB0aGlzLnByb3BzLnBvcnRhbCA/IChcbiAgICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgPERyb3Bkb3duIHByb3BzPXt0aGlzLnByb3BzfSBzdGF0ZT17dGhpcy5zdGF0ZX0gbWV0aG9kcz17dGhpcy5tZXRob2RzfSAvPixcbiAgICAgICAgdGhpcy5kcm9wZG93blJvb3RcbiAgICAgIClcbiAgICApIDogKFxuICAgICAgPERyb3Bkb3duIHByb3BzPXt0aGlzLnByb3BzfSBzdGF0ZT17dGhpcy5zdGF0ZX0gbWV0aG9kcz17dGhpcy5tZXRob2RzfSAvPlxuICAgICk7XG5cbiAgY3JlYXRlTmV3ID0gKGl0ZW0pID0+IHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHtcbiAgICAgIFt0aGlzLnByb3BzLmxhYmVsRmllbGRdOiBpdGVtLFxuICAgICAgW3RoaXMucHJvcHMudmFsdWVGaWVsZF06IGl0ZW1cbiAgICB9O1xuXG4gICAgdGhpcy5hZGRJdGVtKG5ld1ZhbHVlKTtcbiAgICB0aGlzLnByb3BzLm9uQ3JlYXRlTmV3KG5ld1ZhbHVlKTtcbiAgICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoOiAnJyB9KTtcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxDbGlja091dHNpZGUgb25DbGlja091dHNpZGU9eyhldmVudCkgPT4gdGhpcy5kcm9wRG93bignY2xvc2UnLCBldmVudCl9PlxuICAgICAgICA8UmVhY3REcm9wZG93blNlbGVjdFxuICAgICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVLZXlEb3dufVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJEcm9wZG93biBzZWxlY3RcIlxuICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3RoaXMuc3RhdGUuZHJvcGRvd259XG4gICAgICAgICAgb25DbGljaz17KGV2ZW50KSA9PiB0aGlzLmRyb3BEb3duKCdvcGVuJywgZXZlbnQpfVxuICAgICAgICAgIHRhYkluZGV4PXt0aGlzLnByb3BzLmRpc2FibGVkID8gJy0xJyA6ICcwJ31cbiAgICAgICAgICBkaXJlY3Rpb249e3RoaXMucHJvcHMuZGlyZWN0aW9ufVxuICAgICAgICAgIHN0eWxlPXt0aGlzLnByb3BzLnN0eWxlfVxuICAgICAgICAgIHJlZj17dGhpcy5zZWxlY3R9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RoaXMucHJvcHMuZGlzYWJsZWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtMSUJfTkFNRX0gJHt0aGlzLnByb3BzLmNsYXNzTmFtZX1gfVxuICAgICAgICAgIGNvbG9yPXt0aGlzLnByb3BzLmNvbG9yfVxuICAgICAgICAgIHsuLi50aGlzLnByb3BzLmFkZGl0aW9uYWxQcm9wc30+XG4gICAgICAgICAgPENvbnRlbnQgcHJvcHM9e3RoaXMucHJvcHN9IHN0YXRlPXt0aGlzLnN0YXRlfSBtZXRob2RzPXt0aGlzLm1ldGhvZHN9IC8+XG5cbiAgICAgICAgICB7KHRoaXMucHJvcHMubmFtZSB8fCB0aGlzLnByb3BzLnJlcXVpcmVkKSAmJiAoXG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICBzdHlsZT17eyBvcGFjaXR5OiAwLCB3aWR0aDogMCwgcG9zaXRpb246ICdhYnNvbHV0ZScgfX1cbiAgICAgICAgICAgICAgbmFtZT17dGhpcy5wcm9wcy5uYW1lfVxuICAgICAgICAgICAgICByZXF1aXJlZD17dGhpcy5wcm9wcy5yZXF1aXJlZH1cbiAgICAgICAgICAgICAgcGF0dGVybj17dGhpcy5wcm9wcy5wYXR0ZXJufVxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUudmFsdWVzLm1hcCgodmFsdWUpID0+IHZhbHVlW3RoaXMucHJvcHMubGFiZWxGaWVsZF0pLnRvU3RyaW5nKCkgfHwgW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17dGhpcy5wcm9wcy5kaXNhYmxlZH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHt0aGlzLnByb3BzLmxvYWRpbmcgJiYgPExvYWRpbmcgcHJvcHM9e3RoaXMucHJvcHN9IC8+fVxuXG4gICAgICAgICAge3RoaXMucHJvcHMuY2xlYXJhYmxlICYmIChcbiAgICAgICAgICAgIDxDbGVhciBwcm9wcz17dGhpcy5wcm9wc30gc3RhdGU9e3RoaXMuc3RhdGV9IG1ldGhvZHM9e3RoaXMubWV0aG9kc30gLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge3RoaXMucHJvcHMuc2VwYXJhdG9yICYmIChcbiAgICAgICAgICAgIDxTZXBhcmF0b3IgcHJvcHM9e3RoaXMucHJvcHN9IHN0YXRlPXt0aGlzLnN0YXRlfSBtZXRob2RzPXt0aGlzLm1ldGhvZHN9IC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIHt0aGlzLnByb3BzLmRyb3Bkb3duSGFuZGxlICYmIChcbiAgICAgICAgICAgIDxEcm9wZG93bkhhbmRsZVxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNlbGVjdC5jdXJyZW50LmZvY3VzKCl9XG4gICAgICAgICAgICAgIHByb3BzPXt0aGlzLnByb3BzfVxuICAgICAgICAgICAgICBzdGF0ZT17dGhpcy5zdGF0ZX1cbiAgICAgICAgICAgICAgbWV0aG9kcz17dGhpcy5tZXRob2RzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAge3RoaXMuc3RhdGUuZHJvcGRvd24gJiYgIXRoaXMucHJvcHMuZGlzYWJsZWQgJiYgdGhpcy5yZW5kZXJEcm9wZG93bigpfVxuICAgICAgICA8L1JlYWN0RHJvcGRvd25TZWxlY3Q+XG4gICAgICA8L0NsaWNrT3V0c2lkZT5cbiAgICApO1xuICB9XG59XG5cblNlbGVjdC5kZWZhdWx0UHJvcHMgPSB7XG4gIGFkZFBsYWNlaG9sZGVyOiAnJyxcbiAgYWRkaXRpb25hbFByb3BzOiBudWxsLFxuICBhdXRvRm9jdXM6IGZhbHNlLFxuICBiYWNrc3BhY2VEZWxldGU6IHRydWUsXG4gIGNsZWFyQWxsTGFiZWw6ICdDbGVhciBhbGwnLFxuICBjbGVhck9uQmx1cjogdHJ1ZSxcbiAgY2xlYXJPblNlbGVjdDogdHJ1ZSxcbiAgY2xlYXJhYmxlOiBmYWxzZSxcbiAgY2xvc2VPblNjcm9sbDogZmFsc2UsXG4gIGNsb3NlT25TZWxlY3Q6IGZhbHNlLFxuICBjbG9zZU9uQ2xpY2tJbnB1dDogZmFsc2UsXG4gIGNvbG9yOiAnIzAwNzREOScsXG4gIGNvbXBhcmVWYWx1ZXNGdW5jOiBpc0VxdWFsLFxuICBjcmVhdGU6IGZhbHNlLFxuICBjcmVhdGVOZXdMYWJlbDogJ2FkZCB7c2VhcmNofScsXG4gIGRlYm91bmNlRGVsYXk6IDAsXG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZGlzYWJsZWRMYWJlbDogJ2Rpc2FibGVkJyxcbiAgZHJvcGRvd25HYXA6IDUsXG4gIGRyb3Bkb3duSGFuZGxlOiB0cnVlLFxuICBkcm9wZG93bkhlaWdodDogJzMwMHB4JyxcbiAgZHJvcGRvd25Qb3NpdGlvbjogJ2JvdHRvbScsXG4gIGhhbmRsZUtleURvd25GbjogKCkgPT4gdW5kZWZpbmVkLFxuICBrZWVwT3BlbjogZmFsc2UsXG4gIGtlZXBTZWxlY3RlZEluTGlzdDogdHJ1ZSxcbiAgbGFiZWxGaWVsZDogJ2xhYmVsJyxcbiAgbG9hZGluZzogZmFsc2UsXG4gIG11bHRpOiBmYWxzZSxcbiAgbmFtZTogbnVsbCxcbiAgbm9EYXRhTGFiZWw6ICdObyBkYXRhJyxcbiAgb25DaGFuZ2U6ICgpID0+IHVuZGVmaW5lZCxcbiAgb25DbGVhckFsbDogKCkgPT4gdW5kZWZpbmVkLFxuICBvbkNyZWF0ZU5ldzogKCkgPT4gdW5kZWZpbmVkLFxuICBvbkRyb3Bkb3duQ2xvc2U6ICgpID0+IHVuZGVmaW5lZCxcbiAgb25Ecm9wZG93bkNsb3NlUmVxdWVzdDogdW5kZWZpbmVkLFxuICBvbkRyb3Bkb3duT3BlbjogKCkgPT4gdW5kZWZpbmVkLFxuICBvblNlbGVjdEFsbDogKCkgPT4gdW5kZWZpbmVkLFxuICBvcHRpb25zOiBbXSxcbiAgcGF0dGVybjogdW5kZWZpbmVkLFxuICBwbGFjZWhvbGRlcjogJ1NlbGVjdC4uLicsXG4gIHBvcnRhbDogbnVsbCxcbiAgcmVxdWlyZWQ6IGZhbHNlLFxuICBzZWFyY2hCeTogJ2xhYmVsJyxcbiAgc2VhcmNoRm46ICgpID0+IHVuZGVmaW5lZCxcbiAgc2VhcmNoYWJsZTogdHJ1ZSxcbiAgc2VsZWN0QWxsOiBmYWxzZSxcbiAgc2VsZWN0QWxsTGFiZWw6ICdTZWxlY3QgYWxsJyxcbiAgc2VwYXJhdG9yOiBmYWxzZSxcbiAgc29ydEJ5OiBudWxsLFxuICB2YWx1ZUZpZWxkOiAndmFsdWUnLFxuICB2YWx1ZXM6IFtdLFxuICBkZWZhdWx0TWVudUlzT3BlbjogZmFsc2Vcbn07XG5cbmNvbnN0IFJlYWN0RHJvcGRvd25TZWxlY3QgPSBzdHlsZWQuZGl2YFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHBhZGRpbmc6IDJweCA1cHg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGRpcmVjdGlvbjogJHsoeyBkaXJlY3Rpb24gfSkgPT4gZGlyZWN0aW9ufTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBtaW4taGVpZ2h0OiAzNnB4O1xuXG4gICR7KHsgZGlzYWJsZWQgfSkgPT5cbiAgICBkaXNhYmxlZCA/ICdjdXJzb3I6IG5vdC1hbGxvd2VkO3BvaW50ZXItZXZlbnRzOiBub25lO29wYWNpdHk6IDAuMzsnIDogJ3BvaW50ZXItZXZlbnRzOiBhbGw7J31cbiAgOmhvdmVyLFxuICA6Zm9jdXMtd2l0aGluIHtcbiAgICBib3JkZXItY29sb3I6ICR7KHsgY29sb3IgfSkgPT4gY29sb3J9O1xuICB9XG5cbiAgOmZvY3VzLFxuICA6Zm9jdXMtd2l0aGluIHtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCAkeyh7IGNvbG9yIH0pID0+IGhleFRvUkdCQShjb2xvciwgMC4yKX07XG4gIH1cblxuICAqIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICB9XG5gO1xuXG5leHBvcnQgZGVmYXVsdCBTZWxlY3Q7XG4iXX0= */")),_default=Select;exports.default=_default;