react-dropzone 5.1.0 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.travis.yml +1 -2
- package/dist/es/index.js +5 -0
- package/dist/index.js +2 -2
- package/examples/Styling/Readme.md +7 -6
- package/package.json +1 -1
- package/src/index.js +5 -0
- package/src/index.spec.js +15 -0
package/.travis.yml
CHANGED
|
@@ -6,8 +6,7 @@ node_js:
|
|
|
6
6
|
- '8'
|
|
7
7
|
after_success:
|
|
8
8
|
- 'bash <(curl -s https://codecov.io/bash)'
|
|
9
|
-
-
|
|
10
|
-
- travis-deploy-once "yarn global add semantic-release@13 && semantic-release"
|
|
9
|
+
- npx semantic-release
|
|
11
10
|
branches:
|
|
12
11
|
except:
|
|
13
12
|
- /^v\d+\.\d+\.\d+$/
|
package/dist/es/index.js
CHANGED
|
@@ -261,6 +261,11 @@ var Dropzone = function (_React$Component) {
|
|
|
261
261
|
if (acceptedFiles.length > 0 && onDropAccepted) {
|
|
262
262
|
onDropAccepted.call(_this4, acceptedFiles, evt);
|
|
263
263
|
}
|
|
264
|
+
|
|
265
|
+
// Update `acceptedFiles` and `rejectedFiles` state
|
|
266
|
+
// This will make children render functions receive the appropriate
|
|
267
|
+
// values
|
|
268
|
+
_this4.setState({ acceptedFiles: acceptedFiles, rejectedFiles: rejectedFiles });
|
|
264
269
|
});
|
|
265
270
|
}
|
|
266
271
|
}, {
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):e.Dropzone=t(e.React,e.PropTypes)}(this,function(e,t){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e,t=t&&t.hasOwnProperty("default")?t.default:t;var n,r,o=(function(e){e.exports=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=13)}([function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n=e.exports={version:"2.5.0"};"number"==typeof __e&&(__e=n)},function(e,t,n){e.exports=!n(4)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(32)("wks"),o=n(9),i=n(0).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){var r=n(0),o=n(2),i=n(8),a=n(22),s=n(10),c=function(e,t,n){var u,l,p,f,d=e&c.F,v=e&c.G,h=e&c.S,g=e&c.P,y=e&c.B,m=v?r:h?r[t]||(r[t]={}):(r[t]||{}).prototype,b=v?o:o[t]||(o[t]={}),D=b.prototype||(b.prototype={});for(u in v&&(n=t),n)p=((l=!d&&m&&void 0!==m[u])?m:n)[u],f=y&&l?s(p,r):g&&"function"==typeof p?s(Function.call,p):p,m&&a(m,u,p,e&c.U),b[u]!=p&&i(b,u,f),g&&D[u]!=p&&(D[u]=p)};r.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var r=n(16),o=n(21);e.exports=n(3)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){var r=n(24);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(28),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){t.__esModule=!0,t.default=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(","),r=e.name||"",o=e.type||"",i=o.replace(/\/.*$/,"");return n.some(function(e){var t=e.trim();return"."===t.charAt(0)?r.toLowerCase().endsWith(t.toLowerCase()):t.endsWith("/*")?i===t.replace(/\/.*$/,""):o===t})}return!0},n(14),n(34)},function(e,t,n){n(15),e.exports=n(2).Array.some},function(e,t,n){var r=n(7),o=n(25)(3);r(r.P+r.F*!n(33)([].some,!0),"Array",{some:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(17),o=n(18),i=n(20),a=Object.defineProperty;t.f=n(3)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(1);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){e.exports=!n(3)&&!n(4)(function(){return 7!=Object.defineProperty(n(19)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(1),o=n(0).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(1);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(0),o=n(8),i=n(23),a=n(9)("src"),s=Function.toString,c=(""+s).split("toString");n(2).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var u="function"==typeof n;u&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(u&&(i(n,a)||o(n,a,e[t]?""+e[t]:c.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(10),o=n(26),i=n(27),a=n(12),s=n(29);e.exports=function(e,t){var n=1==e,c=2==e,u=3==e,l=4==e,p=6==e,f=5==e||p,d=t||s;return function(t,s,v){for(var h,g,y=i(t),m=o(y),b=r(s,v,3),D=a(m.length),x=0,S=n?d(t,D):c?d(t,0):void 0;D>x;x++)if((f||x in m)&&(g=b(h=m[x],x,y),e))if(n)S[x]=g;else if(g)switch(e){case 3:return!0;case 5:return h;case 6:return x;case 2:S.push(h)}else if(l)return!1;return p?-1:u||l?l:S}}},function(e,t,n){var r=n(5);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(11);e.exports=function(e){return Object(r(e))}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(30);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(1),o=n(31),i=n(6)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){var r=n(5);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t,n){var r=n(4);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t,n){n(35),e.exports=n(2).String.endsWith},function(e,t,n){var r=n(7),o=n(12),i=n(36),a="".endsWith;r(r.P+r.F*n(38)("endsWith"),"String",{endsWith:function(e){var t=i(this,e,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(t.length),s=void 0===n?r:Math.min(o(n),r),c=String(e);return a?a.call(t,c,s):t.slice(s-c.length,s)===c}})},function(e,t,n){var r=n(37),o=n(11);e.exports=function(e,t,n){if(r(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(e))}},function(e,t,n){var r=n(1),o=n(5),i=n(6)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},function(e,t,n){var r=n(6)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,!"/./"[e](t)}catch(e){}}return!0}}])}(n={exports:{}},n.exports),n.exports),i=(r=o)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,a="undefined"==typeof document||!document||!document.createElement||"multiple"in document.createElement("input");function s(e,t){return"application/x-moz-file"===e.type||i(e,t)}function c(e){e.preventDefault()}var u={borderStyle:"solid",borderColor:"#c66",backgroundColor:"#eee"},l={opacity:.5},p={borderStyle:"solid",borderColor:"#6c6",backgroundColor:"#eee"},f={width:200,height:200,borderWidth:2,borderColor:"#666",borderStyle:"dashed",borderRadius:5},d=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},v=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},g=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},y=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},m=function(t){function n(e,t){d(this,n);var r=y(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,t));return r.renderChildren=function(e,t,n,o){return"function"==typeof e?e(h({},r.state,{isDragActive:t,isDragAccept:n,isDragReject:o})):e},r.composeHandlers=r.composeHandlers.bind(r),r.onClick=r.onClick.bind(r),r.onDocumentDrop=r.onDocumentDrop.bind(r),r.onDragEnter=r.onDragEnter.bind(r),r.onDragLeave=r.onDragLeave.bind(r),r.onDragOver=r.onDragOver.bind(r),r.onDragStart=r.onDragStart.bind(r),r.onDrop=r.onDrop.bind(r),r.onFileDialogCancel=r.onFileDialogCancel.bind(r),r.onInputElementClick=r.onInputElementClick.bind(r),r.setRef=r.setRef.bind(r),r.setRefs=r.setRefs.bind(r),r.isFileDialogActive=!1,r.state={draggedFiles:[],acceptedFiles:[],rejectedFiles:[]},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,e.Component),v(n,[{key:"componentDidMount",value:function(){var e=this.props.preventDropOnDocument;this.dragTargets=[],e&&(document.addEventListener("dragover",c,!1),document.addEventListener("drop",this.onDocumentDrop,!1)),null!=this.fileInputEl&&this.fileInputEl.addEventListener("click",this.onInputElementClick,!1),window.addEventListener("focus",this.onFileDialogCancel,!1)}},{key:"componentWillUnmount",value:function(){this.props.preventDropOnDocument&&(document.removeEventListener("dragover",c),document.removeEventListener("drop",this.onDocumentDrop)),null!=this.fileInputEl&&this.fileInputEl.removeEventListener("click",this.onInputElementClick,!1),window.removeEventListener("focus",this.onFileDialogCancel,!1)}},{key:"composeHandlers",value:function(e){return this.props.disabled?null:e}},{key:"onDocumentDrop",value:function(e){this.node&&this.node.contains(e.target)||(e.preventDefault(),this.dragTargets=[])}},{key:"onDragStart",value:function(e){this.props.onDragStart&&this.props.onDragStart.call(this,e)}},{key:"onDragEnter",value:function(e){var t=this;e.preventDefault(),-1===this.dragTargets.indexOf(e.target)&&this.dragTargets.push(e.target),e.persist(),Promise.resolve(this.props.getDataTransferItems(e)).then(function(e){t.setState({isDragActive:!0,draggedFiles:e})}),this.props.onDragEnter&&this.props.onDragEnter.call(this,e)}},{key:"onDragOver",value:function(e){e.preventDefault(),e.stopPropagation();try{e.dataTransfer.dropEffect=this.isFileDialogActive?"none":"copy"}catch(e){}return this.props.onDragOver&&this.props.onDragOver.call(this,e),!1}},{key:"onDragLeave",value:function(e){var t=this;e.preventDefault(),this.dragTargets=this.dragTargets.filter(function(n){return n!==e.target&&t.node.contains(n)}),this.dragTargets.length>0||(this.setState({isDragActive:!1,draggedFiles:[]}),this.props.onDragLeave&&this.props.onDragLeave.call(this,e))}},{key:"onDrop",value:function(e){var t=this,n=this.props,r=n.onDrop,o=n.onDropAccepted,i=n.onDropRejected,a=n.multiple,c=n.disablePreview,u=n.accept,l=n.getDataTransferItems;e.preventDefault(),e.persist(),this.dragTargets=[],this.isFileDialogActive=!1,this.draggedFiles=null,this.setState({isDragActive:!1,draggedFiles:[]}),Promise.resolve(l(e)).then(function(n){var l=[],p=[];n.forEach(function(e){if(!c)try{e.preview=window.URL.createObjectURL(e)}catch(t){"production"!==process.env.NODE_ENV&&console.error("Failed to generate preview for file",e,t)}s(e,u)&&function(e,t,n){return e.size<=t&&e.size>=n}(e,t.props.maxSize,t.props.minSize)?l.push(e):p.push(e)}),!a&&l.length>1&&p.push.apply(p,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(l.splice(0))),r&&r.call(t,l,p,e),p.length>0&&i&&i.call(t,p,e),l.length>0&&o&&o.call(t,l,e)})}},{key:"onClick",value:function(e){var t=this.props,n=t.onClick;t.disableClick||(e.stopPropagation(),n&&n.call(this,e),!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return function(e){return-1!==e.indexOf("MSIE")||-1!==e.indexOf("Trident/")}(e)||function(e){return-1!==e.indexOf("Edge/")}(e)}()?this.open():setTimeout(this.open.bind(this),0))}},{key:"onInputElementClick",value:function(e){e.stopPropagation(),this.props.inputProps&&this.props.inputProps.onClick&&this.props.inputProps.onClick()}},{key:"onFileDialogCancel",value:function(){var e=this,t=this.props.onFileDialogCancel;this.isFileDialogActive&&setTimeout(function(){null!=e.fileInputEl&&(e.fileInputEl.files.length||(e.isFileDialogActive=!1));"function"==typeof t&&t()},300)}},{key:"setRef",value:function(e){this.node=e}},{key:"setRefs",value:function(e){this.fileInputEl=e}},{key:"open",value:function(){this.isFileDialogActive=!0,this.fileInputEl.value=null,this.fileInputEl.click()}},{key:"render",value:function(){var t=this.props,n=t.accept,r=t.acceptClassName,o=t.activeClassName,i=t.children,c=t.disabled,d=t.disabledClassName,v=t.inputProps,y=t.multiple,m=t.name,b=t.rejectClassName,D=g(t,["accept","acceptClassName","activeClassName","children","disabled","disabledClassName","inputProps","multiple","name","rejectClassName"]),x=D.acceptStyle,S=D.activeStyle,E=D.className,C=void 0===E?"":E,O=D.disabledStyle,w=D.rejectStyle,j=D.style,k=g(D,["acceptStyle","activeStyle","className","disabledStyle","rejectStyle","style"]),P=this.state,_=P.isDragActive,A=P.draggedFiles,F=A.length,T=y||F<=1,I=F>0&&function(e,t){return e.every(function(e){return s(e,t)})}(A,this.props.accept),L=F>0&&(!I||!T),N=!(C||j||S||x||w||O);_&&o&&(C+=" "+o),I&&r&&(C+=" "+r),L&&b&&(C+=" "+b),c&&d&&(C+=" "+d),N&&(j=f,S=p,x=p,w=u,O=l);var R=h({position:"relative"},j);S&&_&&(R=h({},R,S)),x&&I&&(R=h({},R,x)),w&&L&&(R=h({},R,w)),O&&c&&(R=h({},R,O));var M={accept:n,disabled:c,type:"file",style:h({position:"absolute",top:0,right:0,bottom:0,left:0,opacity:1e-5,pointerEvents:"none"},v.style),multiple:a&&y,ref:this.setRefs,onChange:this.onDrop,autoComplete:"off"};m&&m.length&&(M.name=m);var z=g(k,["acceptedFiles","preventDropOnDocument","disablePreview","disableClick","onDropAccepted","onDropRejected","onFileDialogCancel","maxSize","minSize","getDataTransferItems"]);return e.createElement("div",h({className:C,style:R},z,{onClick:this.composeHandlers(this.onClick),onDragStart:this.composeHandlers(this.onDragStart),onDragEnter:this.composeHandlers(this.onDragEnter),onDragOver:this.composeHandlers(this.onDragOver),onDragLeave:this.composeHandlers(this.onDragLeave),onDrop:this.composeHandlers(this.onDrop),ref:this.setRef,"aria-disabled":c}),this.renderChildren(i,_,I,L),e.createElement("input",h({},v,M)))}}]),n}();return m.propTypes={accept:t.oneOfType([t.string,t.arrayOf(t.string)]),children:t.oneOfType([t.node,t.func]),disableClick:t.bool,disabled:t.bool,disablePreview:t.bool,preventDropOnDocument:t.bool,inputProps:t.object,multiple:t.bool,name:t.string,maxSize:t.number,minSize:t.number,className:t.string,activeClassName:t.string,acceptClassName:t.string,rejectClassName:t.string,disabledClassName:t.string,style:t.object,activeStyle:t.object,acceptStyle:t.object,rejectStyle:t.object,disabledStyle:t.object,getDataTransferItems:t.func,onClick:t.func,onDrop:t.func,onDropAccepted:t.func,onDropRejected:t.func,onDragStart:t.func,onDragEnter:t.func,onDragOver:t.func,onDragLeave:t.func,onFileDialogCancel:t.func},m.defaultProps={preventDropOnDocument:!0,disabled:!1,disablePreview:!1,disableClick:!1,inputProps:{},multiple:!0,maxSize:1/0,minSize:0,getDataTransferItems:function(e){var t=[];if(e.dataTransfer){var n=e.dataTransfer;n.files&&n.files.length?t=n.files:n.items&&n.items.length&&(t=n.items)}else e.target&&e.target.files&&(t=e.target.files);return Array.prototype.slice.call(t)}},m});
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9hdHRyLWFjY2VwdC9kaXN0L2luZGV4LmpzIiwiLi4vc3JjL3V0aWxzL2luZGV4LmpzIiwiLi4vc3JjL3V0aWxzL3N0eWxlcy5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe2lmKHJbZV0pcmV0dXJuIHJbZV0uZXhwb3J0czt2YXIgbz1yW2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtlXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXZhciByPXt9O3JldHVybiBuLm09dCxuLmM9cixuLmQ9ZnVuY3Rpb24odCxyLGUpe24ubyh0LHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pfSxuLm49ZnVuY3Rpb24odCl7dmFyIHI9dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIG4uZChyLFwiYVwiLHIpLHJ9LG4ubz1mdW5jdGlvbih0LG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKX0sbi5wPVwiXCIsbihuLnM9MTMpfShbZnVuY3Rpb24odCxuKXt2YXIgcj10LmV4cG9ydHM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XCJudW1iZXJcIj09dHlwZW9mIF9fZyYmKF9fZz1yKX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQ/bnVsbCE9PXQ6XCJmdW5jdGlvblwiPT10eXBlb2YgdH19LGZ1bmN0aW9uKHQsbil7dmFyIHI9dC5leHBvcnRzPXt2ZXJzaW9uOlwiMi41LjBcIn07XCJudW1iZXJcIj09dHlwZW9mIF9fZSYmKF9fZT1yKX0sZnVuY3Rpb24odCxuLHIpe3QuZXhwb3J0cz0hcig0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30udG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByLmNhbGwodCkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMikoXCJ3a3NcIiksbz1yKDkpLGk9cigwKS5TeW1ib2wsdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBpOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGVbdF18fChlW3RdPXUmJmlbdF18fCh1P2k6bykoXCJTeW1ib2wuXCIrdCkpfSkuc3RvcmU9ZX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1yKDIpLGk9cig4KSx1PXIoMjIpLGM9cigxMCksZj1mdW5jdGlvbih0LG4scil7dmFyIGEscyxwLGwsdj10JmYuRix5PXQmZi5HLGg9dCZmLlMsZD10JmYuUCx4PXQmZi5CLGc9eT9lOmg/ZVtuXXx8KGVbbl09e30pOihlW25dfHx7fSkucHJvdG90eXBlLG09eT9vOm9bbl18fChvW25dPXt9KSxiPW0ucHJvdG90eXBlfHwobS5wcm90b3R5cGU9e30pO3kmJihyPW4pO2ZvcihhIGluIHIpcz0hdiYmZyYmdm9pZCAwIT09Z1thXSxwPShzP2c6cilbYV0sbD14JiZzP2MocCxlKTpkJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwP2MoRnVuY3Rpb24uY2FsbCxwKTpwLGcmJnUoZyxhLHAsdCZmLlUpLG1bYV0hPXAmJmkobSxhLGwpLGQmJmJbYV0hPXAmJihiW2FdPXApfTtlLmNvcmU9byxmLkY9MSxmLkc9MixmLlM9NCxmLlA9OCxmLkI9MTYsZi5XPTMyLGYuVT02NCxmLlI9MTI4LHQuZXhwb3J0cz1mfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxNiksbz1yKDIxKTt0LmV4cG9ydHM9cigzKT9mdW5jdGlvbih0LG4scil7cmV0dXJuIGUuZih0LG4sbygxLHIpKX06ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0W25dPXIsdH19LGZ1bmN0aW9uKHQsbil7dmFyIHI9MCxlPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVyblwiU3ltYm9sKFwiLmNvbmNhdCh2b2lkIDA9PT10P1wiXCI6dCxcIilfXCIsKCsrcitlKS50b1N0cmluZygzNikpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7aWYoZSh0KSx2b2lkIDA9PT1uKXJldHVybiB0O3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0LmNhbGwobixyKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiB0LmNhbGwobixyLGUpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHIsZSxvKXtyZXR1cm4gdC5jYWxsKG4scixlLG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShuLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT10KXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIit0KTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP28oZSh0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24odCxuLHIpe1widXNlIHN0cmljdFwiO24uX19lc01vZHVsZT0hMCxuLmRlZmF1bHQ9ZnVuY3Rpb24odCxuKXtpZih0JiZuKXt2YXIgcj1BcnJheS5pc0FycmF5KG4pP246bi5zcGxpdChcIixcIiksZT10Lm5hbWV8fFwiXCIsbz10LnR5cGV8fFwiXCIsaT1vLnJlcGxhY2UoL1xcLy4qJC8sXCJcIik7cmV0dXJuIHIuc29tZShmdW5jdGlvbih0KXt2YXIgbj10LnRyaW0oKTtyZXR1cm5cIi5cIj09PW4uY2hhckF0KDApP2UudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChuLnRvTG93ZXJDYXNlKCkpOm4uZW5kc1dpdGgoXCIvKlwiKT9pPT09bi5yZXBsYWNlKC9cXC8uKiQvLFwiXCIpOm89PT1ufSl9cmV0dXJuITB9LHIoMTQpLHIoMzQpfSxmdW5jdGlvbih0LG4scil7cigxNSksdC5leHBvcnRzPXIoMikuQXJyYXkuc29tZX0sZnVuY3Rpb24odCxuLHIpe1widXNlIHN0cmljdFwiO3ZhciBlPXIoNyksbz1yKDI1KSgzKTtlKGUuUCtlLkYqIXIoMzMpKFtdLnNvbWUsITApLFwiQXJyYXlcIix7c29tZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTcpLG89cigxOCksaT1yKDIwKSx1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtuLmY9cigzKT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxuLHIpe2lmKGUodCksbj1pKG4sITApLGUociksbyl0cnl7cmV0dXJuIHUodCxuLHIpfWNhdGNoKHQpe31pZihcImdldFwiaW4gcnx8XCJzZXRcImluIHIpdGhyb3cgVHlwZUVycm9yKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhXCIpO3JldHVyblwidmFsdWVcImluIHImJih0W25dPXIudmFsdWUpLHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIWUodCkpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGFuIG9iamVjdCFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDMpJiYhcig0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocigxOSkoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMSksbz1yKDApLmRvY3VtZW50LGk9ZShvKSYmZShvLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaT9vLmNyZWF0ZUVsZW1lbnQodCk6e319fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZighZSh0KSlyZXR1cm4gdDt2YXIgcixvO2lmKG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFlKG89ci5jYWxsKHQpKSlyZXR1cm4gbztpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihyPXQudmFsdWVPZikmJiFlKG89ci5jYWxsKHQpKSlyZXR1cm4gbztpZighbiYmXCJmdW5jdGlvblwiPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIWUobz1yLmNhbGwodCkpKXJldHVybiBvO3Rocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOm59fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1yKDgpLGk9cigyMyksdT1yKDkpKFwic3JjXCIpLGM9RnVuY3Rpb24udG9TdHJpbmcsZj0oXCJcIitjKS5zcGxpdChcInRvU3RyaW5nXCIpO3IoMikuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYy5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGMpe3ZhciBhPVwiZnVuY3Rpb25cIj09dHlwZW9mIHI7YSYmKGkocixcIm5hbWVcIil8fG8ocixcIm5hbWVcIixuKSksdFtuXSE9PXImJihhJiYoaShyLHUpfHxvKHIsdSx0W25dP1wiXCIrdFtuXTpmLmpvaW4oU3RyaW5nKG4pKSkpLHQ9PT1lP3Rbbl09cjpjP3Rbbl0/dFtuXT1yOm8odCxuLHIpOihkZWxldGUgdFtuXSxvKHQsbixyKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLFwidG9TdHJpbmdcIixmdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMmJnRoaXNbdV18fGMuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbih0LG4pe3ZhciByPXt9Lmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiByLmNhbGwodCxuKX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGEgZnVuY3Rpb24hXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTApLG89cigyNiksaT1yKDI3KSx1PXIoMTIpLGM9cigyOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9MT09dCxmPTI9PXQsYT0zPT10LHM9ND09dCxwPTY9PXQsbD01PT10fHxwLHY9bnx8YztyZXR1cm4gZnVuY3Rpb24obixjLHkpe2Zvcih2YXIgaCxkLHg9aShuKSxnPW8oeCksbT1lKGMseSwzKSxiPXUoZy5sZW5ndGgpLF89MCx3PXI/dihuLGIpOmY/dihuLDApOnZvaWQgMDtiPl87XysrKWlmKChsfHxfIGluIGcpJiYoaD1nW19dLGQ9bShoLF8seCksdCkpaWYocil3W19dPWQ7ZWxzZSBpZihkKXN3aXRjaCh0KXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBoO2Nhc2UgNjpyZXR1cm4gXztjYXNlIDI6dy5wdXNoKGgpfWVsc2UgaWYocylyZXR1cm4hMTtyZXR1cm4gcD8tMTphfHxzP3M6d319fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1KTt0LmV4cG9ydHM9T2JqZWN0KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuXCJTdHJpbmdcIj09ZSh0KT90LnNwbGl0KFwiXCIpOk9iamVjdCh0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDExKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChlKHQpKX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9TWF0aC5jZWlsLGU9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9lOnIpKHQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMzApO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcoZSh0KSkobil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKSxvPXIoMzEpLGk9cig2KShcInNwZWNpZXNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiBvKHQpJiYobj10LmNvbnN0cnVjdG9yLFwiZnVuY3Rpb25cIiE9dHlwZW9mIG58fG4hPT1BcnJheSYmIW8obi5wcm90b3R5cGUpfHwobj12b2lkIDApLGUobikmJm51bGw9PT0obj1uW2ldKSYmKG49dm9pZCAwKSksdm9pZCAwPT09bj9BcnJheTpufX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNSk7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVyblwiQXJyYXlcIj09ZSh0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLG89ZVtcIl9fY29yZS1qc19zaGFyZWRfX1wiXXx8KGVbXCJfX2NvcmUtanNfc2hhcmVkX19cIl09e30pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gb1t0XXx8KG9bdF09e30pfX0sZnVuY3Rpb24odCxuLHIpe1widXNlIHN0cmljdFwiO3ZhciBlPXIoNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuISF0JiZlKGZ1bmN0aW9uKCl7bj90LmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6dC5jYWxsKG51bGwpfSl9fSxmdW5jdGlvbih0LG4scil7cigzNSksdC5leHBvcnRzPXIoMikuU3RyaW5nLmVuZHNXaXRofSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9cig3KSxvPXIoMTIpLGk9cigzNiksdT1cIlwiLmVuZHNXaXRoO2UoZS5QK2UuRipyKDM4KShcImVuZHNXaXRoXCIpLFwiU3RyaW5nXCIse2VuZHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBuPWkodGhpcyx0LFwiZW5kc1dpdGhcIikscj1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxlPW8obi5sZW5ndGgpLGM9dm9pZCAwPT09cj9lOk1hdGgubWluKG8ociksZSksZj1TdHJpbmcodCk7cmV0dXJuIHU/dS5jYWxsKG4sZixjKTpuLnNsaWNlKGMtZi5sZW5ndGgsYyk9PT1mfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzNyksbz1yKDExKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe2lmKGUobikpdGhyb3cgVHlwZUVycm9yKFwiU3RyaW5nI1wiK3IrXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO3JldHVybiBTdHJpbmcobyh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKSxvPXIoNSksaT1yKDYpKFwibWF0Y2hcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiBlKHQpJiYodm9pZCAwIT09KG49dFtpXSk/ISFuOlwiUmVnRXhwXCI9PW8odCkpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNikoXCJtYXRjaFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49Ly4vO3RyeXtcIi8uL1wiW3RdKG4pfWNhdGNoKHIpe3RyeXtyZXR1cm4gbltlXT0hMSwhXCIvLi9cIlt0XShuKX1jYXRjaCh0KXt9fXJldHVybiEwfX1dKTsiLCJpbXBvcnQgYWNjZXB0cyBmcm9tICdhdHRyLWFjY2VwdCdcblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRNdWx0aXBsZSA9XG4gIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuY3JlYXRlRWxlbWVudFxuICAgID8gJ211bHRpcGxlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gICAgOiB0cnVlXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhVHJhbnNmZXJJdGVtcyhldmVudCkge1xuICBsZXQgZGF0YVRyYW5zZmVySXRlbXNMaXN0ID0gW11cbiAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgIGNvbnN0IGR0ID0gZXZlbnQuZGF0YVRyYW5zZmVyXG5cbiAgICBpZiAoZHQuZmlsZXMgJiYgZHQuZmlsZXMubGVuZ3RoKSB7XG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5maWxlc1xuICAgIH0gZWxzZSBpZiAoZHQuaXRlbXMgJiYgZHQuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAvLyBEdXJpbmcgdGhlIGRyYWcgZXZlbiB0aGUgZGF0YVRyYW5zZmVyLmZpbGVzIGlzIG51bGxcbiAgICAgIC8vIGJ1dCBDaHJvbWUgaW1wbGVtZW50cyBzb21lIGRyYWcgc3RvcmUsIHdoaWNoIGlzIGFjY2VzaWJsZSB2aWEgZGF0YVRyYW5zZmVyLml0ZW1zXG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5pdGVtc1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgZGF0YVRyYW5zZmVySXRlbXNMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzXG4gIH1cblxuICAvLyBDb252ZXJ0IGZyb20gRGF0YVRyYW5zZmVySXRlbXNMaXN0IHRvIHRoZSBuYXRpdmUgQXJyYXlcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRhdGFUcmFuc2Zlckl0ZW1zTGlzdClcbn1cblxuLy8gRmlyZWZveCB2ZXJzaW9ucyBwcmlvciB0byA1MyByZXR1cm4gYSBib2d1cyBNSU1FIHR5cGUgZm9yIGV2ZXJ5IGZpbGUgZHJhZywgc28gZHJhZ292ZXJzIHdpdGhcbi8vIHRoYXQgTUlNRSB0eXBlIHdpbGwgYWx3YXlzIGJlIGFjY2VwdGVkXG5leHBvcnQgZnVuY3Rpb24gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkge1xuICByZXR1cm4gZmlsZS50eXBlID09PSAnYXBwbGljYXRpb24veC1tb3otZmlsZScgfHwgYWNjZXB0cyhmaWxlLCBhY2NlcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlTWF0Y2hTaXplKGZpbGUsIG1heFNpemUsIG1pblNpemUpIHtcbiAgcmV0dXJuIGZpbGUuc2l6ZSA8PSBtYXhTaXplICYmIGZpbGUuc2l6ZSA+PSBtaW5TaXplXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxGaWxlc0FjY2VwdGVkKGZpbGVzLCBhY2NlcHQpIHtcbiAgcmV0dXJuIGZpbGVzLmV2ZXJ5KGZpbGUgPT4gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkpXG59XG5cbi8vIGFsbG93IHRoZSBlbnRpcmUgZG9jdW1lbnQgdG8gYmUgYSBkcmFnIHRhcmdldFxuZXhwb3J0IGZ1bmN0aW9uIG9uRG9jdW1lbnREcmFnT3ZlcihldnQpIHtcbiAgZXZ0LnByZXZlbnREZWZhdWx0KClcbn1cblxuZnVuY3Rpb24gaXNJZSh1c2VyQWdlbnQpIHtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgIT09IC0xIHx8IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBpc0VkZ2UodXNlckFnZW50KSB7XG4gIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZignRWRnZS8nKSAhPT0gLTFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWVPckVkZ2UodXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgcmV0dXJuIGlzSWUodXNlckFnZW50KSB8fCBpc0VkZ2UodXNlckFnZW50KVxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICByZWplY3RlZDoge1xuICAgIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICAgIGJvcmRlckNvbG9yOiAnI2M2NicsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2VlZSdcbiAgfSxcbiAgZGlzYWJsZWQ6IHtcbiAgICBvcGFjaXR5OiAwLjVcbiAgfSxcbiAgYWN0aXZlOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyQ29sb3I6ICcjNmM2JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWVlJ1xuICB9LFxuICBkZWZhdWx0OiB7XG4gICAgd2lkdGg6IDIwMCxcbiAgICBoZWlnaHQ6IDIwMCxcbiAgICBib3JkZXJXaWR0aDogMixcbiAgICBib3JkZXJDb2xvcjogJyM2NjYnLFxuICAgIGJvcmRlclN0eWxlOiAnZGFzaGVkJyxcbiAgICBib3JkZXJSYWRpdXM6IDVcbiAgfVxufVxuIiwiLyogZ2xvYmFsIHByb2Nlc3MgKi9cbi8qIGVzbGludCBwcmVmZXItdGVtcGxhdGU6IDAgKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHtcbiAgc3VwcG9ydE11bHRpcGxlLFxuICBmaWxlQWNjZXB0ZWQsXG4gIGFsbEZpbGVzQWNjZXB0ZWQsXG4gIGZpbGVNYXRjaFNpemUsXG4gIG9uRG9jdW1lbnREcmFnT3ZlcixcbiAgZ2V0RGF0YVRyYW5zZmVySXRlbXMgYXMgZGVmYXVsdEdldERhdGFUcmFuc2Zlckl0ZW0sXG4gIGlzSWVPckVkZ2Vcbn0gZnJvbSAnLi91dGlscydcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi91dGlscy9zdHlsZXMnXG5cbmNsYXNzIERyb3B6b25lIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMsIGNvbnRleHQpIHtcbiAgICBzdXBlcihwcm9wcywgY29udGV4dClcbiAgICB0aGlzLmNvbXBvc2VIYW5kbGVycyA9IHRoaXMuY29tcG9zZUhhbmRsZXJzLmJpbmQodGhpcylcbiAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKVxuICAgIHRoaXMub25Eb2N1bWVudERyb3AgPSB0aGlzLm9uRG9jdW1lbnREcm9wLmJpbmQodGhpcylcbiAgICB0aGlzLm9uRHJhZ0VudGVyID0gdGhpcy5vbkRyYWdFbnRlci5iaW5kKHRoaXMpXG4gICAgdGhpcy5vbkRyYWdMZWF2ZSA9IHRoaXMub25EcmFnTGVhdmUuYmluZCh0aGlzKVxuICAgIHRoaXMub25EcmFnT3ZlciA9IHRoaXMub25EcmFnT3Zlci5iaW5kKHRoaXMpXG4gICAgdGhpcy5vbkRyYWdTdGFydCA9IHRoaXMub25EcmFnU3RhcnQuYmluZCh0aGlzKVxuICAgIHRoaXMub25Ecm9wID0gdGhpcy5vbkRyb3AuYmluZCh0aGlzKVxuICAgIHRoaXMub25GaWxlRGlhbG9nQ2FuY2VsID0gdGhpcy5vbkZpbGVEaWFsb2dDYW5jZWwuYmluZCh0aGlzKVxuICAgIHRoaXMub25JbnB1dEVsZW1lbnRDbGljayA9IHRoaXMub25JbnB1dEVsZW1lbnRDbGljay5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLnNldFJlZiA9IHRoaXMuc2V0UmVmLmJpbmQodGhpcylcbiAgICB0aGlzLnNldFJlZnMgPSB0aGlzLnNldFJlZnMuYmluZCh0aGlzKVxuXG4gICAgdGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUgPSBmYWxzZVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRyYWdnZWRGaWxlczogW10sXG4gICAgICBhY2NlcHRlZEZpbGVzOiBbXSxcbiAgICAgIHJlamVjdGVkRmlsZXM6IFtdXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgeyBwcmV2ZW50RHJvcE9uRG9jdW1lbnQgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLmRyYWdUYXJnZXRzID0gW11cblxuICAgIGlmIChwcmV2ZW50RHJvcE9uRG9jdW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgb25Eb2N1bWVudERyYWdPdmVyLCBmYWxzZSlcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLm9uRG9jdW1lbnREcm9wLCBmYWxzZSlcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0RWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5maWxlSW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25JbnB1dEVsZW1lbnRDbGljaywgZmFsc2UpXG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMub25GaWxlRGlhbG9nQ2FuY2VsLCBmYWxzZSlcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGNvbnN0IHsgcHJldmVudERyb3BPbkRvY3VtZW50IH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKHByZXZlbnREcm9wT25Eb2N1bWVudCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRvY3VtZW50RHJhZ092ZXIpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5vbkRvY3VtZW50RHJvcClcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0RWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5maWxlSW5wdXRFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25JbnB1dEVsZW1lbnRDbGljaywgZmFsc2UpXG4gICAgfVxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMub25GaWxlRGlhbG9nQ2FuY2VsLCBmYWxzZSlcbiAgfVxuXG4gIGNvbXBvc2VIYW5kbGVycyhoYW5kbGVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXJcbiAgfVxuXG4gIG9uRG9jdW1lbnREcm9wKGV2dCkge1xuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmNvbnRhaW5zKGV2dC50YXJnZXQpKSB7XG4gICAgICAvLyBpZiB3ZSBpbnRlcmNlcHRlZCBhbiBldmVudCBmb3Igb3VyIGluc3RhbmNlLCBsZXQgaXQgcHJvcGFnYXRlIGRvd24gdG8gdGhlIGluc3RhbmNlJ3Mgb25Ecm9wIGhhbmRsZXJcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMuZHJhZ1RhcmdldHMgPSBbXVxuICB9XG5cbiAgb25EcmFnU3RhcnQoZXZ0KSB7XG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnU3RhcnQpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnU3RhcnQuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuICB9XG5cbiAgb25EcmFnRW50ZXIoZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KClcblxuICAgIC8vIENvdW50IHRoZSBkcm9wem9uZSBhbmQgYW55IGNoaWxkcmVuIHRoYXQgYXJlIGVudGVyZWQuXG4gICAgaWYgKHRoaXMuZHJhZ1RhcmdldHMuaW5kZXhPZihldnQudGFyZ2V0KSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuZHJhZ1RhcmdldHMucHVzaChldnQudGFyZ2V0KVxuICAgIH1cblxuICAgIGV2dC5wZXJzaXN0KClcblxuICAgIFByb21pc2UucmVzb2x2ZSh0aGlzLnByb3BzLmdldERhdGFUcmFuc2Zlckl0ZW1zKGV2dCkpLnRoZW4oZHJhZ2dlZEZpbGVzID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0RyYWdBY3RpdmU6IHRydWUsIC8vIERvIG5vdCByZWx5IG9uIGZpbGVzIGZvciB0aGUgZHJhZyBzdGF0ZS4gSXQgZG9lc24ndCB3b3JrIGluIFNhZmFyaS5cbiAgICAgICAgZHJhZ2dlZEZpbGVzXG4gICAgICB9KVxuICAgIH0pXG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnRW50ZXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnRW50ZXIuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuICB9XG5cbiAgb25EcmFnT3ZlcihldnQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHRyeSB7XG4gICAgICAvLyBUaGUgZmlsZSBkaWFsb2cgb24gQ2hyb21lIGFsbG93cyB1c2VycyB0byBkcmFnIGZpbGVzIGZyb20gdGhlIGRpYWxvZyBvbnRvXG4gICAgICAvLyB0aGUgZHJvcHpvbmUsIGNhdXNpbmcgdGhlIGJyb3dzZXIgdGhlIGNyYXNoIHdoZW4gdGhlIGZpbGUgZGlhbG9nIGlzIGNsb3NlZC5cbiAgICAgIC8vIEEgZHJvcCBlZmZlY3Qgb2YgJ25vbmUnIHByZXZlbnRzIHRoZSBmaWxlIGZyb20gYmVpbmcgZHJvcHBlZFxuICAgICAgZXZ0LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gdGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUgPyAnbm9uZScgOiAnY29weScgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ092ZXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnT3Zlci5jYWxsKHRoaXMsIGV2dClcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBvbkRyYWdMZWF2ZShldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgLy8gT25seSBkZWFjdGl2YXRlIG9uY2UgdGhlIGRyb3B6b25lIGFuZCBhbGwgY2hpbGRyZW4gaGF2ZSBiZWVuIGxlZnQuXG4gICAgdGhpcy5kcmFnVGFyZ2V0cyA9IHRoaXMuZHJhZ1RhcmdldHMuZmlsdGVyKGVsID0+IGVsICE9PSBldnQudGFyZ2V0ICYmIHRoaXMubm9kZS5jb250YWlucyhlbCkpXG4gICAgaWYgKHRoaXMuZHJhZ1RhcmdldHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgZHJhZ2dpbmcgZmlsZXMgc3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzRHJhZ0FjdGl2ZTogZmFsc2UsXG4gICAgICBkcmFnZ2VkRmlsZXM6IFtdXG4gICAgfSlcblxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ0xlYXZlKSB7XG4gICAgICB0aGlzLnByb3BzLm9uRHJhZ0xlYXZlLmNhbGwodGhpcywgZXZ0KVxuICAgIH1cbiAgfVxuXG4gIG9uRHJvcChldnQpIHtcbiAgICBjb25zdCB7XG4gICAgICBvbkRyb3AsXG4gICAgICBvbkRyb3BBY2NlcHRlZCxcbiAgICAgIG9uRHJvcFJlamVjdGVkLFxuICAgICAgbXVsdGlwbGUsXG4gICAgICBkaXNhYmxlUHJldmlldyxcbiAgICAgIGFjY2VwdCxcbiAgICAgIGdldERhdGFUcmFuc2Zlckl0ZW1zXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIC8vIFN0b3AgZGVmYXVsdCBicm93c2VyIGJlaGF2aW9yXG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KClcblxuICAgIC8vIFBlcnNpc3QgZXZlbnQgZm9yIGxhdGVyIHVzYWdlXG4gICAgZXZ0LnBlcnNpc3QoKVxuXG4gICAgLy8gUmVzZXQgdGhlIGNvdW50ZXIgYWxvbmcgd2l0aCB0aGUgZHJhZyBvbiBhIGRyb3AuXG4gICAgdGhpcy5kcmFnVGFyZ2V0cyA9IFtdXG4gICAgdGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUgPSBmYWxzZVxuXG4gICAgLy8gQ2xlYXIgZmlsZXMgdmFsdWVcbiAgICB0aGlzLmRyYWdnZWRGaWxlcyA9IG51bGxcblxuICAgIC8vIFJlc2V0IGRyYWcgc3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzRHJhZ0FjdGl2ZTogZmFsc2UsXG4gICAgICBkcmFnZ2VkRmlsZXM6IFtdXG4gICAgfSlcblxuICAgIFByb21pc2UucmVzb2x2ZShnZXREYXRhVHJhbnNmZXJJdGVtcyhldnQpKS50aGVuKGZpbGVMaXN0ID0+IHtcbiAgICAgIGNvbnN0IGFjY2VwdGVkRmlsZXMgPSBbXVxuICAgICAgY29uc3QgcmVqZWN0ZWRGaWxlcyA9IFtdXG5cbiAgICAgIGZpbGVMaXN0LmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgIGlmICghZGlzYWJsZVByZXZpZXcpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmlsZS5wcmV2aWV3ID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIHByZXZpZXcgZm9yIGZpbGUnLCBmaWxlLCBlcnIpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmaWxlQWNjZXB0ZWQoZmlsZSwgYWNjZXB0KSAmJlxuICAgICAgICAgIGZpbGVNYXRjaFNpemUoZmlsZSwgdGhpcy5wcm9wcy5tYXhTaXplLCB0aGlzLnByb3BzLm1pblNpemUpXG4gICAgICAgICkge1xuICAgICAgICAgIGFjY2VwdGVkRmlsZXMucHVzaChmaWxlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdGVkRmlsZXMucHVzaChmaWxlKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBpZiAoIW11bHRpcGxlICYmIGFjY2VwdGVkRmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBpZiBub3QgaW4gbXVsdGkgbW9kZSBhZGQgYW55IGV4dHJhIGFjY2VwdGVkIGZpbGVzIHRvIHJlamVjdGVkLlxuICAgICAgICAvLyBUaGlzIHdpbGwgYWxsb3cgZW5kIHVzZXJzIHRvIGVhc2lseSBpZ25vcmUgYSBtdWx0aSBmaWxlIGRyb3AgaW4gXCJzaW5nbGVcIiBtb2RlLlxuICAgICAgICByZWplY3RlZEZpbGVzLnB1c2goLi4uYWNjZXB0ZWRGaWxlcy5zcGxpY2UoMCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChvbkRyb3ApIHtcbiAgICAgICAgb25Ecm9wLmNhbGwodGhpcywgYWNjZXB0ZWRGaWxlcywgcmVqZWN0ZWRGaWxlcywgZXZ0KVxuICAgICAgfVxuXG4gICAgICBpZiAocmVqZWN0ZWRGaWxlcy5sZW5ndGggPiAwICYmIG9uRHJvcFJlamVjdGVkKSB7XG4gICAgICAgIG9uRHJvcFJlamVjdGVkLmNhbGwodGhpcywgcmVqZWN0ZWRGaWxlcywgZXZ0KVxuICAgICAgfVxuXG4gICAgICBpZiAoYWNjZXB0ZWRGaWxlcy5sZW5ndGggPiAwICYmIG9uRHJvcEFjY2VwdGVkKSB7XG4gICAgICAgIG9uRHJvcEFjY2VwdGVkLmNhbGwodGhpcywgYWNjZXB0ZWRGaWxlcywgZXZ0KVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBvbkNsaWNrKGV2dCkge1xuICAgIGNvbnN0IHsgb25DbGljaywgZGlzYWJsZUNsaWNrIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKCFkaXNhYmxlQ2xpY2spIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKVxuXG4gICAgICBpZiAob25DbGljaykge1xuICAgICAgICBvbkNsaWNrLmNhbGwodGhpcywgZXZ0KVxuICAgICAgfVxuXG4gICAgICAvLyBpbiBJRTExL0VkZ2UgdGhlIGZpbGUtYnJvd3NlciBkaWFsb2cgaXMgYmxvY2tpbmcsIGVuc3VyZSB0aGlzIGlzIGJlaGluZCBzZXRUaW1lb3V0XG4gICAgICAvLyB0aGlzIGlzIHNvIHJlYWN0IGNhbiBoYW5kbGUgc3RhdGUgY2hhbmdlcyBpbiB0aGUgb25DbGljayBwcm9wIGFib3ZlIGFib3ZlXG4gICAgICAvLyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1kcm9wem9uZS9yZWFjdC1kcm9wem9uZS9pc3N1ZXMvNDUwXG4gICAgICBpZiAoaXNJZU9yRWRnZSgpKSB7XG4gICAgICAgIHNldFRpbWVvdXQodGhpcy5vcGVuLmJpbmQodGhpcyksIDApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW4oKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRFbGVtZW50Q2xpY2soZXZ0KSB7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHRoaXMucHJvcHMuaW5wdXRQcm9wcyAmJiB0aGlzLnByb3BzLmlucHV0UHJvcHMub25DbGljaykge1xuICAgICAgdGhpcy5wcm9wcy5pbnB1dFByb3BzLm9uQ2xpY2soKVxuICAgIH1cbiAgfVxuXG4gIG9uRmlsZURpYWxvZ0NhbmNlbCgpIHtcbiAgICAvLyB0aW1lb3V0IHdpbGwgbm90IHJlY29nbml6ZSBjb250ZXh0IG9mIHRoaXMgbWV0aG9kXG4gICAgY29uc3QgeyBvbkZpbGVEaWFsb2dDYW5jZWwgfSA9IHRoaXMucHJvcHNcbiAgICAvLyBleGVjdXRlIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIEZpbGVEaWFsb2cgaXMgb3BlbmVkIGluIHRoZSBicm93c2VyXG4gICAgaWYgKHRoaXMuaXNGaWxlRGlhbG9nQWN0aXZlKSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZmlsZUlucHV0RWwgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIFJldHVybnMgYW4gb2JqZWN0IGFzIEZpbGVMaXN0XG4gICAgICAgICAgY29uc3QgeyBmaWxlcyB9ID0gdGhpcy5maWxlSW5wdXRFbFxuXG4gICAgICAgICAgaWYgKCFmaWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuaXNGaWxlRGlhbG9nQWN0aXZlID0gZmFsc2VcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG9uRmlsZURpYWxvZ0NhbmNlbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIG9uRmlsZURpYWxvZ0NhbmNlbCgpXG4gICAgICAgIH1cbiAgICAgIH0sIDMwMClcbiAgICB9XG4gIH1cblxuICBzZXRSZWYocmVmKSB7XG4gICAgdGhpcy5ub2RlID0gcmVmXG4gIH1cblxuICBzZXRSZWZzKHJlZikge1xuICAgIHRoaXMuZmlsZUlucHV0RWwgPSByZWZcbiAgfVxuICAvKipcbiAgICogT3BlbiBzeXN0ZW0gZmlsZSB1cGxvYWQgZGlhbG9nLlxuICAgKlxuICAgKiBAcHVibGljXG4gICAqL1xuICBvcGVuKCkge1xuICAgIHRoaXMuaXNGaWxlRGlhbG9nQWN0aXZlID0gdHJ1ZVxuICAgIHRoaXMuZmlsZUlucHV0RWwudmFsdWUgPSBudWxsXG4gICAgdGhpcy5maWxlSW5wdXRFbC5jbGljaygpXG4gIH1cblxuICByZW5kZXJDaGlsZHJlbiA9IChjaGlsZHJlbiwgaXNEcmFnQWN0aXZlLCBpc0RyYWdBY2NlcHQsIGlzRHJhZ1JlamVjdCkgPT4ge1xuICAgIGlmICh0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbih7XG4gICAgICAgIC4uLnRoaXMuc3RhdGUsXG4gICAgICAgIGlzRHJhZ0FjdGl2ZSxcbiAgICAgICAgaXNEcmFnQWNjZXB0LFxuICAgICAgICBpc0RyYWdSZWplY3RcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiBjaGlsZHJlblxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFjY2VwdCxcbiAgICAgIGFjY2VwdENsYXNzTmFtZSxcbiAgICAgIGFjdGl2ZUNsYXNzTmFtZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZGlzYWJsZWQsXG4gICAgICBkaXNhYmxlZENsYXNzTmFtZSxcbiAgICAgIGlucHV0UHJvcHMsXG4gICAgICBtdWx0aXBsZSxcbiAgICAgIG5hbWUsXG4gICAgICByZWplY3RDbGFzc05hbWUsXG4gICAgICAuLi5yZXN0XG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIGxldCB7XG4gICAgICBhY2NlcHRTdHlsZSxcbiAgICAgIGFjdGl2ZVN0eWxlLFxuICAgICAgY2xhc3NOYW1lID0gJycsXG4gICAgICBkaXNhYmxlZFN0eWxlLFxuICAgICAgcmVqZWN0U3R5bGUsXG4gICAgICBzdHlsZSxcbiAgICAgIC4uLnByb3BzIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWNvbnN0XG4gICAgfSA9IHJlc3RcblxuICAgIGNvbnN0IHsgaXNEcmFnQWN0aXZlLCBkcmFnZ2VkRmlsZXMgfSA9IHRoaXMuc3RhdGVcbiAgICBjb25zdCBmaWxlc0NvdW50ID0gZHJhZ2dlZEZpbGVzLmxlbmd0aFxuICAgIGNvbnN0IGlzTXVsdGlwbGVBbGxvd2VkID0gbXVsdGlwbGUgfHwgZmlsZXNDb3VudCA8PSAxXG4gICAgY29uc3QgaXNEcmFnQWNjZXB0ID0gZmlsZXNDb3VudCA+IDAgJiYgYWxsRmlsZXNBY2NlcHRlZChkcmFnZ2VkRmlsZXMsIHRoaXMucHJvcHMuYWNjZXB0KVxuICAgIGNvbnN0IGlzRHJhZ1JlamVjdCA9IGZpbGVzQ291bnQgPiAwICYmICghaXNEcmFnQWNjZXB0IHx8ICFpc011bHRpcGxlQWxsb3dlZClcbiAgICBjb25zdCBub1N0eWxlcyA9XG4gICAgICAhY2xhc3NOYW1lICYmICFzdHlsZSAmJiAhYWN0aXZlU3R5bGUgJiYgIWFjY2VwdFN0eWxlICYmICFyZWplY3RTdHlsZSAmJiAhZGlzYWJsZWRTdHlsZVxuXG4gICAgaWYgKGlzRHJhZ0FjdGl2ZSAmJiBhY3RpdmVDbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZSArPSAnICcgKyBhY3RpdmVDbGFzc05hbWVcbiAgICB9XG4gICAgaWYgKGlzRHJhZ0FjY2VwdCAmJiBhY2NlcHRDbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZSArPSAnICcgKyBhY2NlcHRDbGFzc05hbWVcbiAgICB9XG4gICAgaWYgKGlzRHJhZ1JlamVjdCAmJiByZWplY3RDbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZSArPSAnICcgKyByZWplY3RDbGFzc05hbWVcbiAgICB9XG4gICAgaWYgKGRpc2FibGVkICYmIGRpc2FibGVkQ2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWUgKz0gJyAnICsgZGlzYWJsZWRDbGFzc05hbWVcbiAgICB9XG5cbiAgICBpZiAobm9TdHlsZXMpIHtcbiAgICAgIHN0eWxlID0gc3R5bGVzLmRlZmF1bHRcbiAgICAgIGFjdGl2ZVN0eWxlID0gc3R5bGVzLmFjdGl2ZVxuICAgICAgYWNjZXB0U3R5bGUgPSBzdHlsZXMuYWN0aXZlXG4gICAgICByZWplY3RTdHlsZSA9IHN0eWxlcy5yZWplY3RlZFxuICAgICAgZGlzYWJsZWRTdHlsZSA9IHN0eWxlcy5kaXNhYmxlZFxuICAgIH1cblxuICAgIGxldCBhcHBsaWVkU3R5bGUgPSB7IHBvc2l0aW9uOiAncmVsYXRpdmUnLCAuLi5zdHlsZSB9XG4gICAgaWYgKGFjdGl2ZVN0eWxlICYmIGlzRHJhZ0FjdGl2ZSkge1xuICAgICAgYXBwbGllZFN0eWxlID0ge1xuICAgICAgICAuLi5hcHBsaWVkU3R5bGUsXG4gICAgICAgIC4uLmFjdGl2ZVN0eWxlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhY2NlcHRTdHlsZSAmJiBpc0RyYWdBY2NlcHQpIHtcbiAgICAgIGFwcGxpZWRTdHlsZSA9IHtcbiAgICAgICAgLi4uYXBwbGllZFN0eWxlLFxuICAgICAgICAuLi5hY2NlcHRTdHlsZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVqZWN0U3R5bGUgJiYgaXNEcmFnUmVqZWN0KSB7XG4gICAgICBhcHBsaWVkU3R5bGUgPSB7XG4gICAgICAgIC4uLmFwcGxpZWRTdHlsZSxcbiAgICAgICAgLi4ucmVqZWN0U3R5bGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRpc2FibGVkU3R5bGUgJiYgZGlzYWJsZWQpIHtcbiAgICAgIGFwcGxpZWRTdHlsZSA9IHtcbiAgICAgICAgLi4uYXBwbGllZFN0eWxlLFxuICAgICAgICAuLi5kaXNhYmxlZFN0eWxlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRBdHRyaWJ1dGVzID0ge1xuICAgICAgYWNjZXB0LFxuICAgICAgZGlzYWJsZWQsXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBzdHlsZToge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiAwLFxuICAgICAgICByaWdodDogMCxcbiAgICAgICAgYm90dG9tOiAwLFxuICAgICAgICBsZWZ0OiAwLFxuICAgICAgICBvcGFjaXR5OiAwLjAwMDAxLFxuICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgIC4uLmlucHV0UHJvcHMuc3R5bGVcbiAgICAgIH0sXG4gICAgICBtdWx0aXBsZTogc3VwcG9ydE11bHRpcGxlICYmIG11bHRpcGxlLFxuICAgICAgcmVmOiB0aGlzLnNldFJlZnMsXG4gICAgICBvbkNoYW5nZTogdGhpcy5vbkRyb3AsXG4gICAgICBhdXRvQ29tcGxldGU6ICdvZmYnXG4gICAgfVxuXG4gICAgaWYgKG5hbWUgJiYgbmFtZS5sZW5ndGgpIHtcbiAgICAgIGlucHV0QXR0cmlidXRlcy5uYW1lID0gbmFtZVxuICAgIH1cblxuICAgIC8vIERlc3RydWN0dXJlIGN1c3RvbSBwcm9wcyBhd2F5IGZyb20gcHJvcHMgdXNlZCBmb3IgdGhlIGRpdiBlbGVtZW50XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbiAgICBjb25zdCB7XG4gICAgICBhY2NlcHRlZEZpbGVzLFxuICAgICAgcHJldmVudERyb3BPbkRvY3VtZW50LFxuICAgICAgZGlzYWJsZVByZXZpZXcsXG4gICAgICBkaXNhYmxlQ2xpY2ssXG4gICAgICBvbkRyb3BBY2NlcHRlZCxcbiAgICAgIG9uRHJvcFJlamVjdGVkLFxuICAgICAgb25GaWxlRGlhbG9nQ2FuY2VsLFxuICAgICAgbWF4U2l6ZSxcbiAgICAgIG1pblNpemUsXG4gICAgICBnZXREYXRhVHJhbnNmZXJJdGVtcyxcbiAgICAgIC4uLmRpdlByb3BzXG4gICAgfSA9IHByb3BzXG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4gICAgLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICBzdHlsZT17YXBwbGllZFN0eWxlfVxuICAgICAgICB7XG4gICAgICAgICAgLi4uZGl2UHJvcHMgLyogZXhwYW5kIHVzZXIgcHJvdmlkZWQgcHJvcHMgZmlyc3Qgc28gZXZlbnQgaGFuZGxlcnMgYXJlIG5ldmVyIG92ZXJyaWRkZW4gKi9cbiAgICAgICAgfVxuICAgICAgICBvbkNsaWNrPXt0aGlzLmNvbXBvc2VIYW5kbGVycyh0aGlzLm9uQ2xpY2spfVxuICAgICAgICBvbkRyYWdTdGFydD17dGhpcy5jb21wb3NlSGFuZGxlcnModGhpcy5vbkRyYWdTdGFydCl9XG4gICAgICAgIG9uRHJhZ0VudGVyPXt0aGlzLmNvbXBvc2VIYW5kbGVycyh0aGlzLm9uRHJhZ0VudGVyKX1cbiAgICAgICAgb25EcmFnT3Zlcj17dGhpcy5jb21wb3NlSGFuZGxlcnModGhpcy5vbkRyYWdPdmVyKX1cbiAgICAgICAgb25EcmFnTGVhdmU9e3RoaXMuY29tcG9zZUhhbmRsZXJzKHRoaXMub25EcmFnTGVhdmUpfVxuICAgICAgICBvbkRyb3A9e3RoaXMuY29tcG9zZUhhbmRsZXJzKHRoaXMub25Ecm9wKX1cbiAgICAgICAgcmVmPXt0aGlzLnNldFJlZn1cbiAgICAgICAgYXJpYS1kaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICA+XG4gICAgICAgIHt0aGlzLnJlbmRlckNoaWxkcmVuKGNoaWxkcmVuLCBpc0RyYWdBY3RpdmUsIGlzRHJhZ0FjY2VwdCwgaXNEcmFnUmVqZWN0KX1cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uaW5wdXRQcm9wcyAvKiBleHBhbmQgdXNlciBwcm92aWRlZCBpbnB1dFByb3BzIGZpcnN0IHNvIGlucHV0QXR0cmlidXRlcyBvdmVycmlkZSB0aGVtICovXG4gICAgICAgICAgfVxuICAgICAgICAgIHsuLi5pbnB1dEF0dHJpYnV0ZXN9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRHJvcHpvbmVcblxuRHJvcHpvbmUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQWxsb3cgc3BlY2lmaWMgdHlwZXMgb2YgZmlsZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2tvbmV0L2F0dHItYWNjZXB0IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKiBLZWVwIGluIG1pbmQgdGhhdCBtaW1lIHR5cGUgZGV0ZXJtaW5hdGlvbiBpcyBub3QgcmVsaWFibGUgYWNyb3NzIHBsYXRmb3Jtcy4gQ1NWIGZpbGVzLFxuICAgKiBmb3IgZXhhbXBsZSwgYXJlIHJlcG9ydGVkIGFzIHRleHQvcGxhaW4gdW5kZXIgbWFjT1MgYnV0IGFzIGFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCB1bmRlclxuICAgKiBXaW5kb3dzLiBJbiBzb21lIGNhc2VzIHRoZXJlIG1pZ2h0IG5vdCBiZSBhIG1pbWUgdHlwZSBzZXQgYXQgYWxsLlxuICAgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1kcm9wem9uZS9yZWFjdC1kcm9wem9uZS9pc3N1ZXMvMjc2XG4gICAqL1xuICBhY2NlcHQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpXSksXG5cbiAgLyoqXG4gICAqIENvbnRlbnRzIG9mIHRoZSBkcm9wem9uZVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ub2RlLCBQcm9wVHlwZXMuZnVuY10pLFxuXG4gIC8qKlxuICAgKiBEaXNhbGxvdyBjbGlja2luZyBvbiB0aGUgZHJvcHpvbmUgY29udGFpbmVyIHRvIG9wZW4gZmlsZSBkaWFsb2dcbiAgICovXG4gIGRpc2FibGVDbGljazogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIEVuYWJsZS9kaXNhYmxlIHRoZSBkcm9wem9uZSBlbnRpcmVseVxuICAgKi9cbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBFbmFibGUvZGlzYWJsZSBwcmV2aWV3IGdlbmVyYXRpb25cbiAgICovXG4gIGRpc2FibGVQcmV2aWV3OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogSWYgZmFsc2UsIGFsbG93IGRyb3BwZWQgaXRlbXMgdG8gdGFrZSBvdmVyIHRoZSBjdXJyZW50IGJyb3dzZXIgd2luZG93XG4gICAqL1xuICBwcmV2ZW50RHJvcE9uRG9jdW1lbnQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBQYXNzIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0byB0aGUgYDxpbnB1dCB0eXBlPVwiZmlsZVwiLz5gIHRhZ1xuICAgKi9cbiAgaW5wdXRQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcblxuICAvKipcbiAgICogQWxsb3cgZHJvcHBpbmcgbXVsdGlwbGUgZmlsZXNcbiAgICovXG4gIG11bHRpcGxlOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogYG5hbWVgIGF0dHJpYnV0ZSBmb3IgdGhlIGlucHV0IHRhZ1xuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogTWF4aW11bSBmaWxlIHNpemUgKGluIGJ5dGVzKVxuICAgKi9cbiAgbWF4U2l6ZTogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogTWluaW11bSBmaWxlIHNpemUgKGluIGJ5dGVzKVxuICAgKi9cbiAgbWluU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogY2xhc3NOYW1lXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGNsYXNzTmFtZSB0byBhcHBseSB3aGVuIGRyYWcgaXMgYWN0aXZlXG4gICAqL1xuICBhY3RpdmVDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGNsYXNzTmFtZSB0byBhcHBseSB3aGVuIGRyb3Agd2lsbCBiZSBhY2NlcHRlZFxuICAgKi9cbiAgYWNjZXB0Q2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBjbGFzc05hbWUgdG8gYXBwbHkgd2hlbiBkcm9wIHdpbGwgYmUgcmVqZWN0ZWRcbiAgICovXG4gIHJlamVjdENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogY2xhc3NOYW1lIHRvIGFwcGx5IHdoZW4gZHJvcHpvbmUgaXMgZGlzYWJsZWRcbiAgICovXG4gIGRpc2FibGVkQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBDU1Mgc3R5bGVzIHRvIGFwcGx5XG4gICAqL1xuICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblxuICAvKipcbiAgICogQ1NTIHN0eWxlcyB0byBhcHBseSB3aGVuIGRyYWcgaXMgYWN0aXZlXG4gICAqL1xuICBhY3RpdmVTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblxuICAvKipcbiAgICogQ1NTIHN0eWxlcyB0byBhcHBseSB3aGVuIGRyb3Agd2lsbCBiZSBhY2NlcHRlZFxuICAgKi9cbiAgYWNjZXB0U3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgLyoqXG4gICAqIENTUyBzdHlsZXMgdG8gYXBwbHkgd2hlbiBkcm9wIHdpbGwgYmUgcmVqZWN0ZWRcbiAgICovXG4gIHJlamVjdFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gIC8qKlxuICAgKiBDU1Mgc3R5bGVzIHRvIGFwcGx5IHdoZW4gZHJvcHpvbmUgaXMgZGlzYWJsZWRcbiAgICovXG4gIGRpc2FibGVkU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgLyoqXG4gICAqIGdldERhdGFUcmFuc2Zlckl0ZW1zIGhhbmRsZXJcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICogQHJldHVybnMge0FycmF5fSBhcnJheSBvZiBGaWxlIG9iamVjdHNcbiAgICovXG4gIGdldERhdGFUcmFuc2Zlckl0ZW1zOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25DbGljayBjYWxsYmFja1xuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJvcCBjYWxsYmFja1xuICAgKi9cbiAgb25Ecm9wOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25Ecm9wQWNjZXB0ZWQgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJvcEFjY2VwdGVkOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25Ecm9wUmVqZWN0ZWQgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJvcFJlamVjdGVkOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25EcmFnU3RhcnQgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJhZ1N0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25EcmFnRW50ZXIgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJhZ0VudGVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25EcmFnT3ZlciBjYWxsYmFja1xuICAgKi9cbiAgb25EcmFnT3ZlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJhZ0xlYXZlIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyYWdMZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFByb3ZpZGUgYSBjYWxsYmFjayBvbiBjbGlja2luZyB0aGUgY2FuY2VsIGJ1dHRvbiBvZiB0aGUgZmlsZSBkaWFsb2dcbiAgICovXG4gIG9uRmlsZURpYWxvZ0NhbmNlbDogUHJvcFR5cGVzLmZ1bmNcbn1cblxuRHJvcHpvbmUuZGVmYXVsdFByb3BzID0ge1xuICBwcmV2ZW50RHJvcE9uRG9jdW1lbnQ6IHRydWUsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgZGlzYWJsZVByZXZpZXc6IGZhbHNlLFxuICBkaXNhYmxlQ2xpY2s6IGZhbHNlLFxuICBpbnB1dFByb3BzOiB7fSxcbiAgbXVsdGlwbGU6IHRydWUsXG4gIG1heFNpemU6IEluZmluaXR5LFxuICBtaW5TaXplOiAwLFxuICBnZXREYXRhVHJhbnNmZXJJdGVtczogZGVmYXVsdEdldERhdGFUcmFuc2Zlckl0ZW1cbn1cbiJdLCJuYW1lcyI6WyJtb2R1bGUiLCJ0IiwibiIsImUiLCJyIiwiZXhwb3J0cyIsIm8iLCJpIiwibCIsImNhbGwiLCJtIiwiYyIsImQiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJnZXQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJ3aW5kb3ciLCJNYXRoIiwic2VsZiIsIkZ1bmN0aW9uIiwiX19nIiwidmVyc2lvbiIsIl9fZSIsImEiLCJ0b1N0cmluZyIsInNsaWNlIiwiU3ltYm9sIiwidSIsInN0b3JlIiwiZiIsInYiLCJGIiwieSIsIkciLCJoIiwiUyIsIlAiLCJ4IiwiQiIsImciLCJiIiwiVSIsImNvcmUiLCJXIiwiUiIsInJhbmRvbSIsImNvbmNhdCIsImFwcGx5IiwiYXJndW1lbnRzIiwiVHlwZUVycm9yIiwibWluIiwiQXJyYXkiLCJpc0FycmF5Iiwic3BsaXQiLCJuYW1lIiwidHlwZSIsInJlcGxhY2UiLCJzb21lIiwidHJpbSIsImNoYXJBdCIsInRvTG93ZXJDYXNlIiwiZW5kc1dpdGgiLCJ0aGlzIiwidmFsdWUiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ2YWx1ZU9mIiwid3JpdGFibGUiLCJpbnNwZWN0U291cmNlIiwiam9pbiIsIlN0cmluZyIsImxlbmd0aCIsIl8iLCJ3IiwicHVzaCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiY2VpbCIsImZsb29yIiwiaXNOYU4iLCJjb25zdHJ1Y3RvciIsInN1cHBvcnRNdWx0aXBsZSIsImZpbGVBY2NlcHRlZCIsImZpbGUiLCJhY2NlcHQiLCJhY2NlcHRzIiwib25Eb2N1bWVudERyYWdPdmVyIiwiZXZ0IiwicHJldmVudERlZmF1bHQiLCJEcm9wem9uZSIsInByb3BzIiwiY29udGV4dCIsInJlbmRlckNoaWxkcmVuIiwiY2hpbGRyZW4iLCJpc0RyYWdBY3RpdmUiLCJpc0RyYWdBY2NlcHQiLCJpc0RyYWdSZWplY3QiLCJfdGhpcyIsInN0YXRlIiwiY29tcG9zZUhhbmRsZXJzIiwiYmluZCIsIm9uQ2xpY2siLCJvbkRvY3VtZW50RHJvcCIsIm9uRHJhZ0VudGVyIiwib25EcmFnTGVhdmUiLCJvbkRyYWdPdmVyIiwib25EcmFnU3RhcnQiLCJvbkRyb3AiLCJvbkZpbGVEaWFsb2dDYW5jZWwiLCJvbklucHV0RWxlbWVudENsaWNrIiwic2V0UmVmIiwic2V0UmVmcyIsImlzRmlsZURpYWxvZ0FjdGl2ZSIsIlJlYWN0IiwiQ29tcG9uZW50IiwicHJldmVudERyb3BPbkRvY3VtZW50IiwiZHJhZ1RhcmdldHMiLCJhZGRFdmVudExpc3RlbmVyIiwiZmlsZUlucHV0RWwiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlciIsImRpc2FibGVkIiwibm9kZSIsImNvbnRhaW5zIiwidGFyZ2V0IiwiaW5kZXhPZiIsInBlcnNpc3QiLCJyZXNvbHZlIiwiZ2V0RGF0YVRyYW5zZmVySXRlbXMiLCJ0aGVuIiwic2V0U3RhdGUiLCJzdG9wUHJvcGFnYXRpb24iLCJkYXRhVHJhbnNmZXIiLCJkcm9wRWZmZWN0IiwiZXJyIiwiZmlsdGVyIiwiZWwiLCJfdGhpczMiLCJvbkRyb3BBY2NlcHRlZCIsIm9uRHJvcFJlamVjdGVkIiwibXVsdGlwbGUiLCJkaXNhYmxlUHJldmlldyIsImRyYWdnZWRGaWxlcyIsImFjY2VwdGVkRmlsZXMiLCJyZWplY3RlZEZpbGVzIiwiZm9yRWFjaCIsInByZXZpZXciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJlcnJvciIsIm1heFNpemUiLCJtaW5TaXplIiwic2l6ZSIsImZpbGVNYXRjaFNpemUiLCJfdGhpczQiLCJzcGxpY2UiLCJkaXNhYmxlQ2xpY2siLCJ1c2VyQWdlbnQiLCJuYXZpZ2F0b3IiLCJpc0llIiwiaXNFZGdlIiwiaXNJZU9yRWRnZSIsIm9wZW4iLCJpbnB1dFByb3BzIiwiX3RoaXM1IiwiZmlsZXMiLCJyZWYiLCJjbGljayIsImFjY2VwdENsYXNzTmFtZSIsImFjdGl2ZUNsYXNzTmFtZSIsImRpc2FibGVkQ2xhc3NOYW1lIiwicmVqZWN0Q2xhc3NOYW1lIiwicmVzdCIsImFjY2VwdFN0eWxlIiwiYWN0aXZlU3R5bGUiLCJjbGFzc05hbWUiLCJkaXNhYmxlZFN0eWxlIiwicmVqZWN0U3R5bGUiLCJzdHlsZSIsImZpbGVzQ291bnQiLCJpc011bHRpcGxlQWxsb3dlZCIsImV2ZXJ5IiwiYWxsRmlsZXNBY2NlcHRlZCIsIm5vU3R5bGVzIiwic3R5bGVzIiwiYXBwbGllZFN0eWxlIiwicG9zaXRpb24iLCJpbnB1dEF0dHJpYnV0ZXMiLCJkaXZQcm9wcyIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsIm9uZU9mVHlwZSIsInN0cmluZyIsImFycmF5T2YiLCJmdW5jIiwiYm9vbCIsIm9iamVjdCIsIm51bWJlciIsImRlZmF1bHRQcm9wcyIsIkluZmluaXR5IiwiZXZlbnQiLCJkYXRhVHJhbnNmZXJJdGVtc0xpc3QiLCJkdCIsIml0ZW1zIl0sIm1hcHBpbmdzIjoid1hBQUFBLFVBQWUsU0FBU0MsR0FBRyxTQUFTQyxFQUFFQyxHQUFHLEdBQUdDLEVBQUVELEdBQUcsT0FBT0MsRUFBRUQsR0FBR0UsUUFBUSxJQUFJQyxFQUFFRixFQUFFRCxJQUFJSSxFQUFFSixFQUFFSyxHQUFFLEVBQUdILFlBQVksT0FBT0osRUFBRUUsR0FBR00sS0FBS0gsRUFBRUQsUUFBUUMsRUFBRUEsRUFBRUQsUUFBUUgsR0FBR0ksRUFBRUUsR0FBRSxFQUFHRixFQUFFRCxRQUFRLElBQUlELEtBQUssT0FBT0YsRUFBRVEsRUFBRVQsRUFBRUMsRUFBRVMsRUFBRVAsRUFBRUYsRUFBRVUsRUFBRSxTQUFTWCxFQUFFRyxFQUFFRCxHQUFHRCxFQUFFSSxFQUFFTCxFQUFFRyxJQUFJUyxPQUFPQyxlQUFlYixFQUFFRyxHQUFHVyxjQUFhLEVBQUdDLFlBQVcsRUFBR0MsSUFBSWQsS0FBS0QsRUFBRUEsRUFBRSxTQUFTRCxHQUFHLElBQUlHLEVBQUVILEdBQUdBLEVBQUVpQixXQUFXLFdBQVcsT0FBT2pCLEVBQUVrQixTQUFTLFdBQVcsT0FBT2xCLEdBQUcsT0FBT0MsRUFBRVUsRUFBRVIsRUFBRSxJQUFJQSxHQUFHQSxHQUFHRixFQUFFSSxFQUFFLFNBQVNMLEVBQUVDLEdBQUcsT0FBT1csT0FBT08sVUFBVUMsZUFBZVosS0FBS1IsRUFBRUMsSUFBSUEsRUFBRW9CLEVBQUUsR0FBR3BCLEVBQUVBLEVBQUVxQixFQUFFLElBQTljLEVBQW9kLFNBQVN0QixFQUFFQyxHQUFHLElBQUlFLEVBQUVILEVBQUVJLFFBQVEsb0JBQW9CbUIsUUFBUUEsT0FBT0MsTUFBTUEsS0FBS0QsT0FBTyxv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
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],t):e.Dropzone=t(e.React,e.PropTypes)}(this,function(e,t){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e,t=t&&t.hasOwnProperty("default")?t.default:t;var n,r,o=(function(e){e.exports=function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=13)}([function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){var n=e.exports={version:"2.5.0"};"number"==typeof __e&&(__e=n)},function(e,t,n){e.exports=!n(4)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var r=n(32)("wks"),o=n(9),i=n(0).Symbol,a="function"==typeof i;(e.exports=function(e){return r[e]||(r[e]=a&&i[e]||(a?i:o)("Symbol."+e))}).store=r},function(e,t,n){var r=n(0),o=n(2),i=n(8),a=n(22),s=n(10),c=function(e,t,n){var u,l,p,f,d=e&c.F,v=e&c.G,h=e&c.S,g=e&c.P,y=e&c.B,m=v?r:h?r[t]||(r[t]={}):(r[t]||{}).prototype,b=v?o:o[t]||(o[t]={}),D=b.prototype||(b.prototype={});for(u in v&&(n=t),n)p=((l=!d&&m&&void 0!==m[u])?m:n)[u],f=y&&l?s(p,r):g&&"function"==typeof p?s(Function.call,p):p,m&&a(m,u,p,e&c.U),b[u]!=p&&i(b,u,f),g&&D[u]!=p&&(D[u]=p)};r.core=o,c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t,n){var r=n(16),o=n(21);e.exports=n(3)?function(e,t,n){return r.f(e,t,o(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){var r=n(24);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,o){return e.call(t,n,r,o)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(28),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){t.__esModule=!0,t.default=function(e,t){if(e&&t){var n=Array.isArray(t)?t:t.split(","),r=e.name||"",o=e.type||"",i=o.replace(/\/.*$/,"");return n.some(function(e){var t=e.trim();return"."===t.charAt(0)?r.toLowerCase().endsWith(t.toLowerCase()):t.endsWith("/*")?i===t.replace(/\/.*$/,""):o===t})}return!0},n(14),n(34)},function(e,t,n){n(15),e.exports=n(2).Array.some},function(e,t,n){var r=n(7),o=n(25)(3);r(r.P+r.F*!n(33)([].some,!0),"Array",{some:function(e){return o(this,e,arguments[1])}})},function(e,t,n){var r=n(17),o=n(18),i=n(20),a=Object.defineProperty;t.f=n(3)?Object.defineProperty:function(e,t,n){if(r(e),t=i(t,!0),r(n),o)try{return a(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(1);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t,n){e.exports=!n(3)&&!n(4)(function(){return 7!=Object.defineProperty(n(19)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(1),o=n(0).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,t,n){var r=n(1);e.exports=function(e,t){if(!r(e))return e;var n,o;if(t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;if("function"==typeof(n=e.valueOf)&&!r(o=n.call(e)))return o;if(!t&&"function"==typeof(n=e.toString)&&!r(o=n.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(0),o=n(8),i=n(23),a=n(9)("src"),s=Function.toString,c=(""+s).split("toString");n(2).inspectSource=function(e){return s.call(e)},(e.exports=function(e,t,n,s){var u="function"==typeof n;u&&(i(n,"name")||o(n,"name",t)),e[t]!==n&&(u&&(i(n,a)||o(n,a,e[t]?""+e[t]:c.join(String(t)))),e===r?e[t]=n:s?e[t]?e[t]=n:o(e,t,n):(delete e[t],o(e,t,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||s.call(this)})},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(10),o=n(26),i=n(27),a=n(12),s=n(29);e.exports=function(e,t){var n=1==e,c=2==e,u=3==e,l=4==e,p=6==e,f=5==e||p,d=t||s;return function(t,s,v){for(var h,g,y=i(t),m=o(y),b=r(s,v,3),D=a(m.length),x=0,S=n?d(t,D):c?d(t,0):void 0;D>x;x++)if((f||x in m)&&(g=b(h=m[x],x,y),e))if(n)S[x]=g;else if(g)switch(e){case 3:return!0;case 5:return h;case 6:return x;case 2:S.push(h)}else if(l)return!1;return p?-1:u||l?l:S}}},function(e,t,n){var r=n(5);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t,n){var r=n(11);e.exports=function(e){return Object(r(e))}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(30);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(1),o=n(31),i=n(6)("species");e.exports=function(e){var t;return o(e)&&("function"!=typeof(t=e.constructor)||t!==Array&&!o(t.prototype)||(t=void 0),r(t)&&null===(t=t[i])&&(t=void 0)),void 0===t?Array:t}},function(e,t,n){var r=n(5);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t,n){var r=n(4);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t,n){n(35),e.exports=n(2).String.endsWith},function(e,t,n){var r=n(7),o=n(12),i=n(36),a="".endsWith;r(r.P+r.F*n(38)("endsWith"),"String",{endsWith:function(e){var t=i(this,e,"endsWith"),n=arguments.length>1?arguments[1]:void 0,r=o(t.length),s=void 0===n?r:Math.min(o(n),r),c=String(e);return a?a.call(t,c,s):t.slice(s-c.length,s)===c}})},function(e,t,n){var r=n(37),o=n(11);e.exports=function(e,t,n){if(r(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(o(e))}},function(e,t,n){var r=n(1),o=n(5),i=n(6)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[i])?!!t:"RegExp"==o(e))}},function(e,t,n){var r=n(6)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,!"/./"[e](t)}catch(e){}}return!0}}])}(n={exports:{}},n.exports),n.exports),i=(r=o)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,a="undefined"==typeof document||!document||!document.createElement||"multiple"in document.createElement("input");function s(e,t){return"application/x-moz-file"===e.type||i(e,t)}function c(e){e.preventDefault()}var u={borderStyle:"solid",borderColor:"#c66",backgroundColor:"#eee"},l={opacity:.5},p={borderStyle:"solid",borderColor:"#6c6",backgroundColor:"#eee"},f={width:200,height:200,borderWidth:2,borderColor:"#666",borderStyle:"dashed",borderRadius:5},d=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},v=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},g=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},y=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},m=function(t){function n(e,t){d(this,n);var r=y(this,(n.__proto__||Object.getPrototypeOf(n)).call(this,e,t));return r.renderChildren=function(e,t,n,o){return"function"==typeof e?e(h({},r.state,{isDragActive:t,isDragAccept:n,isDragReject:o})):e},r.composeHandlers=r.composeHandlers.bind(r),r.onClick=r.onClick.bind(r),r.onDocumentDrop=r.onDocumentDrop.bind(r),r.onDragEnter=r.onDragEnter.bind(r),r.onDragLeave=r.onDragLeave.bind(r),r.onDragOver=r.onDragOver.bind(r),r.onDragStart=r.onDragStart.bind(r),r.onDrop=r.onDrop.bind(r),r.onFileDialogCancel=r.onFileDialogCancel.bind(r),r.onInputElementClick=r.onInputElementClick.bind(r),r.setRef=r.setRef.bind(r),r.setRefs=r.setRefs.bind(r),r.isFileDialogActive=!1,r.state={draggedFiles:[],acceptedFiles:[],rejectedFiles:[]},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(n,e.Component),v(n,[{key:"componentDidMount",value:function(){var e=this.props.preventDropOnDocument;this.dragTargets=[],e&&(document.addEventListener("dragover",c,!1),document.addEventListener("drop",this.onDocumentDrop,!1)),null!=this.fileInputEl&&this.fileInputEl.addEventListener("click",this.onInputElementClick,!1),window.addEventListener("focus",this.onFileDialogCancel,!1)}},{key:"componentWillUnmount",value:function(){this.props.preventDropOnDocument&&(document.removeEventListener("dragover",c),document.removeEventListener("drop",this.onDocumentDrop)),null!=this.fileInputEl&&this.fileInputEl.removeEventListener("click",this.onInputElementClick,!1),window.removeEventListener("focus",this.onFileDialogCancel,!1)}},{key:"composeHandlers",value:function(e){return this.props.disabled?null:e}},{key:"onDocumentDrop",value:function(e){this.node&&this.node.contains(e.target)||(e.preventDefault(),this.dragTargets=[])}},{key:"onDragStart",value:function(e){this.props.onDragStart&&this.props.onDragStart.call(this,e)}},{key:"onDragEnter",value:function(e){var t=this;e.preventDefault(),-1===this.dragTargets.indexOf(e.target)&&this.dragTargets.push(e.target),e.persist(),Promise.resolve(this.props.getDataTransferItems(e)).then(function(e){t.setState({isDragActive:!0,draggedFiles:e})}),this.props.onDragEnter&&this.props.onDragEnter.call(this,e)}},{key:"onDragOver",value:function(e){e.preventDefault(),e.stopPropagation();try{e.dataTransfer.dropEffect=this.isFileDialogActive?"none":"copy"}catch(e){}return this.props.onDragOver&&this.props.onDragOver.call(this,e),!1}},{key:"onDragLeave",value:function(e){var t=this;e.preventDefault(),this.dragTargets=this.dragTargets.filter(function(n){return n!==e.target&&t.node.contains(n)}),this.dragTargets.length>0||(this.setState({isDragActive:!1,draggedFiles:[]}),this.props.onDragLeave&&this.props.onDragLeave.call(this,e))}},{key:"onDrop",value:function(e){var t=this,n=this.props,r=n.onDrop,o=n.onDropAccepted,i=n.onDropRejected,a=n.multiple,c=n.disablePreview,u=n.accept,l=n.getDataTransferItems;e.preventDefault(),e.persist(),this.dragTargets=[],this.isFileDialogActive=!1,this.draggedFiles=null,this.setState({isDragActive:!1,draggedFiles:[]}),Promise.resolve(l(e)).then(function(n){var l=[],p=[];n.forEach(function(e){if(!c)try{e.preview=window.URL.createObjectURL(e)}catch(t){"production"!==process.env.NODE_ENV&&console.error("Failed to generate preview for file",e,t)}s(e,u)&&function(e,t,n){return e.size<=t&&e.size>=n}(e,t.props.maxSize,t.props.minSize)?l.push(e):p.push(e)}),!a&&l.length>1&&p.push.apply(p,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}(l.splice(0))),r&&r.call(t,l,p,e),p.length>0&&i&&i.call(t,p,e),l.length>0&&o&&o.call(t,l,e),t.setState({acceptedFiles:l,rejectedFiles:p})})}},{key:"onClick",value:function(e){var t=this.props,n=t.onClick;t.disableClick||(e.stopPropagation(),n&&n.call(this,e),!function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return function(e){return-1!==e.indexOf("MSIE")||-1!==e.indexOf("Trident/")}(e)||function(e){return-1!==e.indexOf("Edge/")}(e)}()?this.open():setTimeout(this.open.bind(this),0))}},{key:"onInputElementClick",value:function(e){e.stopPropagation(),this.props.inputProps&&this.props.inputProps.onClick&&this.props.inputProps.onClick()}},{key:"onFileDialogCancel",value:function(){var e=this,t=this.props.onFileDialogCancel;this.isFileDialogActive&&setTimeout(function(){null!=e.fileInputEl&&(e.fileInputEl.files.length||(e.isFileDialogActive=!1));"function"==typeof t&&t()},300)}},{key:"setRef",value:function(e){this.node=e}},{key:"setRefs",value:function(e){this.fileInputEl=e}},{key:"open",value:function(){this.isFileDialogActive=!0,this.fileInputEl.value=null,this.fileInputEl.click()}},{key:"render",value:function(){var t=this.props,n=t.accept,r=t.acceptClassName,o=t.activeClassName,i=t.children,c=t.disabled,d=t.disabledClassName,v=t.inputProps,y=t.multiple,m=t.name,b=t.rejectClassName,D=g(t,["accept","acceptClassName","activeClassName","children","disabled","disabledClassName","inputProps","multiple","name","rejectClassName"]),x=D.acceptStyle,S=D.activeStyle,E=D.className,C=void 0===E?"":E,O=D.disabledStyle,w=D.rejectStyle,j=D.style,k=g(D,["acceptStyle","activeStyle","className","disabledStyle","rejectStyle","style"]),P=this.state,F=P.isDragActive,_=P.draggedFiles,A=_.length,T=y||A<=1,I=A>0&&function(e,t){return e.every(function(e){return s(e,t)})}(_,this.props.accept),L=A>0&&(!I||!T),N=!(C||j||S||x||w||O);F&&o&&(C+=" "+o),I&&r&&(C+=" "+r),L&&b&&(C+=" "+b),c&&d&&(C+=" "+d),N&&(j=f,S=p,x=p,w=u,O=l);var R=h({position:"relative"},j);S&&F&&(R=h({},R,S)),x&&I&&(R=h({},R,x)),w&&L&&(R=h({},R,w)),O&&c&&(R=h({},R,O));var M={accept:n,disabled:c,type:"file",style:h({position:"absolute",top:0,right:0,bottom:0,left:0,opacity:1e-5,pointerEvents:"none"},v.style),multiple:a&&y,ref:this.setRefs,onChange:this.onDrop,autoComplete:"off"};m&&m.length&&(M.name=m);var z=g(k,["acceptedFiles","preventDropOnDocument","disablePreview","disableClick","onDropAccepted","onDropRejected","onFileDialogCancel","maxSize","minSize","getDataTransferItems"]);return e.createElement("div",h({className:C,style:R},z,{onClick:this.composeHandlers(this.onClick),onDragStart:this.composeHandlers(this.onDragStart),onDragEnter:this.composeHandlers(this.onDragEnter),onDragOver:this.composeHandlers(this.onDragOver),onDragLeave:this.composeHandlers(this.onDragLeave),onDrop:this.composeHandlers(this.onDrop),ref:this.setRef,"aria-disabled":c}),this.renderChildren(i,F,I,L),e.createElement("input",h({},v,M)))}}]),n}();return m.propTypes={accept:t.oneOfType([t.string,t.arrayOf(t.string)]),children:t.oneOfType([t.node,t.func]),disableClick:t.bool,disabled:t.bool,disablePreview:t.bool,preventDropOnDocument:t.bool,inputProps:t.object,multiple:t.bool,name:t.string,maxSize:t.number,minSize:t.number,className:t.string,activeClassName:t.string,acceptClassName:t.string,rejectClassName:t.string,disabledClassName:t.string,style:t.object,activeStyle:t.object,acceptStyle:t.object,rejectStyle:t.object,disabledStyle:t.object,getDataTransferItems:t.func,onClick:t.func,onDrop:t.func,onDropAccepted:t.func,onDropRejected:t.func,onDragStart:t.func,onDragEnter:t.func,onDragOver:t.func,onDragLeave:t.func,onFileDialogCancel:t.func},m.defaultProps={preventDropOnDocument:!0,disabled:!1,disablePreview:!1,disableClick:!1,inputProps:{},multiple:!0,maxSize:1/0,minSize:0,getDataTransferItems:function(e){var t=[];if(e.dataTransfer){var n=e.dataTransfer;n.files&&n.files.length?t=n.files:n.items&&n.items.length&&(t=n.items)}else e.target&&e.target.files&&(t=e.target.files);return Array.prototype.slice.call(t)}},m});
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9hdHRyLWFjY2VwdC9kaXN0L2luZGV4LmpzIiwiLi4vc3JjL3V0aWxzL2luZGV4LmpzIiwiLi4vc3JjL3V0aWxzL3N0eWxlcy5qcyIsIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKGUpe2lmKHJbZV0pcmV0dXJuIHJbZV0uZXhwb3J0czt2YXIgbz1yW2VdPXtpOmUsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtlXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxuKSxvLmw9ITAsby5leHBvcnRzfXZhciByPXt9O3JldHVybiBuLm09dCxuLmM9cixuLmQ9ZnVuY3Rpb24odCxyLGUpe24ubyh0LHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxyLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6ZX0pfSxuLm49ZnVuY3Rpb24odCl7dmFyIHI9dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIG4uZChyLFwiYVwiLHIpLHJ9LG4ubz1mdW5jdGlvbih0LG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKX0sbi5wPVwiXCIsbihuLnM9MTMpfShbZnVuY3Rpb24odCxuKXt2YXIgcj10LmV4cG9ydHM9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93Lk1hdGg9PU1hdGg/d2luZG93OlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzZWxmJiZzZWxmLk1hdGg9PU1hdGg/c2VsZjpGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XCJudW1iZXJcIj09dHlwZW9mIF9fZyYmKF9fZz1yKX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQ/bnVsbCE9PXQ6XCJmdW5jdGlvblwiPT10eXBlb2YgdH19LGZ1bmN0aW9uKHQsbil7dmFyIHI9dC5leHBvcnRzPXt2ZXJzaW9uOlwiMi41LjBcIn07XCJudW1iZXJcIj09dHlwZW9mIF9fZSYmKF9fZT1yKX0sZnVuY3Rpb24odCxuLHIpe3QuZXhwb3J0cz0hcig0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30udG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByLmNhbGwodCkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMikoXCJ3a3NcIiksbz1yKDkpLGk9cigwKS5TeW1ib2wsdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBpOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGVbdF18fChlW3RdPXUmJmlbdF18fCh1P2k6bykoXCJTeW1ib2wuXCIrdCkpfSkuc3RvcmU9ZX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1yKDIpLGk9cig4KSx1PXIoMjIpLGM9cigxMCksZj1mdW5jdGlvbih0LG4scil7dmFyIGEscyxwLGwsdj10JmYuRix5PXQmZi5HLGg9dCZmLlMsZD10JmYuUCx4PXQmZi5CLGc9eT9lOmg/ZVtuXXx8KGVbbl09e30pOihlW25dfHx7fSkucHJvdG90eXBlLG09eT9vOm9bbl18fChvW25dPXt9KSxiPW0ucHJvdG90eXBlfHwobS5wcm90b3R5cGU9e30pO3kmJihyPW4pO2ZvcihhIGluIHIpcz0hdiYmZyYmdm9pZCAwIT09Z1thXSxwPShzP2c6cilbYV0sbD14JiZzP2MocCxlKTpkJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwP2MoRnVuY3Rpb24uY2FsbCxwKTpwLGcmJnUoZyxhLHAsdCZmLlUpLG1bYV0hPXAmJmkobSxhLGwpLGQmJmJbYV0hPXAmJihiW2FdPXApfTtlLmNvcmU9byxmLkY9MSxmLkc9MixmLlM9NCxmLlA9OCxmLkI9MTYsZi5XPTMyLGYuVT02NCxmLlI9MTI4LHQuZXhwb3J0cz1mfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxNiksbz1yKDIxKTt0LmV4cG9ydHM9cigzKT9mdW5jdGlvbih0LG4scil7cmV0dXJuIGUuZih0LG4sbygxLHIpKX06ZnVuY3Rpb24odCxuLHIpe3JldHVybiB0W25dPXIsdH19LGZ1bmN0aW9uKHQsbil7dmFyIHI9MCxlPU1hdGgucmFuZG9tKCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVyblwiU3ltYm9sKFwiLmNvbmNhdCh2b2lkIDA9PT10P1wiXCI6dCxcIilfXCIsKCsrcitlKS50b1N0cmluZygzNikpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjQpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7aWYoZSh0KSx2b2lkIDA9PT1uKXJldHVybiB0O3N3aXRjaChyKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0LmNhbGwobixyKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiB0LmNhbGwobixyLGUpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKHIsZSxvKXtyZXR1cm4gdC5jYWxsKG4scixlLG8pfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShuLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT10KXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIit0KTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDI4KSxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP28oZSh0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24odCxuLHIpe1widXNlIHN0cmljdFwiO24uX19lc01vZHVsZT0hMCxuLmRlZmF1bHQ9ZnVuY3Rpb24odCxuKXtpZih0JiZuKXt2YXIgcj1BcnJheS5pc0FycmF5KG4pP246bi5zcGxpdChcIixcIiksZT10Lm5hbWV8fFwiXCIsbz10LnR5cGV8fFwiXCIsaT1vLnJlcGxhY2UoL1xcLy4qJC8sXCJcIik7cmV0dXJuIHIuc29tZShmdW5jdGlvbih0KXt2YXIgbj10LnRyaW0oKTtyZXR1cm5cIi5cIj09PW4uY2hhckF0KDApP2UudG9Mb3dlckNhc2UoKS5lbmRzV2l0aChuLnRvTG93ZXJDYXNlKCkpOm4uZW5kc1dpdGgoXCIvKlwiKT9pPT09bi5yZXBsYWNlKC9cXC8uKiQvLFwiXCIpOm89PT1ufSl9cmV0dXJuITB9LHIoMTQpLHIoMzQpfSxmdW5jdGlvbih0LG4scil7cigxNSksdC5leHBvcnRzPXIoMikuQXJyYXkuc29tZX0sZnVuY3Rpb24odCxuLHIpe1widXNlIHN0cmljdFwiO3ZhciBlPXIoNyksbz1yKDI1KSgzKTtlKGUuUCtlLkYqIXIoMzMpKFtdLnNvbWUsITApLFwiQXJyYXlcIix7c29tZTpmdW5jdGlvbih0KXtyZXR1cm4gbyh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTcpLG89cigxOCksaT1yKDIwKSx1PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtuLmY9cigzKT9PYmplY3QuZGVmaW5lUHJvcGVydHk6ZnVuY3Rpb24odCxuLHIpe2lmKGUodCksbj1pKG4sITApLGUociksbyl0cnl7cmV0dXJuIHUodCxuLHIpfWNhdGNoKHQpe31pZihcImdldFwiaW4gcnx8XCJzZXRcImluIHIpdGhyb3cgVHlwZUVycm9yKFwiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhXCIpO3JldHVyblwidmFsdWVcImluIHImJih0W25dPXIudmFsdWUpLHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIWUodCkpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGFuIG9iamVjdCFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDMpJiYhcig0KShmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkocigxOSkoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMSksbz1yKDApLmRvY3VtZW50LGk9ZShvKSYmZShvLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaT9vLmNyZWF0ZUVsZW1lbnQodCk6e319fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZighZSh0KSlyZXR1cm4gdDt2YXIgcixvO2lmKG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dC50b1N0cmluZykmJiFlKG89ci5jYWxsKHQpKSlyZXR1cm4gbztpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihyPXQudmFsdWVPZikmJiFlKG89ci5jYWxsKHQpKSlyZXR1cm4gbztpZighbiYmXCJmdW5jdGlvblwiPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIWUobz1yLmNhbGwodCkpKXJldHVybiBvO3Rocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOm59fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1yKDgpLGk9cigyMyksdT1yKDkpKFwic3JjXCIpLGM9RnVuY3Rpb24udG9TdHJpbmcsZj0oXCJcIitjKS5zcGxpdChcInRvU3RyaW5nXCIpO3IoMikuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbih0KXtyZXR1cm4gYy5jYWxsKHQpfSwodC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyLGMpe3ZhciBhPVwiZnVuY3Rpb25cIj09dHlwZW9mIHI7YSYmKGkocixcIm5hbWVcIil8fG8ocixcIm5hbWVcIixuKSksdFtuXSE9PXImJihhJiYoaShyLHUpfHxvKHIsdSx0W25dP1wiXCIrdFtuXTpmLmpvaW4oU3RyaW5nKG4pKSkpLHQ9PT1lP3Rbbl09cjpjP3Rbbl0/dFtuXT1yOm8odCxuLHIpOihkZWxldGUgdFtuXSxvKHQsbixyKSkpfSkoRnVuY3Rpb24ucHJvdG90eXBlLFwidG9TdHJpbmdcIixmdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMmJnRoaXNbdV18fGMuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbih0LG4pe3ZhciByPXt9Lmhhc093blByb3BlcnR5O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiByLmNhbGwodCxuKX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGEgZnVuY3Rpb24hXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTApLG89cigyNiksaT1yKDI3KSx1PXIoMTIpLGM9cigyOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIHI9MT09dCxmPTI9PXQsYT0zPT10LHM9ND09dCxwPTY9PXQsbD01PT10fHxwLHY9bnx8YztyZXR1cm4gZnVuY3Rpb24obixjLHkpe2Zvcih2YXIgaCxkLHg9aShuKSxnPW8oeCksbT1lKGMseSwzKSxiPXUoZy5sZW5ndGgpLF89MCx3PXI/dihuLGIpOmY/dihuLDApOnZvaWQgMDtiPl87XysrKWlmKChsfHxfIGluIGcpJiYoaD1nW19dLGQ9bShoLF8seCksdCkpaWYocil3W19dPWQ7ZWxzZSBpZihkKXN3aXRjaCh0KXtjYXNlIDM6cmV0dXJuITA7Y2FzZSA1OnJldHVybiBoO2Nhc2UgNjpyZXR1cm4gXztjYXNlIDI6dy5wdXNoKGgpfWVsc2UgaWYocylyZXR1cm4hMTtyZXR1cm4gcD8tMTphfHxzP3M6d319fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1KTt0LmV4cG9ydHM9T2JqZWN0KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuXCJTdHJpbmdcIj09ZSh0KT90LnNwbGl0KFwiXCIpOk9iamVjdCh0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDExKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChlKHQpKX19LGZ1bmN0aW9uKHQsbil7dmFyIHI9TWF0aC5jZWlsLGU9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9lOnIpKHQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMzApO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcoZSh0KSkobil9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKSxvPXIoMzEpLGk9cig2KShcInNwZWNpZXNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiBvKHQpJiYobj10LmNvbnN0cnVjdG9yLFwiZnVuY3Rpb25cIiE9dHlwZW9mIG58fG4hPT1BcnJheSYmIW8obi5wcm90b3R5cGUpfHwobj12b2lkIDApLGUobikmJm51bGw9PT0obj1uW2ldKSYmKG49dm9pZCAwKSksdm9pZCAwPT09bj9BcnJheTpufX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNSk7dC5leHBvcnRzPUFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKHQpe3JldHVyblwiQXJyYXlcIj09ZSh0KX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDApLG89ZVtcIl9fY29yZS1qc19zaGFyZWRfX1wiXXx8KGVbXCJfX2NvcmUtanNfc2hhcmVkX19cIl09e30pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gb1t0XXx8KG9bdF09e30pfX0sZnVuY3Rpb24odCxuLHIpe1widXNlIHN0cmljdFwiO3ZhciBlPXIoNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuISF0JiZlKGZ1bmN0aW9uKCl7bj90LmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6dC5jYWxsKG51bGwpfSl9fSxmdW5jdGlvbih0LG4scil7cigzNSksdC5leHBvcnRzPXIoMikuU3RyaW5nLmVuZHNXaXRofSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9cig3KSxvPXIoMTIpLGk9cigzNiksdT1cIlwiLmVuZHNXaXRoO2UoZS5QK2UuRipyKDM4KShcImVuZHNXaXRoXCIpLFwiU3RyaW5nXCIse2VuZHNXaXRoOmZ1bmN0aW9uKHQpe3ZhciBuPWkodGhpcyx0LFwiZW5kc1dpdGhcIikscj1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxlPW8obi5sZW5ndGgpLGM9dm9pZCAwPT09cj9lOk1hdGgubWluKG8ociksZSksZj1TdHJpbmcodCk7cmV0dXJuIHU/dS5jYWxsKG4sZixjKTpuLnNsaWNlKGMtZi5sZW5ndGgsYyk9PT1mfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzNyksbz1yKDExKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIpe2lmKGUobikpdGhyb3cgVHlwZUVycm9yKFwiU3RyaW5nI1wiK3IrXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO3JldHVybiBTdHJpbmcobyh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKSxvPXIoNSksaT1yKDYpKFwibWF0Y2hcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiBlKHQpJiYodm9pZCAwIT09KG49dFtpXSk/ISFuOlwiUmVnRXhwXCI9PW8odCkpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoNikoXCJtYXRjaFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49Ly4vO3RyeXtcIi8uL1wiW3RdKG4pfWNhdGNoKHIpe3RyeXtyZXR1cm4gbltlXT0hMSwhXCIvLi9cIlt0XShuKX1jYXRjaCh0KXt9fXJldHVybiEwfX1dKTsiLCJpbXBvcnQgYWNjZXB0cyBmcm9tICdhdHRyLWFjY2VwdCdcblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRNdWx0aXBsZSA9XG4gIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgZG9jdW1lbnQgJiYgZG9jdW1lbnQuY3JlYXRlRWxlbWVudFxuICAgID8gJ211bHRpcGxlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpXG4gICAgOiB0cnVlXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREYXRhVHJhbnNmZXJJdGVtcyhldmVudCkge1xuICBsZXQgZGF0YVRyYW5zZmVySXRlbXNMaXN0ID0gW11cbiAgaWYgKGV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgIGNvbnN0IGR0ID0gZXZlbnQuZGF0YVRyYW5zZmVyXG5cbiAgICBpZiAoZHQuZmlsZXMgJiYgZHQuZmlsZXMubGVuZ3RoKSB7XG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5maWxlc1xuICAgIH0gZWxzZSBpZiAoZHQuaXRlbXMgJiYgZHQuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAvLyBEdXJpbmcgdGhlIGRyYWcgZXZlbiB0aGUgZGF0YVRyYW5zZmVyLmZpbGVzIGlzIG51bGxcbiAgICAgIC8vIGJ1dCBDaHJvbWUgaW1wbGVtZW50cyBzb21lIGRyYWcgc3RvcmUsIHdoaWNoIGlzIGFjY2VzaWJsZSB2aWEgZGF0YVRyYW5zZmVyLml0ZW1zXG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5pdGVtc1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgZGF0YVRyYW5zZmVySXRlbXNMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzXG4gIH1cblxuICAvLyBDb252ZXJ0IGZyb20gRGF0YVRyYW5zZmVySXRlbXNMaXN0IHRvIHRoZSBuYXRpdmUgQXJyYXlcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRhdGFUcmFuc2Zlckl0ZW1zTGlzdClcbn1cblxuLy8gRmlyZWZveCB2ZXJzaW9ucyBwcmlvciB0byA1MyByZXR1cm4gYSBib2d1cyBNSU1FIHR5cGUgZm9yIGV2ZXJ5IGZpbGUgZHJhZywgc28gZHJhZ292ZXJzIHdpdGhcbi8vIHRoYXQgTUlNRSB0eXBlIHdpbGwgYWx3YXlzIGJlIGFjY2VwdGVkXG5leHBvcnQgZnVuY3Rpb24gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkge1xuICByZXR1cm4gZmlsZS50eXBlID09PSAnYXBwbGljYXRpb24veC1tb3otZmlsZScgfHwgYWNjZXB0cyhmaWxlLCBhY2NlcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlTWF0Y2hTaXplKGZpbGUsIG1heFNpemUsIG1pblNpemUpIHtcbiAgcmV0dXJuIGZpbGUuc2l6ZSA8PSBtYXhTaXplICYmIGZpbGUuc2l6ZSA+PSBtaW5TaXplXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxGaWxlc0FjY2VwdGVkKGZpbGVzLCBhY2NlcHQpIHtcbiAgcmV0dXJuIGZpbGVzLmV2ZXJ5KGZpbGUgPT4gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkpXG59XG5cbi8vIGFsbG93IHRoZSBlbnRpcmUgZG9jdW1lbnQgdG8gYmUgYSBkcmFnIHRhcmdldFxuZXhwb3J0IGZ1bmN0aW9uIG9uRG9jdW1lbnREcmFnT3ZlcihldnQpIHtcbiAgZXZ0LnByZXZlbnREZWZhdWx0KClcbn1cblxuZnVuY3Rpb24gaXNJZSh1c2VyQWdlbnQpIHtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgIT09IC0xIHx8IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBpc0VkZ2UodXNlckFnZW50KSB7XG4gIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZignRWRnZS8nKSAhPT0gLTFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWVPckVkZ2UodXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgcmV0dXJuIGlzSWUodXNlckFnZW50KSB8fCBpc0VkZ2UodXNlckFnZW50KVxufVxuIiwiZXhwb3J0IGRlZmF1bHQge1xuICByZWplY3RlZDoge1xuICAgIGJvcmRlclN0eWxlOiAnc29saWQnLFxuICAgIGJvcmRlckNvbG9yOiAnI2M2NicsXG4gICAgYmFja2dyb3VuZENvbG9yOiAnI2VlZSdcbiAgfSxcbiAgZGlzYWJsZWQ6IHtcbiAgICBvcGFjaXR5OiAwLjVcbiAgfSxcbiAgYWN0aXZlOiB7XG4gICAgYm9yZGVyU3R5bGU6ICdzb2xpZCcsXG4gICAgYm9yZGVyQ29sb3I6ICcjNmM2JyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZWVlJ1xuICB9LFxuICBkZWZhdWx0OiB7XG4gICAgd2lkdGg6IDIwMCxcbiAgICBoZWlnaHQ6IDIwMCxcbiAgICBib3JkZXJXaWR0aDogMixcbiAgICBib3JkZXJDb2xvcjogJyM2NjYnLFxuICAgIGJvcmRlclN0eWxlOiAnZGFzaGVkJyxcbiAgICBib3JkZXJSYWRpdXM6IDVcbiAgfVxufVxuIiwiLyogZ2xvYmFsIHByb2Nlc3MgKi9cbi8qIGVzbGludCBwcmVmZXItdGVtcGxhdGU6IDAgKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHtcbiAgc3VwcG9ydE11bHRpcGxlLFxuICBmaWxlQWNjZXB0ZWQsXG4gIGFsbEZpbGVzQWNjZXB0ZWQsXG4gIGZpbGVNYXRjaFNpemUsXG4gIG9uRG9jdW1lbnREcmFnT3ZlcixcbiAgZ2V0RGF0YVRyYW5zZmVySXRlbXMgYXMgZGVmYXVsdEdldERhdGFUcmFuc2Zlckl0ZW0sXG4gIGlzSWVPckVkZ2Vcbn0gZnJvbSAnLi91dGlscydcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi91dGlscy9zdHlsZXMnXG5cbmNsYXNzIERyb3B6b25lIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IocHJvcHMsIGNvbnRleHQpIHtcbiAgICBzdXBlcihwcm9wcywgY29udGV4dClcbiAgICB0aGlzLmNvbXBvc2VIYW5kbGVycyA9IHRoaXMuY29tcG9zZUhhbmRsZXJzLmJpbmQodGhpcylcbiAgICB0aGlzLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2suYmluZCh0aGlzKVxuICAgIHRoaXMub25Eb2N1bWVudERyb3AgPSB0aGlzLm9uRG9jdW1lbnREcm9wLmJpbmQodGhpcylcbiAgICB0aGlzLm9uRHJhZ0VudGVyID0gdGhpcy5vbkRyYWdFbnRlci5iaW5kKHRoaXMpXG4gICAgdGhpcy5vbkRyYWdMZWF2ZSA9IHRoaXMub25EcmFnTGVhdmUuYmluZCh0aGlzKVxuICAgIHRoaXMub25EcmFnT3ZlciA9IHRoaXMub25EcmFnT3Zlci5iaW5kKHRoaXMpXG4gICAgdGhpcy5vbkRyYWdTdGFydCA9IHRoaXMub25EcmFnU3RhcnQuYmluZCh0aGlzKVxuICAgIHRoaXMub25Ecm9wID0gdGhpcy5vbkRyb3AuYmluZCh0aGlzKVxuICAgIHRoaXMub25GaWxlRGlhbG9nQ2FuY2VsID0gdGhpcy5vbkZpbGVEaWFsb2dDYW5jZWwuYmluZCh0aGlzKVxuICAgIHRoaXMub25JbnB1dEVsZW1lbnRDbGljayA9IHRoaXMub25JbnB1dEVsZW1lbnRDbGljay5iaW5kKHRoaXMpXG5cbiAgICB0aGlzLnNldFJlZiA9IHRoaXMuc2V0UmVmLmJpbmQodGhpcylcbiAgICB0aGlzLnNldFJlZnMgPSB0aGlzLnNldFJlZnMuYmluZCh0aGlzKVxuXG4gICAgdGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUgPSBmYWxzZVxuXG4gICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgIGRyYWdnZWRGaWxlczogW10sXG4gICAgICBhY2NlcHRlZEZpbGVzOiBbXSxcbiAgICAgIHJlamVjdGVkRmlsZXM6IFtdXG4gICAgfVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgeyBwcmV2ZW50RHJvcE9uRG9jdW1lbnQgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLmRyYWdUYXJnZXRzID0gW11cblxuICAgIGlmIChwcmV2ZW50RHJvcE9uRG9jdW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgb25Eb2N1bWVudERyYWdPdmVyLCBmYWxzZSlcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLm9uRG9jdW1lbnREcm9wLCBmYWxzZSlcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0RWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5maWxlSW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25JbnB1dEVsZW1lbnRDbGljaywgZmFsc2UpXG4gICAgfVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMub25GaWxlRGlhbG9nQ2FuY2VsLCBmYWxzZSlcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGNvbnN0IHsgcHJldmVudERyb3BPbkRvY3VtZW50IH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKHByZXZlbnREcm9wT25Eb2N1bWVudCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRvY3VtZW50RHJhZ092ZXIpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5vbkRvY3VtZW50RHJvcClcbiAgICB9XG4gICAgaWYgKHRoaXMuZmlsZUlucHV0RWwgIT0gbnVsbCkge1xuICAgICAgdGhpcy5maWxlSW5wdXRFbC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25JbnB1dEVsZW1lbnRDbGljaywgZmFsc2UpXG4gICAgfVxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMub25GaWxlRGlhbG9nQ2FuY2VsLCBmYWxzZSlcbiAgfVxuXG4gIGNvbXBvc2VIYW5kbGVycyhoYW5kbGVyKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXJcbiAgfVxuXG4gIG9uRG9jdW1lbnREcm9wKGV2dCkge1xuICAgIGlmICh0aGlzLm5vZGUgJiYgdGhpcy5ub2RlLmNvbnRhaW5zKGV2dC50YXJnZXQpKSB7XG4gICAgICAvLyBpZiB3ZSBpbnRlcmNlcHRlZCBhbiBldmVudCBmb3Igb3VyIGluc3RhbmNlLCBsZXQgaXQgcHJvcGFnYXRlIGRvd24gdG8gdGhlIGluc3RhbmNlJ3Mgb25Ecm9wIGhhbmRsZXJcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgIHRoaXMuZHJhZ1RhcmdldHMgPSBbXVxuICB9XG5cbiAgb25EcmFnU3RhcnQoZXZ0KSB7XG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnU3RhcnQpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnU3RhcnQuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuICB9XG5cbiAgb25EcmFnRW50ZXIoZXZ0KSB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KClcblxuICAgIC8vIENvdW50IHRoZSBkcm9wem9uZSBhbmQgYW55IGNoaWxkcmVuIHRoYXQgYXJlIGVudGVyZWQuXG4gICAgaWYgKHRoaXMuZHJhZ1RhcmdldHMuaW5kZXhPZihldnQudGFyZ2V0KSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuZHJhZ1RhcmdldHMucHVzaChldnQudGFyZ2V0KVxuICAgIH1cblxuICAgIGV2dC5wZXJzaXN0KClcblxuICAgIFByb21pc2UucmVzb2x2ZSh0aGlzLnByb3BzLmdldERhdGFUcmFuc2Zlckl0ZW1zKGV2dCkpLnRoZW4oZHJhZ2dlZEZpbGVzID0+IHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICBpc0RyYWdBY3RpdmU6IHRydWUsIC8vIERvIG5vdCByZWx5IG9uIGZpbGVzIGZvciB0aGUgZHJhZyBzdGF0ZS4gSXQgZG9lc24ndCB3b3JrIGluIFNhZmFyaS5cbiAgICAgICAgZHJhZ2dlZEZpbGVzXG4gICAgICB9KVxuICAgIH0pXG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnRW50ZXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnRW50ZXIuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuICB9XG5cbiAgb25EcmFnT3ZlcihldnQpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIHRyeSB7XG4gICAgICAvLyBUaGUgZmlsZSBkaWFsb2cgb24gQ2hyb21lIGFsbG93cyB1c2VycyB0byBkcmFnIGZpbGVzIGZyb20gdGhlIGRpYWxvZyBvbnRvXG4gICAgICAvLyB0aGUgZHJvcHpvbmUsIGNhdXNpbmcgdGhlIGJyb3dzZXIgdGhlIGNyYXNoIHdoZW4gdGhlIGZpbGUgZGlhbG9nIGlzIGNsb3NlZC5cbiAgICAgIC8vIEEgZHJvcCBlZmZlY3Qgb2YgJ25vbmUnIHByZXZlbnRzIHRoZSBmaWxlIGZyb20gYmVpbmcgZHJvcHBlZFxuICAgICAgZXZ0LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gdGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUgPyAnbm9uZScgOiAnY29weScgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gY29udGludWUgcmVnYXJkbGVzcyBvZiBlcnJvclxuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ092ZXIpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnT3Zlci5jYWxsKHRoaXMsIGV2dClcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBvbkRyYWdMZWF2ZShldnQpIHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgLy8gT25seSBkZWFjdGl2YXRlIG9uY2UgdGhlIGRyb3B6b25lIGFuZCBhbGwgY2hpbGRyZW4gaGF2ZSBiZWVuIGxlZnQuXG4gICAgdGhpcy5kcmFnVGFyZ2V0cyA9IHRoaXMuZHJhZ1RhcmdldHMuZmlsdGVyKGVsID0+IGVsICE9PSBldnQudGFyZ2V0ICYmIHRoaXMubm9kZS5jb250YWlucyhlbCkpXG4gICAgaWYgKHRoaXMuZHJhZ1RhcmdldHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gQ2xlYXIgZHJhZ2dpbmcgZmlsZXMgc3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzRHJhZ0FjdGl2ZTogZmFsc2UsXG4gICAgICBkcmFnZ2VkRmlsZXM6IFtdXG4gICAgfSlcblxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ0xlYXZlKSB7XG4gICAgICB0aGlzLnByb3BzLm9uRHJhZ0xlYXZlLmNhbGwodGhpcywgZXZ0KVxuICAgIH1cbiAgfVxuXG4gIG9uRHJvcChldnQpIHtcbiAgICBjb25zdCB7XG4gICAgICBvbkRyb3AsXG4gICAgICBvbkRyb3BBY2NlcHRlZCxcbiAgICAgIG9uRHJvcFJlamVjdGVkLFxuICAgICAgbXVsdGlwbGUsXG4gICAgICBkaXNhYmxlUHJldmlldyxcbiAgICAgIGFjY2VwdCxcbiAgICAgIGdldERhdGFUcmFuc2Zlckl0ZW1zXG4gICAgfSA9IHRoaXMucHJvcHNcblxuICAgIC8vIFN0b3AgZGVmYXVsdCBicm93c2VyIGJlaGF2aW9yXG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KClcblxuICAgIC8vIFBlcnNpc3QgZXZlbnQgZm9yIGxhdGVyIHVzYWdlXG4gICAgZXZ0LnBlcnNpc3QoKVxuXG4gICAgLy8gUmVzZXQgdGhlIGNvdW50ZXIgYWxvbmcgd2l0aCB0aGUgZHJhZyBvbiBhIGRyb3AuXG4gICAgdGhpcy5kcmFnVGFyZ2V0cyA9IFtdXG4gICAgdGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUgPSBmYWxzZVxuXG4gICAgLy8gQ2xlYXIgZmlsZXMgdmFsdWVcbiAgICB0aGlzLmRyYWdnZWRGaWxlcyA9IG51bGxcblxuICAgIC8vIFJlc2V0IGRyYWcgc3RhdGVcbiAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgIGlzRHJhZ0FjdGl2ZTogZmFsc2UsXG4gICAgICBkcmFnZ2VkRmlsZXM6IFtdXG4gICAgfSlcblxuICAgIFByb21pc2UucmVzb2x2ZShnZXREYXRhVHJhbnNmZXJJdGVtcyhldnQpKS50aGVuKGZpbGVMaXN0ID0+IHtcbiAgICAgIGNvbnN0IGFjY2VwdGVkRmlsZXMgPSBbXVxuICAgICAgY29uc3QgcmVqZWN0ZWRGaWxlcyA9IFtdXG5cbiAgICAgIGZpbGVMaXN0LmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgIGlmICghZGlzYWJsZVByZXZpZXcpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmlsZS5wcmV2aWV3ID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdlbmVyYXRlIHByZXZpZXcgZm9yIGZpbGUnLCBmaWxlLCBlcnIpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICBmaWxlQWNjZXB0ZWQoZmlsZSwgYWNjZXB0KSAmJlxuICAgICAgICAgIGZpbGVNYXRjaFNpemUoZmlsZSwgdGhpcy5wcm9wcy5tYXhTaXplLCB0aGlzLnByb3BzLm1pblNpemUpXG4gICAgICAgICkge1xuICAgICAgICAgIGFjY2VwdGVkRmlsZXMucHVzaChmaWxlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdGVkRmlsZXMucHVzaChmaWxlKVxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBpZiAoIW11bHRpcGxlICYmIGFjY2VwdGVkRmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBpZiBub3QgaW4gbXVsdGkgbW9kZSBhZGQgYW55IGV4dHJhIGFjY2VwdGVkIGZpbGVzIHRvIHJlamVjdGVkLlxuICAgICAgICAvLyBUaGlzIHdpbGwgYWxsb3cgZW5kIHVzZXJzIHRvIGVhc2lseSBpZ25vcmUgYSBtdWx0aSBmaWxlIGRyb3AgaW4gXCJzaW5nbGVcIiBtb2RlLlxuICAgICAgICByZWplY3RlZEZpbGVzLnB1c2goLi4uYWNjZXB0ZWRGaWxlcy5zcGxpY2UoMCkpXG4gICAgICB9XG5cbiAgICAgIGlmIChvbkRyb3ApIHtcbiAgICAgICAgb25Ecm9wLmNhbGwodGhpcywgYWNjZXB0ZWRGaWxlcywgcmVqZWN0ZWRGaWxlcywgZXZ0KVxuICAgICAgfVxuXG4gICAgICBpZiAocmVqZWN0ZWRGaWxlcy5sZW5ndGggPiAwICYmIG9uRHJvcFJlamVjdGVkKSB7XG4gICAgICAgIG9uRHJvcFJlamVjdGVkLmNhbGwodGhpcywgcmVqZWN0ZWRGaWxlcywgZXZ0KVxuICAgICAgfVxuXG4gICAgICBpZiAoYWNjZXB0ZWRGaWxlcy5sZW5ndGggPiAwICYmIG9uRHJvcEFjY2VwdGVkKSB7XG4gICAgICAgIG9uRHJvcEFjY2VwdGVkLmNhbGwodGhpcywgYWNjZXB0ZWRGaWxlcywgZXZ0KVxuICAgICAgfVxuXG4gICAgICAvLyBVcGRhdGUgYGFjY2VwdGVkRmlsZXNgIGFuZCBgcmVqZWN0ZWRGaWxlc2Agc3RhdGVcbiAgICAgIC8vIFRoaXMgd2lsbCBtYWtlIGNoaWxkcmVuIHJlbmRlciBmdW5jdGlvbnMgcmVjZWl2ZSB0aGUgYXBwcm9wcmlhdGVcbiAgICAgIC8vIHZhbHVlc1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGFjY2VwdGVkRmlsZXMsIHJlamVjdGVkRmlsZXMgfSlcbiAgICB9KVxuICB9XG5cbiAgb25DbGljayhldnQpIHtcbiAgICBjb25zdCB7IG9uQ2xpY2ssIGRpc2FibGVDbGljayB9ID0gdGhpcy5wcm9wc1xuICAgIGlmICghZGlzYWJsZUNsaWNrKSB7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgICAgb25DbGljay5jYWxsKHRoaXMsIGV2dClcbiAgICAgIH1cblxuICAgICAgLy8gaW4gSUUxMS9FZGdlIHRoZSBmaWxlLWJyb3dzZXIgZGlhbG9nIGlzIGJsb2NraW5nLCBlbnN1cmUgdGhpcyBpcyBiZWhpbmQgc2V0VGltZW91dFxuICAgICAgLy8gdGhpcyBpcyBzbyByZWFjdCBjYW4gaGFuZGxlIHN0YXRlIGNoYW5nZXMgaW4gdGhlIG9uQ2xpY2sgcHJvcCBhYm92ZSBhYm92ZVxuICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtZHJvcHpvbmUvcmVhY3QtZHJvcHpvbmUvaXNzdWVzLzQ1MFxuICAgICAgaWYgKGlzSWVPckVkZ2UoKSkge1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMub3Blbi5iaW5kKHRoaXMpLCAwKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGVuKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbklucHV0RWxlbWVudENsaWNrKGV2dCkge1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmICh0aGlzLnByb3BzLmlucHV0UHJvcHMgJiYgdGhpcy5wcm9wcy5pbnB1dFByb3BzLm9uQ2xpY2spIHtcbiAgICAgIHRoaXMucHJvcHMuaW5wdXRQcm9wcy5vbkNsaWNrKClcbiAgICB9XG4gIH1cblxuICBvbkZpbGVEaWFsb2dDYW5jZWwoKSB7XG4gICAgLy8gdGltZW91dCB3aWxsIG5vdCByZWNvZ25pemUgY29udGV4dCBvZiB0aGlzIG1ldGhvZFxuICAgIGNvbnN0IHsgb25GaWxlRGlhbG9nQ2FuY2VsIH0gPSB0aGlzLnByb3BzXG4gICAgLy8gZXhlY3V0ZSB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBGaWxlRGlhbG9nIGlzIG9wZW5lZCBpbiB0aGUgYnJvd3NlclxuICAgIGlmICh0aGlzLmlzRmlsZURpYWxvZ0FjdGl2ZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dEVsICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCBhcyBGaWxlTGlzdFxuICAgICAgICAgIGNvbnN0IHsgZmlsZXMgfSA9IHRoaXMuZmlsZUlucHV0RWxcblxuICAgICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmlzRmlsZURpYWxvZ0FjdGl2ZSA9IGZhbHNlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBvbkZpbGVEaWFsb2dDYW5jZWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBvbkZpbGVEaWFsb2dDYW5jZWwoKVxuICAgICAgICB9XG4gICAgICB9LCAzMDApXG4gICAgfVxuICB9XG5cbiAgc2V0UmVmKHJlZikge1xuICAgIHRoaXMubm9kZSA9IHJlZlxuICB9XG5cbiAgc2V0UmVmcyhyZWYpIHtcbiAgICB0aGlzLmZpbGVJbnB1dEVsID0gcmVmXG4gIH1cbiAgLyoqXG4gICAqIE9wZW4gc3lzdGVtIGZpbGUgdXBsb2FkIGRpYWxvZy5cbiAgICpcbiAgICogQHB1YmxpY1xuICAgKi9cbiAgb3BlbigpIHtcbiAgICB0aGlzLmlzRmlsZURpYWxvZ0FjdGl2ZSA9IHRydWVcbiAgICB0aGlzLmZpbGVJbnB1dEVsLnZhbHVlID0gbnVsbFxuICAgIHRoaXMuZmlsZUlucHV0RWwuY2xpY2soKVxuICB9XG5cbiAgcmVuZGVyQ2hpbGRyZW4gPSAoY2hpbGRyZW4sIGlzRHJhZ0FjdGl2ZSwgaXNEcmFnQWNjZXB0LCBpc0RyYWdSZWplY3QpID0+IHtcbiAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW4oe1xuICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICBpc0RyYWdBY3RpdmUsXG4gICAgICAgIGlzRHJhZ0FjY2VwdCxcbiAgICAgICAgaXNEcmFnUmVqZWN0XG4gICAgICB9KVxuICAgIH1cbiAgICByZXR1cm4gY2hpbGRyZW5cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBhY2NlcHQsXG4gICAgICBhY2NlcHRDbGFzc05hbWUsXG4gICAgICBhY3RpdmVDbGFzc05hbWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGRpc2FibGVkLFxuICAgICAgZGlzYWJsZWRDbGFzc05hbWUsXG4gICAgICBpbnB1dFByb3BzLFxuICAgICAgbXVsdGlwbGUsXG4gICAgICBuYW1lLFxuICAgICAgcmVqZWN0Q2xhc3NOYW1lLFxuICAgICAgLi4ucmVzdFxuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICBsZXQge1xuICAgICAgYWNjZXB0U3R5bGUsXG4gICAgICBhY3RpdmVTdHlsZSxcbiAgICAgIGNsYXNzTmFtZSA9ICcnLFxuICAgICAgZGlzYWJsZWRTdHlsZSxcbiAgICAgIHJlamVjdFN0eWxlLFxuICAgICAgc3R5bGUsXG4gICAgICAuLi5wcm9wcyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1jb25zdFxuICAgIH0gPSByZXN0XG5cbiAgICBjb25zdCB7IGlzRHJhZ0FjdGl2ZSwgZHJhZ2dlZEZpbGVzIH0gPSB0aGlzLnN0YXRlXG4gICAgY29uc3QgZmlsZXNDb3VudCA9IGRyYWdnZWRGaWxlcy5sZW5ndGhcbiAgICBjb25zdCBpc011bHRpcGxlQWxsb3dlZCA9IG11bHRpcGxlIHx8IGZpbGVzQ291bnQgPD0gMVxuICAgIGNvbnN0IGlzRHJhZ0FjY2VwdCA9IGZpbGVzQ291bnQgPiAwICYmIGFsbEZpbGVzQWNjZXB0ZWQoZHJhZ2dlZEZpbGVzLCB0aGlzLnByb3BzLmFjY2VwdClcbiAgICBjb25zdCBpc0RyYWdSZWplY3QgPSBmaWxlc0NvdW50ID4gMCAmJiAoIWlzRHJhZ0FjY2VwdCB8fCAhaXNNdWx0aXBsZUFsbG93ZWQpXG4gICAgY29uc3Qgbm9TdHlsZXMgPVxuICAgICAgIWNsYXNzTmFtZSAmJiAhc3R5bGUgJiYgIWFjdGl2ZVN0eWxlICYmICFhY2NlcHRTdHlsZSAmJiAhcmVqZWN0U3R5bGUgJiYgIWRpc2FibGVkU3R5bGVcblxuICAgIGlmIChpc0RyYWdBY3RpdmUgJiYgYWN0aXZlQ2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWUgKz0gJyAnICsgYWN0aXZlQ2xhc3NOYW1lXG4gICAgfVxuICAgIGlmIChpc0RyYWdBY2NlcHQgJiYgYWNjZXB0Q2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWUgKz0gJyAnICsgYWNjZXB0Q2xhc3NOYW1lXG4gICAgfVxuICAgIGlmIChpc0RyYWdSZWplY3QgJiYgcmVqZWN0Q2xhc3NOYW1lKSB7XG4gICAgICBjbGFzc05hbWUgKz0gJyAnICsgcmVqZWN0Q2xhc3NOYW1lXG4gICAgfVxuICAgIGlmIChkaXNhYmxlZCAmJiBkaXNhYmxlZENsYXNzTmFtZSkge1xuICAgICAgY2xhc3NOYW1lICs9ICcgJyArIGRpc2FibGVkQ2xhc3NOYW1lXG4gICAgfVxuXG4gICAgaWYgKG5vU3R5bGVzKSB7XG4gICAgICBzdHlsZSA9IHN0eWxlcy5kZWZhdWx0XG4gICAgICBhY3RpdmVTdHlsZSA9IHN0eWxlcy5hY3RpdmVcbiAgICAgIGFjY2VwdFN0eWxlID0gc3R5bGVzLmFjdGl2ZVxuICAgICAgcmVqZWN0U3R5bGUgPSBzdHlsZXMucmVqZWN0ZWRcbiAgICAgIGRpc2FibGVkU3R5bGUgPSBzdHlsZXMuZGlzYWJsZWRcbiAgICB9XG5cbiAgICBsZXQgYXBwbGllZFN0eWxlID0geyBwb3NpdGlvbjogJ3JlbGF0aXZlJywgLi4uc3R5bGUgfVxuICAgIGlmIChhY3RpdmVTdHlsZSAmJiBpc0RyYWdBY3RpdmUpIHtcbiAgICAgIGFwcGxpZWRTdHlsZSA9IHtcbiAgICAgICAgLi4uYXBwbGllZFN0eWxlLFxuICAgICAgICAuLi5hY3RpdmVTdHlsZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYWNjZXB0U3R5bGUgJiYgaXNEcmFnQWNjZXB0KSB7XG4gICAgICBhcHBsaWVkU3R5bGUgPSB7XG4gICAgICAgIC4uLmFwcGxpZWRTdHlsZSxcbiAgICAgICAgLi4uYWNjZXB0U3R5bGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJlamVjdFN0eWxlICYmIGlzRHJhZ1JlamVjdCkge1xuICAgICAgYXBwbGllZFN0eWxlID0ge1xuICAgICAgICAuLi5hcHBsaWVkU3R5bGUsXG4gICAgICAgIC4uLnJlamVjdFN0eWxlXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkaXNhYmxlZFN0eWxlICYmIGRpc2FibGVkKSB7XG4gICAgICBhcHBsaWVkU3R5bGUgPSB7XG4gICAgICAgIC4uLmFwcGxpZWRTdHlsZSxcbiAgICAgICAgLi4uZGlzYWJsZWRTdHlsZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGlucHV0QXR0cmlidXRlcyA9IHtcbiAgICAgIGFjY2VwdCxcbiAgICAgIGRpc2FibGVkLFxuICAgICAgdHlwZTogJ2ZpbGUnLFxuICAgICAgc3R5bGU6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgIHRvcDogMCxcbiAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgIGJvdHRvbTogMCxcbiAgICAgICAgbGVmdDogMCxcbiAgICAgICAgb3BhY2l0eTogMC4wMDAwMSxcbiAgICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgICAuLi5pbnB1dFByb3BzLnN0eWxlXG4gICAgICB9LFxuICAgICAgbXVsdGlwbGU6IHN1cHBvcnRNdWx0aXBsZSAmJiBtdWx0aXBsZSxcbiAgICAgIHJlZjogdGhpcy5zZXRSZWZzLFxuICAgICAgb25DaGFuZ2U6IHRoaXMub25Ecm9wLFxuICAgICAgYXV0b0NvbXBsZXRlOiAnb2ZmJ1xuICAgIH1cblxuICAgIGlmIChuYW1lICYmIG5hbWUubGVuZ3RoKSB7XG4gICAgICBpbnB1dEF0dHJpYnV0ZXMubmFtZSA9IG5hbWVcbiAgICB9XG5cbiAgICAvLyBEZXN0cnVjdHVyZSBjdXN0b20gcHJvcHMgYXdheSBmcm9tIHByb3BzIHVzZWQgZm9yIHRoZSBkaXYgZWxlbWVudFxuICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qge1xuICAgICAgYWNjZXB0ZWRGaWxlcyxcbiAgICAgIHByZXZlbnREcm9wT25Eb2N1bWVudCxcbiAgICAgIGRpc2FibGVQcmV2aWV3LFxuICAgICAgZGlzYWJsZUNsaWNrLFxuICAgICAgb25Ecm9wQWNjZXB0ZWQsXG4gICAgICBvbkRyb3BSZWplY3RlZCxcbiAgICAgIG9uRmlsZURpYWxvZ0NhbmNlbCxcbiAgICAgIG1heFNpemUsXG4gICAgICBtaW5TaXplLFxuICAgICAgZ2V0RGF0YVRyYW5zZmVySXRlbXMsXG4gICAgICAuLi5kaXZQcm9wc1xuICAgIH0gPSBwcm9wc1xuICAgIC8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuICAgIC8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgc3R5bGU9e2FwcGxpZWRTdHlsZX1cbiAgICAgICAge1xuICAgICAgICAgIC4uLmRpdlByb3BzIC8qIGV4cGFuZCB1c2VyIHByb3ZpZGVkIHByb3BzIGZpcnN0IHNvIGV2ZW50IGhhbmRsZXJzIGFyZSBuZXZlciBvdmVycmlkZGVuICovXG4gICAgICAgIH1cbiAgICAgICAgb25DbGljaz17dGhpcy5jb21wb3NlSGFuZGxlcnModGhpcy5vbkNsaWNrKX1cbiAgICAgICAgb25EcmFnU3RhcnQ9e3RoaXMuY29tcG9zZUhhbmRsZXJzKHRoaXMub25EcmFnU3RhcnQpfVxuICAgICAgICBvbkRyYWdFbnRlcj17dGhpcy5jb21wb3NlSGFuZGxlcnModGhpcy5vbkRyYWdFbnRlcil9XG4gICAgICAgIG9uRHJhZ092ZXI9e3RoaXMuY29tcG9zZUhhbmRsZXJzKHRoaXMub25EcmFnT3Zlcil9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXt0aGlzLmNvbXBvc2VIYW5kbGVycyh0aGlzLm9uRHJhZ0xlYXZlKX1cbiAgICAgICAgb25Ecm9wPXt0aGlzLmNvbXBvc2VIYW5kbGVycyh0aGlzLm9uRHJvcCl9XG4gICAgICAgIHJlZj17dGhpcy5zZXRSZWZ9XG4gICAgICAgIGFyaWEtZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgPlxuICAgICAgICB7dGhpcy5yZW5kZXJDaGlsZHJlbihjaGlsZHJlbiwgaXNEcmFnQWN0aXZlLCBpc0RyYWdBY2NlcHQsIGlzRHJhZ1JlamVjdCl9XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmlucHV0UHJvcHMgLyogZXhwYW5kIHVzZXIgcHJvdmlkZWQgaW5wdXRQcm9wcyBmaXJzdCBzbyBpbnB1dEF0dHJpYnV0ZXMgb3ZlcnJpZGUgdGhlbSAqL1xuICAgICAgICAgIH1cbiAgICAgICAgICB7Li4uaW5wdXRBdHRyaWJ1dGVzfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERyb3B6b25lXG5cbkRyb3B6b25lLnByb3BUeXBlcyA9IHtcbiAgLyoqXG4gICAqIEFsbG93IHNwZWNpZmljIHR5cGVzIG9mIGZpbGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL29rb25ldC9hdHRyLWFjY2VwdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAgICogS2VlcCBpbiBtaW5kIHRoYXQgbWltZSB0eXBlIGRldGVybWluYXRpb24gaXMgbm90IHJlbGlhYmxlIGFjcm9zcyBwbGF0Zm9ybXMuIENTViBmaWxlcyxcbiAgICogZm9yIGV4YW1wbGUsIGFyZSByZXBvcnRlZCBhcyB0ZXh0L3BsYWluIHVuZGVyIG1hY09TIGJ1dCBhcyBhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwgdW5kZXJcbiAgICogV2luZG93cy4gSW4gc29tZSBjYXNlcyB0aGVyZSBtaWdodCBub3QgYmUgYSBtaW1lIHR5cGUgc2V0IGF0IGFsbC5cbiAgICogU2VlOiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtZHJvcHpvbmUvcmVhY3QtZHJvcHpvbmUvaXNzdWVzLzI3NlxuICAgKi9cbiAgYWNjZXB0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc3RyaW5nKV0pLFxuXG4gIC8qKlxuICAgKiBDb250ZW50cyBvZiB0aGUgZHJvcHpvbmVcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubm9kZSwgUHJvcFR5cGVzLmZ1bmNdKSxcblxuICAvKipcbiAgICogRGlzYWxsb3cgY2xpY2tpbmcgb24gdGhlIGRyb3B6b25lIGNvbnRhaW5lciB0byBvcGVuIGZpbGUgZGlhbG9nXG4gICAqL1xuICBkaXNhYmxlQ2xpY2s6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBFbmFibGUvZGlzYWJsZSB0aGUgZHJvcHpvbmUgZW50aXJlbHlcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlL2Rpc2FibGUgcHJldmlldyBnZW5lcmF0aW9uXG4gICAqL1xuICBkaXNhYmxlUHJldmlldzogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIElmIGZhbHNlLCBhbGxvdyBkcm9wcGVkIGl0ZW1zIHRvIHRha2Ugb3ZlciB0aGUgY3VycmVudCBicm93c2VyIHdpbmRvd1xuICAgKi9cbiAgcHJldmVudERyb3BPbkRvY3VtZW50OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogUGFzcyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgdG8gdGhlIGA8aW5wdXQgdHlwZT1cImZpbGVcIi8+YCB0YWdcbiAgICovXG4gIGlucHV0UHJvcHM6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgLyoqXG4gICAqIEFsbG93IGRyb3BwaW5nIG11bHRpcGxlIGZpbGVzXG4gICAqL1xuICBtdWx0aXBsZTogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIGBuYW1lYCBhdHRyaWJ1dGUgZm9yIHRoZSBpbnB1dCB0YWdcbiAgICovXG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIE1heGltdW0gZmlsZSBzaXplIChpbiBieXRlcylcbiAgICovXG4gIG1heFNpemU6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIE1pbmltdW0gZmlsZSBzaXplIChpbiBieXRlcylcbiAgICovXG4gIG1pblNpemU6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIGNsYXNzTmFtZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBjbGFzc05hbWUgdG8gYXBwbHkgd2hlbiBkcmFnIGlzIGFjdGl2ZVxuICAgKi9cbiAgYWN0aXZlQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBjbGFzc05hbWUgdG8gYXBwbHkgd2hlbiBkcm9wIHdpbGwgYmUgYWNjZXB0ZWRcbiAgICovXG4gIGFjY2VwdENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogY2xhc3NOYW1lIHRvIGFwcGx5IHdoZW4gZHJvcCB3aWxsIGJlIHJlamVjdGVkXG4gICAqL1xuICByZWplY3RDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGNsYXNzTmFtZSB0byBhcHBseSB3aGVuIGRyb3B6b25lIGlzIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZENsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogQ1NTIHN0eWxlcyB0byBhcHBseVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgLyoqXG4gICAqIENTUyBzdHlsZXMgdG8gYXBwbHkgd2hlbiBkcmFnIGlzIGFjdGl2ZVxuICAgKi9cbiAgYWN0aXZlU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG5cbiAgLyoqXG4gICAqIENTUyBzdHlsZXMgdG8gYXBwbHkgd2hlbiBkcm9wIHdpbGwgYmUgYWNjZXB0ZWRcbiAgICovXG4gIGFjY2VwdFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gIC8qKlxuICAgKiBDU1Mgc3R5bGVzIHRvIGFwcGx5IHdoZW4gZHJvcCB3aWxsIGJlIHJlamVjdGVkXG4gICAqL1xuICByZWplY3RTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcblxuICAvKipcbiAgICogQ1NTIHN0eWxlcyB0byBhcHBseSB3aGVuIGRyb3B6b25lIGlzIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuXG4gIC8qKlxuICAgKiBnZXREYXRhVHJhbnNmZXJJdGVtcyBoYW5kbGVyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XG4gICAqIEByZXR1cm5zIHtBcnJheX0gYXJyYXkgb2YgRmlsZSBvYmplY3RzXG4gICAqL1xuICBnZXREYXRhVHJhbnNmZXJJdGVtczogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uQ2xpY2sgY2FsbGJhY2tcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyb3AgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJvcDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJvcEFjY2VwdGVkIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyb3BBY2NlcHRlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJvcFJlamVjdGVkIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyb3BSZWplY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJhZ1N0YXJ0IGNhbGxiYWNrXG4gICAqL1xuICBvbkRyYWdTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJhZ0VudGVyIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyYWdFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJhZ092ZXIgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJhZ092ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyYWdMZWF2ZSBjYWxsYmFja1xuICAgKi9cbiAgb25EcmFnTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgY2FsbGJhY2sgb24gY2xpY2tpbmcgdGhlIGNhbmNlbCBidXR0b24gb2YgdGhlIGZpbGUgZGlhbG9nXG4gICAqL1xuICBvbkZpbGVEaWFsb2dDYW5jZWw6IFByb3BUeXBlcy5mdW5jXG59XG5cbkRyb3B6b25lLmRlZmF1bHRQcm9wcyA9IHtcbiAgcHJldmVudERyb3BPbkRvY3VtZW50OiB0cnVlLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGRpc2FibGVQcmV2aWV3OiBmYWxzZSxcbiAgZGlzYWJsZUNsaWNrOiBmYWxzZSxcbiAgaW5wdXRQcm9wczoge30sXG4gIG11bHRpcGxlOiB0cnVlLFxuICBtYXhTaXplOiBJbmZpbml0eSxcbiAgbWluU2l6ZTogMCxcbiAgZ2V0RGF0YVRyYW5zZmVySXRlbXM6IGRlZmF1bHRHZXREYXRhVHJhbnNmZXJJdGVtXG59XG4iXSwibmFtZXMiOlsibW9kdWxlIiwidCIsIm4iLCJlIiwiciIsImV4cG9ydHMiLCJvIiwiaSIsImwiLCJjYWxsIiwibSIsImMiLCJkIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwid2luZG93IiwiTWF0aCIsInNlbGYiLCJGdW5jdGlvbiIsIl9fZyIsInZlcnNpb24iLCJfX2UiLCJhIiwidG9TdHJpbmciLCJzbGljZSIsIlN5bWJvbCIsInUiLCJzdG9yZSIsImYiLCJ2IiwiRiIsInkiLCJHIiwiaCIsIlMiLCJQIiwieCIsIkIiLCJnIiwiYiIsIlUiLCJjb3JlIiwiVyIsIlIiLCJyYW5kb20iLCJjb25jYXQiLCJhcHBseSIsImFyZ3VtZW50cyIsIlR5cGVFcnJvciIsIm1pbiIsIkFycmF5IiwiaXNBcnJheSIsInNwbGl0IiwibmFtZSIsInR5cGUiLCJyZXBsYWNlIiwic29tZSIsInRyaW0iLCJjaGFyQXQiLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwidGhpcyIsInZhbHVlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidmFsdWVPZiIsIndyaXRhYmxlIiwiaW5zcGVjdFNvdXJjZSIsImpvaW4iLCJTdHJpbmciLCJsZW5ndGgiLCJfIiwidyIsInB1c2giLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNlaWwiLCJmbG9vciIsImlzTmFOIiwiY29uc3RydWN0b3IiLCJzdXBwb3J0TXVsdGlwbGUiLCJmaWxlQWNjZXB0ZWQiLCJmaWxlIiwiYWNjZXB0IiwiYWNjZXB0cyIsIm9uRG9jdW1lbnREcmFnT3ZlciIsImV2dCIsInByZXZlbnREZWZhdWx0IiwiRHJvcHpvbmUiLCJwcm9wcyIsImNvbnRleHQiLCJyZW5kZXJDaGlsZHJlbiIsImNoaWxkcmVuIiwiaXNEcmFnQWN0aXZlIiwiaXNEcmFnQWNjZXB0IiwiaXNEcmFnUmVqZWN0IiwiX3RoaXMiLCJzdGF0ZSIsImNvbXBvc2VIYW5kbGVycyIsImJpbmQiLCJvbkNsaWNrIiwib25Eb2N1bWVudERyb3AiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJhZ1N0YXJ0Iiwib25Ecm9wIiwib25GaWxlRGlhbG9nQ2FuY2VsIiwib25JbnB1dEVsZW1lbnRDbGljayIsInNldFJlZiIsInNldFJlZnMiLCJpc0ZpbGVEaWFsb2dBY3RpdmUiLCJSZWFjdCIsIkNvbXBvbmVudCIsInByZXZlbnREcm9wT25Eb2N1bWVudCIsImRyYWdUYXJnZXRzIiwiYWRkRXZlbnRMaXN0ZW5lciIsImZpbGVJbnB1dEVsIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZXIiLCJkaXNhYmxlZCIsIm5vZGUiLCJjb250YWlucyIsInRhcmdldCIsImluZGV4T2YiLCJwZXJzaXN0IiwicmVzb2x2ZSIsImdldERhdGFUcmFuc2Zlckl0ZW1zIiwidGhlbiIsInNldFN0YXRlIiwic3RvcFByb3BhZ2F0aW9uIiwiZGF0YVRyYW5zZmVyIiwiZHJvcEVmZmVjdCIsImVyciIsImZpbHRlciIsImVsIiwiX3RoaXMzIiwib25Ecm9wQWNjZXB0ZWQiLCJvbkRyb3BSZWplY3RlZCIsIm11bHRpcGxlIiwiZGlzYWJsZVByZXZpZXciLCJkcmFnZ2VkRmlsZXMiLCJhY2NlcHRlZEZpbGVzIiwicmVqZWN0ZWRGaWxlcyIsImZvckVhY2giLCJwcmV2aWV3IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiZXJyb3IiLCJtYXhTaXplIiwibWluU2l6ZSIsInNpemUiLCJmaWxlTWF0Y2hTaXplIiwiX3RoaXM0Iiwic3BsaWNlIiwiZGlzYWJsZUNsaWNrIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwiaXNJZSIsImlzRWRnZSIsImlzSWVPckVkZ2UiLCJvcGVuIiwiaW5wdXRQcm9wcyIsIl90aGlzNSIsImZpbGVzIiwicmVmIiwiY2xpY2siLCJhY2NlcHRDbGFzc05hbWUiLCJhY3RpdmVDbGFzc05hbWUiLCJkaXNhYmxlZENsYXNzTmFtZSIsInJlamVjdENsYXNzTmFtZSIsInJlc3QiLCJhY2NlcHRTdHlsZSIsImFjdGl2ZVN0eWxlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWRTdHlsZSIsInJlamVjdFN0eWxlIiwic3R5bGUiLCJmaWxlc0NvdW50IiwiaXNNdWx0aXBsZUFsbG93ZWQiLCJldmVyeSIsImFsbEZpbGVzQWNjZXB0ZWQiLCJub1N0eWxlcyIsInN0eWxlcyIsImFwcGxpZWRTdHlsZSIsInBvc2l0aW9uIiwiaW5wdXRBdHRyaWJ1dGVzIiwiZGl2UHJvcHMiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvbmVPZlR5cGUiLCJzdHJpbmciLCJhcnJheU9mIiwiZnVuYyIsImJvb2wiLCJvYmplY3QiLCJudW1iZXIiLCJkZWZhdWx0UHJvcHMiLCJJbmZpbml0eSIsImV2ZW50IiwiZGF0YVRyYW5zZmVySXRlbXNMaXN0IiwiZHQiLCJpdGVtcyJdLCJtYXBwaW5ncyI6IndYQUFBQSxVQUFlLFNBQVNDLEdBQUcsU0FBU0MsRUFBRUMsR0FBRyxHQUFHQyxFQUFFRCxHQUFHLE9BQU9DLEVBQUVELEdBQUdFLFFBQVEsSUFBSUMsRUFBRUYsRUFBRUQsSUFBSUksRUFBRUosRUFBRUssR0FBRSxFQUFHSCxZQUFZLE9BQU9KLEVBQUVFLEdBQUdNLEtBQUtILEVBQUVELFFBQVFDLEVBQUVBLEVBQUVELFFBQVFILEdBQUdJLEVBQUVFLEdBQUUsRUFBR0YsRUFBRUQsUUFBUSxJQUFJRCxLQUFLLE9BQU9GLEVBQUVRLEVBQUVULEVBQUVDLEVBQUVTLEVBQUVQLEVBQUVGLEVBQUVVLEVBQUUsU0FBU1gsRUFBRUcsRUFBRUQsR0FBR0QsRUFBRUksRUFBRUwsRUFBRUcsSUFBSVMsT0FBT0MsZUFBZWIsRUFBRUcsR0FBR1csY0FBYSxFQUFHQyxZQUFXLEVBQUdDLElBQUlkLEtBQUtELEVBQUVBLEVBQUUsU0FBU0QsR0FBRyxJQUFJRyxFQUFFSCxHQUFHQSxFQUFFaUIsV0FBVyxXQUFXLE9BQU9qQixFQUFFa0IsU0FBUyxXQUFXLE9BQU9sQixHQUFHLE9BQU9DLEVBQUVVLEVBQUVSLEVBQUUsSUFBSUEsR0FB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
|
|
@@ -4,20 +4,21 @@ By default, the Dropzone component picks up some default styling to get you star
|
|
|
4
4
|
|
|
5
5
|
By providing a function that returns the component's children you can not only style Dropzone appropriately but also render appropriate content.
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```jsx
|
|
8
8
|
<Dropzone
|
|
9
9
|
accept="image/png"
|
|
10
10
|
>
|
|
11
|
-
{({
|
|
12
|
-
if (
|
|
11
|
+
{({ isDragAccept, isDragReject, acceptedFiles, rejectedFiles }) => {
|
|
12
|
+
if (acceptedFiles.length || rejectedFiles.length) {
|
|
13
|
+
return `Accepted ${acceptedFiles.length}, rejected ${rejectedFiles.length} files`;
|
|
14
|
+
}
|
|
15
|
+
if (isDragAccept) {
|
|
13
16
|
return "This file is authorized";
|
|
14
17
|
}
|
|
15
18
|
if (isDragReject) {
|
|
16
19
|
return "This file is not authorized";
|
|
17
20
|
}
|
|
18
|
-
return
|
|
19
|
-
? `Accepted ${acceptedFiles.length}, rejected ${rejectedFiles.length} files`
|
|
20
|
-
: "Try dropping some files.";
|
|
21
|
+
return "Try dropping some files.";
|
|
21
22
|
}}
|
|
22
23
|
</Dropzone>
|
|
23
24
|
```
|
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -221,6 +221,11 @@ class Dropzone extends React.Component {
|
|
|
221
221
|
if (acceptedFiles.length > 0 && onDropAccepted) {
|
|
222
222
|
onDropAccepted.call(this, acceptedFiles, evt)
|
|
223
223
|
}
|
|
224
|
+
|
|
225
|
+
// Update `acceptedFiles` and `rejectedFiles` state
|
|
226
|
+
// This will make children render functions receive the appropriate
|
|
227
|
+
// values
|
|
228
|
+
this.setState({ acceptedFiles, rejectedFiles })
|
|
224
229
|
})
|
|
225
230
|
}
|
|
226
231
|
|
package/src/index.spec.js
CHANGED
|
@@ -615,6 +615,21 @@ describe('Dropzone', () => {
|
|
|
615
615
|
const onDropAccepted = jest.fn()
|
|
616
616
|
const onDropRejected = jest.fn()
|
|
617
617
|
|
|
618
|
+
it('should update the acceptedFiles/rejectedFiles state', async () => {
|
|
619
|
+
let dropzone = mount(
|
|
620
|
+
<Dropzone accept="image/*">{props => <DummyChildComponent {...props} />}</Dropzone>
|
|
621
|
+
)
|
|
622
|
+
dropzone.simulate('drop', { dataTransfer: { files } })
|
|
623
|
+
dropzone = await flushPromises(dropzone)
|
|
624
|
+
expect(dropzone.find(DummyChildComponent)).toHaveProp('acceptedFiles', [])
|
|
625
|
+
expect(dropzone.find(DummyChildComponent)).toHaveProp('rejectedFiles', files)
|
|
626
|
+
|
|
627
|
+
dropzone.simulate('drop', { dataTransfer: { files: images } })
|
|
628
|
+
dropzone = await flushPromises(dropzone)
|
|
629
|
+
expect(dropzone.find(DummyChildComponent)).toHaveProp('acceptedFiles', images)
|
|
630
|
+
expect(dropzone.find(DummyChildComponent)).toHaveProp('rejectedFiles', [])
|
|
631
|
+
})
|
|
632
|
+
|
|
618
633
|
it('should reset the dragActive/dragReject state', async () => {
|
|
619
634
|
let dropzone = mount(<Dropzone>{props => <DummyChildComponent {...props} />}</Dropzone>)
|
|
620
635
|
dropzone.simulate('dragEnter', { dataTransfer: { files } })
|