react-dropzone 8.0.2 → 8.0.3

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.
@@ -48,7 +48,7 @@ export function isDragDataWithFiles(evt) {
48
48
  }
49
49
  // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types
50
50
  // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file
51
- return Array.prototype.every.call(evt.dataTransfer.types, function (type) {
51
+ return Array.prototype.some.call(evt.dataTransfer.types, function (type) {
52
52
  return type === 'Files' || type === 'application/x-moz-file';
53
53
  });
54
54
  }
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],n):e.Dropzone=n(e.React,e.PropTypes)}(this,function(e,n){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e,n=n&&n.hasOwnProperty("default")?n.default:n;var t,r,o=(function(e){e.exports=function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=13)}([function(e,n){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n){var t=e.exports={version:"2.5.0"};"number"==typeof __e&&(__e=t)},function(e,n,t){e.exports=!t(4)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,n,t){var r=t(32)("wks"),o=t(9),i=t(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,n,t){var r=t(0),o=t(2),i=t(8),a=t(22),u=t(10),c=function(e,n,t){var s,p,f,l,d=e&c.F,g=e&c.G,v=e&c.S,y=e&c.P,h=e&c.B,m=g?r:v?r[n]||(r[n]={}):(r[n]||{}).prototype,D=g?o:o[n]||(o[n]={}),b=D.prototype||(D.prototype={});for(s in g&&(t=n),t)f=((p=!d&&m&&void 0!==m[s])?m:t)[s],l=h&&p?u(f,r):y&&"function"==typeof f?u(Function.call,f):f,m&&a(m,s,f,e&c.U),D[s]!=f&&i(D,s,l),y&&b[s]!=f&&(b[s]=f)};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,n,t){var r=t(16),o=t(21);e.exports=t(3)?function(e,n,t){return r.f(e,n,o(1,t))}:function(e,n,t){return e[n]=t,e}},function(e,n){var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},function(e,n,t){var r=t(24);e.exports=function(e,n,t){if(r(e),void 0===n)return e;switch(t){case 1:return function(t){return e.call(n,t)};case 2:return function(t,r){return e.call(n,t,r)};case 3:return function(t,r,o){return e.call(n,t,r,o)}}return function(){return e.apply(n,arguments)}}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,t){var r=t(28),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,n,t){n.__esModule=!0,n.default=function(e,n){if(e&&n){var t=Array.isArray(n)?n:n.split(","),r=e.name||"",o=e.type||"",i=o.replace(/\/.*$/,"");return t.some(function(e){var n=e.trim();return"."===n.charAt(0)?r.toLowerCase().endsWith(n.toLowerCase()):n.endsWith("/*")?i===n.replace(/\/.*$/,""):o===n})}return!0},t(14),t(34)},function(e,n,t){t(15),e.exports=t(2).Array.some},function(e,n,t){var r=t(7),o=t(25)(3);r(r.P+r.F*!t(33)([].some,!0),"Array",{some:function(e){return o(this,e,arguments[1])}})},function(e,n,t){var r=t(17),o=t(18),i=t(20),a=Object.defineProperty;n.f=t(3)?Object.defineProperty:function(e,n,t){if(r(e),n=i(n,!0),r(t),o)try{return a(e,n,t)}catch(e){}if("get"in t||"set"in t)throw TypeError("Accessors not supported!");return"value"in t&&(e[n]=t.value),e}},function(e,n,t){var r=t(1);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,n,t){e.exports=!t(3)&&!t(4)(function(){return 7!=Object.defineProperty(t(19)("div"),"a",{get:function(){return 7}}).a})},function(e,n,t){var r=t(1),o=t(0).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,n,t){var r=t(1);e.exports=function(e,n){if(!r(e))return e;var t,o;if(n&&"function"==typeof(t=e.toString)&&!r(o=t.call(e)))return o;if("function"==typeof(t=e.valueOf)&&!r(o=t.call(e)))return o;if(!n&&"function"==typeof(t=e.toString)&&!r(o=t.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n,t){var r=t(0),o=t(8),i=t(23),a=t(9)("src"),u=Function.toString,c=(""+u).split("toString");t(2).inspectSource=function(e){return u.call(e)},(e.exports=function(e,n,t,u){var s="function"==typeof t;s&&(i(t,"name")||o(t,"name",n)),e[n]!==t&&(s&&(i(t,a)||o(t,a,e[n]?""+e[n]:c.join(String(n)))),e===r?e[n]=t:u?e[n]?e[n]=t:o(e,n,t):(delete e[n],o(e,n,t)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||u.call(this)})},function(e,n){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,t){var r=t(10),o=t(26),i=t(27),a=t(12),u=t(29);e.exports=function(e,n){var t=1==e,c=2==e,s=3==e,p=4==e,f=6==e,l=5==e||f,d=n||u;return function(n,u,g){for(var v,y,h=i(n),m=o(h),D=r(u,g,3),b=a(m.length),x=0,O=t?d(n,b):c?d(n,0):void 0;b>x;x++)if((l||x in m)&&(y=D(v=m[x],x,h),e))if(t)O[x]=y;else if(y)switch(e){case 3:return!0;case 5:return v;case 6:return x;case 2:O.push(v)}else if(p)return!1;return f?-1:s||p?p:O}}},function(e,n,t){var r=t(5);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,n,t){var r=t(11);e.exports=function(e){return Object(r(e))}},function(e,n){var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},function(e,n,t){var r=t(30);e.exports=function(e,n){return new(r(e))(n)}},function(e,n,t){var r=t(1),o=t(31),i=t(6)("species");e.exports=function(e){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)||(n=void 0),r(n)&&null===(n=n[i])&&(n=void 0)),void 0===n?Array:n}},function(e,n,t){var r=t(5);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,n,t){var r=t(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,n,t){var r=t(4);e.exports=function(e,n){return!!e&&r(function(){n?e.call(null,function(){},1):e.call(null)})}},function(e,n,t){t(35),e.exports=t(2).String.endsWith},function(e,n,t){var r=t(7),o=t(12),i=t(36),a="".endsWith;r(r.P+r.F*t(38)("endsWith"),"String",{endsWith:function(e){var n=i(this,e,"endsWith"),t=arguments.length>1?arguments[1]:void 0,r=o(n.length),u=void 0===t?r:Math.min(o(t),r),c=String(e);return a?a.call(n,c,u):n.slice(u-c.length,u)===c}})},function(e,n,t){var r=t(37),o=t(11);e.exports=function(e,n,t){if(r(n))throw TypeError("String#"+t+" doesn't accept regex!");return String(o(e))}},function(e,n,t){var r=t(1),o=t(5),i=t(6)("match");e.exports=function(e){var n;return r(e)&&(void 0!==(n=e[i])?!!n:"RegExp"==o(e))}},function(e,n,t){var r=t(6)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[r]=!1,!"/./"[e](n)}catch(e){}}return!0}}])}(t={exports:{}},t.exports),t.exports),i=(r=o)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,a=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},u=function(){function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(n,t,r){return t&&e(n.prototype,t),r&&e(n,r),n}}(),c=function(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e},s=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},p=function(e,n){var t={};for(var r in e)n.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},f=function(e,n){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!n||"object"!=typeof n&&"function"!=typeof n?e:n},l=function(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);n<e.length;n++)t[n]=e[n];return t}return Array.from(e)},d="undefined"==typeof document||!document||!document.createElement||"multiple"in document.createElement("input");function g(e,n){return"application/x-moz-file"===e.type||i(e,n)}function v(e){return!e.dataTransfer||Array.prototype.every.call(e.dataTransfer.types,function(e){return"Files"===e||"application/x-moz-file"===e})}function y(e){e.preventDefault()}function h(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];return function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return n.some(function(n){return n&&n.apply(void 0,[e].concat(r)),e.defaultPrevented})}}var m=function(n){function t(){var e,n,r;a(this,t);for(var o=arguments.length,i=Array(o),u=0;u<o;u++)i[u]=arguments[u];return n=r=f(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),r.state={draggedFiles:[],acceptedFiles:[],rejectedFiles:[]},r.isFileDialogActive=!1,r.onDocumentDrop=function(e){r.node&&r.node.contains(e.target)||(e.preventDefault(),r.dragTargets=[])},r.onDragStart=function(e){e.persist(),r.props.onDragStart&&v(e)&&r.props.onDragStart.call(r,e)},r.onDragEnter=function(e){e.preventDefault(),-1===r.dragTargets.indexOf(e.target)&&r.dragTargets.push(e.target),e.persist(),v(e)&&(Promise.resolve(r.props.getDataTransferItems(e)).then(function(n){e.isPropagationStopped()||r.setState({draggedFiles:n,isDragActive:!0})}),r.props.onDragEnter&&r.props.onDragEnter.call(r,e))},r.onDragOver=function(e){return e.preventDefault(),e.persist(),r.props.onDragOver&&v(e)&&r.props.onDragOver.call(r,e),!1},r.onDragLeave=function(e){e.preventDefault(),e.persist(),r.dragTargets=r.dragTargets.filter(function(n){return n!==e.target&&r.node.contains(n)}),r.dragTargets.length>0||(r.setState({isDragActive:!1,draggedFiles:[]}),r.props.onDragLeave&&v(e)&&r.props.onDragLeave.call(r,e))},r.onDrop=function(e){var n=r.props,t=n.onDrop,o=n.onDropAccepted,i=n.onDropRejected,a=n.multiple,u=n.accept,c=n.getDataTransferItems;e.preventDefault(),e.persist(),r.dragTargets=[],r.isFileDialogActive=!1,r.draggedFiles=null,r.setState({isDragActive:!1,draggedFiles:[]}),v(e)&&Promise.resolve(c(e)).then(function(n){var c=[],s=[];e.isPropagationStopped()||(n.forEach(function(e){g(e,u)&&function(e,n,t){return e.size<=n&&e.size>=t}(e,r.props.maxSize,r.props.minSize)?c.push(e):s.push(e)}),!a&&c.length>1&&s.push.apply(s,l(c.splice(0))),r.setState({acceptedFiles:c,rejectedFiles:s},function(){t&&t.call(r,c,s,e),s.length>0&&i&&i.call(r,s,e),c.length>0&&o&&o.call(r,c,e)}))})},r.onClick=function(e){var n=r.props,t=n.onClick,o=n.disableClick;t&&t.call(r,e),o||e.isDefaultPrevented()||(e.stopPropagation(),!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)}()?r.open():setTimeout(r.open,0))},r.onInputElementClick=function(e){e.stopPropagation()},r.onFileDialogCancel=function(){var e=r.props.onFileDialogCancel;r.isFileDialogActive&&setTimeout(function(){null!=r.input&&(r.input.files.length||(r.isFileDialogActive=!1,"function"==typeof e&&e()))},300)},r.onFocus=function(e){var n=r.props.onFocus;n&&n.call(r,e),e.isDefaultPrevented()||r.setState({isFocused:!0})},r.onBlur=function(e){var n=r.props.onBlur;n&&n.call(r,e),e.isDefaultPrevented()||r.setState({isFocused:!1})},r.onKeyDown=function(e){var n=r.props.onKeyDown;r.node.isEqualNode(e.target)&&(n&&n.call(r,e),e.isDefaultPrevented()||32!==e.keyCode&&13!==e.keyCode||(e.preventDefault(),r.open()))},r.composeHandler=function(e){return r.props.disabled?null:e},r.getRootProps=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.refKey,o=void 0===t?"ref":t,i=n.onKeyDown,a=n.onFocus,u=n.onBlur,f=n.onClick,l=n.onDragStart,d=n.onDragEnter,g=n.onDragOver,v=n.onDragLeave,y=n.onDrop,m=p(n,["refKey","onKeyDown","onFocus","onBlur","onClick","onDragStart","onDragEnter","onDragOver","onDragLeave","onDrop"]);return s((e={onKeyDown:r.composeHandler(i?h(i,r.onKeyDown):r.onKeyDown),onFocus:r.composeHandler(a?h(a,r.onFocus):r.onFocus),onBlur:r.composeHandler(u?h(u,r.onBlur):r.onBlur),onClick:r.composeHandler(f?h(f,r.onClick):r.onClick),onDragStart:r.composeHandler(l?h(l,r.onDragStart):r.onDragStart),onDragEnter:r.composeHandler(d?h(d,r.onDragEnter):r.onDragEnter),onDragOver:r.composeHandler(g?h(g,r.onDragOver):r.onDragOver),onDragLeave:r.composeHandler(v?h(v,r.onDragLeave):r.onDragLeave),onDrop:r.composeHandler(y?h(y,r.onDrop):r.onDrop)},c(e,o,r.setNodeRef),c(e,"tabIndex",r.props.disabled?-1:0),e),m)},r.getInputProps=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.refKey,t=void 0===n?"ref":n,o=e.onChange,i=e.onClick,a=p(e,["refKey","onChange","onClick"]),u=r.props,f=u.accept,l=u.multiple,g=u.name,v=c({accept:f,type:"file",style:{display:"none"},multiple:d&&l,onChange:h(o,r.onDrop),onClick:h(i,r.onInputElementClick),autoComplete:"off",tabIndex:-1},t,r.setInputRef);return g&&g.length&&(v.name=g),s({},v,a)},r.setNodeRef=function(e){r.node=e},r.setInputRef=function(e){r.input=e},r.open=function(){r.isFileDialogActive=!0,r.input&&(r.input.value=null,r.input.click())},f(r,n)}return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+typeof n);e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),n&&(Object.setPrototypeOf?Object.setPrototypeOf(e,n):e.__proto__=n)}(t,e.Component),u(t,[{key:"componentDidMount",value:function(){var e=this.props.preventDropOnDocument;this.dragTargets=[],e&&(document.addEventListener("dragover",y,!1),document.addEventListener("drop",this.onDocumentDrop,!1)),window.addEventListener("focus",this.onFileDialogCancel,!1)}},{key:"componentWillUnmount",value:function(){this.props.preventDropOnDocument&&(document.removeEventListener("dragover",y),document.removeEventListener("drop",this.onDocumentDrop)),window.removeEventListener("focus",this.onFileDialogCancel,!1)}},{key:"render",value:function(){var e,n,t=this.props,r=t.children,o=t.multiple,i=t.disabled,a=this.state,u=a.isDragActive,c=a.isFocused,s=a.draggedFiles,p=a.acceptedFiles,f=a.rejectedFiles,l=s.length,d=o||l<=1,v=l>0&&(e=s,n=this.props.accept,e.every(function(e){return g(e,n)}));return r({isDragActive:u,isDragAccept:v,isDragReject:l>0&&(!v||!d),draggedFiles:s,acceptedFiles:p,rejectedFiles:f,isFocused:c&&!i,getRootProps:this.getRootProps,getInputProps:this.getInputProps,open:this.open})}}]),t}();return m.propTypes={accept:n.oneOfType([n.string,n.arrayOf(n.string)]),children:n.func,disableClick:n.bool,disabled:n.bool,preventDropOnDocument:n.bool,multiple:n.bool,name:n.string,maxSize:n.number,minSize:n.number,getDataTransferItems:n.func,onClick:n.func,onFocus:n.func,onBlur:n.func,onKeyDown:n.func,onDrop:n.func,onDropAccepted:n.func,onDropRejected:n.func,onDragStart:n.func,onDragEnter:n.func,onDragOver:n.func,onDragLeave:n.func,onFileDialogCancel:n.func},m.defaultProps={preventDropOnDocument:!0,disabled:!1,disableClick:!1,multiple:!0,maxSize:1/0,minSize:0,getDataTransferItems:function(e){var n=[];if(e.dataTransfer){var t=e.dataTransfer;t.files&&t.files.length?n=t.files:t.items&&t.items.length&&(n=t.items)}else e.target&&e.target.files&&(n=e.target.files);return Array.prototype.slice.call(n)}},m});
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9hdHRyLWFjY2VwdC9kaXN0L2luZGV4LmpzIiwiLi4vc3JjL3V0aWxzL2luZGV4LmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSl7aWYocltlXSlyZXR1cm4gcltlXS5leHBvcnRzO3ZhciBvPXJbZV09e2k6ZSxsOiExLGV4cG9ydHM6e319O3JldHVybiB0W2VdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9dmFyIHI9e307cmV0dXJuIG4ubT10LG4uYz1yLG4uZD1mdW5jdGlvbih0LHIsZSl7bi5vKHQscil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDplfSl9LG4ubj1mdW5jdGlvbih0KXt2YXIgcj10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gbi5kKHIsXCJhXCIscikscn0sbi5vPWZ1bmN0aW9uKHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfSxuLnA9XCJcIixuKG4ucz0xMyl9KFtmdW5jdGlvbih0LG4pe3ZhciByPXQuZXhwb3J0cz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcIm51bWJlclwiPT10eXBlb2YgX19nJiYoX19nPXIpfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdD9udWxsIT09dDpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0fX0sZnVuY3Rpb24odCxuKXt2YXIgcj10LmV4cG9ydHM9e3ZlcnNpb246XCIyLjUuMFwifTtcIm51bWJlclwiPT10eXBlb2YgX19lJiYoX19lPXIpfSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sZnVuY3Rpb24odCxuKXt2YXIgcj17fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIuY2FsbCh0KS5zbGljZSg4LC0xKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMyKShcIndrc1wiKSxvPXIoOSksaT1yKDApLlN5bWJvbCx1PVwiZnVuY3Rpb25cIj09dHlwZW9mIGk7KHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZVt0XXx8KGVbdF09dSYmaVt0XXx8KHU/aTpvKShcIlN5bWJvbC5cIit0KSl9KS5zdG9yZT1lfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoMiksaT1yKDgpLHU9cigyMiksYz1yKDEwKSxmPWZ1bmN0aW9uKHQsbixyKXt2YXIgYSxzLHAsbCx2PXQmZi5GLHk9dCZmLkcsaD10JmYuUyxkPXQmZi5QLHg9dCZmLkIsZz15P2U6aD9lW25dfHwoZVtuXT17fSk6KGVbbl18fHt9KS5wcm90b3R5cGUsbT15P286b1tuXXx8KG9bbl09e30pLGI9bS5wcm90b3R5cGV8fChtLnByb3RvdHlwZT17fSk7eSYmKHI9bik7Zm9yKGEgaW4gcilzPSF2JiZnJiZ2b2lkIDAhPT1nW2FdLHA9KHM/ZzpyKVthXSxsPXgmJnM/YyhwLGUpOmQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHA/YyhGdW5jdGlvbi5jYWxsLHApOnAsZyYmdShnLGEscCx0JmYuVSksbVthXSE9cCYmaShtLGEsbCksZCYmYlthXSE9cCYmKGJbYV09cCl9O2UuY29yZT1vLGYuRj0xLGYuRz0yLGYuUz00LGYuUD04LGYuQj0xNixmLlc9MzIsZi5VPTY0LGYuUj0xMjgsdC5leHBvcnRzPWZ9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE2KSxvPXIoMjEpO3QuZXhwb3J0cz1yKDMpP2Z1bmN0aW9uKHQsbixyKXtyZXR1cm4gZS5mKHQsbixvKDEscikpfTpmdW5jdGlvbih0LG4scil7cmV0dXJuIHRbbl09cix0fX0sZnVuY3Rpb24odCxuKXt2YXIgcj0wLGU9TWF0aC5yYW5kb20oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJTeW1ib2woXCIuY29uY2F0KHZvaWQgMD09PXQ/XCJcIjp0LFwiKV9cIiwoKytyK2UpLnRvU3RyaW5nKDM2KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXtpZihlKHQpLHZvaWQgMD09PW4pcmV0dXJuIHQ7c3dpdGNoKHIpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQuY2FsbChuLHIpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHQuY2FsbChuLHIsZSl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24ocixlLG8pe3JldHVybiB0LmNhbGwobixyLGUsbyl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KG4sYXJndW1lbnRzKX19fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZih2b2lkIDA9PXQpdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiK3QpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjgpLG89TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/byhlKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7bi5fX2VzTW9kdWxlPSEwLG4uZGVmYXVsdD1mdW5jdGlvbih0LG4pe2lmKHQmJm4pe3ZhciByPUFycmF5LmlzQXJyYXkobik/bjpuLnNwbGl0KFwiLFwiKSxlPXQubmFtZXx8XCJcIixvPXQudHlwZXx8XCJcIixpPW8ucmVwbGFjZSgvXFwvLiokLyxcIlwiKTtyZXR1cm4gci5zb21lKGZ1bmN0aW9uKHQpe3ZhciBuPXQudHJpbSgpO3JldHVyblwiLlwiPT09bi5jaGFyQXQoMCk/ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKG4udG9Mb3dlckNhc2UoKSk6bi5lbmRzV2l0aChcIi8qXCIpP2k9PT1uLnJlcGxhY2UoL1xcLy4qJC8sXCJcIik6bz09PW59KX1yZXR1cm4hMH0scigxNCkscigzNCl9LGZ1bmN0aW9uKHQsbixyKXtyKDE1KSx0LmV4cG9ydHM9cigyKS5BcnJheS5zb21lfSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9cig3KSxvPXIoMjUpKDMpO2UoZS5QK2UuRiohcigzMykoW10uc29tZSwhMCksXCJBcnJheVwiLHtzb21lOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxNyksbz1yKDE4KSxpPXIoMjApLHU9T2JqZWN0LmRlZmluZVByb3BlcnR5O24uZj1yKDMpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LG4scil7aWYoZSh0KSxuPWkobiwhMCksZShyKSxvKXRyeXtyZXR1cm4gdSh0LG4scil9Y2F0Y2godCl7fWlmKFwiZ2V0XCJpbiByfHxcInNldFwiaW4gcil0aHJvdyBUeXBlRXJyb3IoXCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCFcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gciYmKHRbbl09ci52YWx1ZSksdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighZSh0KSl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYW4gb2JqZWN0IVwiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt0LmV4cG9ydHM9IXIoMykmJiFyKDQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyKDE5KShcImRpdlwiKSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKSxvPXIoMCkuZG9jdW1lbnQsaT1lKG8pJiZlKG8uY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpP28uY3JlYXRlRWxlbWVudCh0KTp7fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKCFlKHQpKXJldHVybiB0O3ZhciByLG87aWYobiYmXCJmdW5jdGlvblwiPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIWUobz1yLmNhbGwodCkpKXJldHVybiBvO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dC52YWx1ZU9mKSYmIWUobz1yLmNhbGwodCkpKXJldHVybiBvO2lmKCFuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZihyPXQudG9TdHJpbmcpJiYhZShvPXIuY2FsbCh0KSkpcmV0dXJuIG87dGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6bn19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoOCksaT1yKDIzKSx1PXIoOSkoXCJzcmNcIiksYz1GdW5jdGlvbi50b1N0cmluZyxmPShcIlwiK2MpLnNwbGl0KFwidG9TdHJpbmdcIik7cigyKS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBjLmNhbGwodCl9LCh0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsYyl7dmFyIGE9XCJmdW5jdGlvblwiPT10eXBlb2YgcjthJiYoaShyLFwibmFtZVwiKXx8byhyLFwibmFtZVwiLG4pKSx0W25dIT09ciYmKGEmJihpKHIsdSl8fG8ocix1LHRbbl0/XCJcIit0W25dOmYuam9pbihTdHJpbmcobikpKSksdD09PWU/dFtuXT1yOmM/dFtuXT90W25dPXI6byh0LG4scik6KGRlbGV0ZSB0W25dLG8odCxuLHIpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcyYmdGhpc1t1XXx8Yy5jYWxsKHRoaXMpfSl9LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuY2FsbCh0LG4pfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYSBmdW5jdGlvbiFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxMCksbz1yKDI2KSxpPXIoMjcpLHU9cigxMiksYz1yKDI5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgcj0xPT10LGY9Mj09dCxhPTM9PXQscz00PT10LHA9Nj09dCxsPTU9PXR8fHAsdj1ufHxjO3JldHVybiBmdW5jdGlvbihuLGMseSl7Zm9yKHZhciBoLGQseD1pKG4pLGc9byh4KSxtPWUoYyx5LDMpLGI9dShnLmxlbmd0aCksXz0wLHc9cj92KG4sYik6Zj92KG4sMCk6dm9pZCAwO2I+XztfKyspaWYoKGx8fF8gaW4gZykmJihoPWdbX10sZD1tKGgsXyx4KSx0KSlpZihyKXdbX109ZDtlbHNlIGlmKGQpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIGg7Y2FzZSA2OnJldHVybiBfO2Nhc2UgMjp3LnB1c2goaCl9ZWxzZSBpZihzKXJldHVybiExO3JldHVybiBwPy0xOmF8fHM/czp3fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDUpO3QuZXhwb3J0cz1PYmplY3QoXCJ6XCIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbih0KXtyZXR1cm5cIlN0cmluZ1wiPT1lKHQpP3Quc3BsaXQoXCJcIik6T2JqZWN0KHQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KGUodCkpfX0sZnVuY3Rpb24odCxuKXt2YXIgcj1NYXRoLmNlaWwsZT1NYXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odD0rdCk/MDoodD4wP2U6cikodCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyhlKHQpKShuKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpLG89cigzMSksaT1yKDYpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIG8odCkmJihuPXQuY29uc3RydWN0b3IsXCJmdW5jdGlvblwiIT10eXBlb2Ygbnx8biE9PUFycmF5JiYhbyhuLnByb3RvdHlwZSl8fChuPXZvaWQgMCksZShuKSYmbnVsbD09PShuPW5baV0pJiYobj12b2lkIDApKSx2b2lkIDA9PT1uP0FycmF5Om59fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1KTt0LmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJBcnJheVwiPT1lKHQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1lW1wiX19jb3JlLWpzX3NoYXJlZF9fXCJdfHwoZVtcIl9fY29yZS1qc19zaGFyZWRfX1wiXT17fSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfHwob1t0XT17fSl9fSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9cig0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4hIXQmJmUoZnVuY3Rpb24oKXtuP3QuY2FsbChudWxsLGZ1bmN0aW9uKCl7fSwxKTp0LmNhbGwobnVsbCl9KX19LGZ1bmN0aW9uKHQsbixyKXtyKDM1KSx0LmV4cG9ydHM9cigyKS5TdHJpbmcuZW5kc1dpdGh9LGZ1bmN0aW9uKHQsbixyKXtcInVzZSBzdHJpY3RcIjt2YXIgZT1yKDcpLG89cigxMiksaT1yKDM2KSx1PVwiXCIuZW5kc1dpdGg7ZShlLlArZS5GKnIoMzgpKFwiZW5kc1dpdGhcIiksXCJTdHJpbmdcIix7ZW5kc1dpdGg6ZnVuY3Rpb24odCl7dmFyIG49aSh0aGlzLHQsXCJlbmRzV2l0aFwiKSxyPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGU9byhuLmxlbmd0aCksYz12b2lkIDA9PT1yP2U6TWF0aC5taW4obyhyKSxlKSxmPVN0cmluZyh0KTtyZXR1cm4gdT91LmNhbGwobixmLGMpOm4uc2xpY2UoYy1mLmxlbmd0aCxjKT09PWZ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDM3KSxvPXIoMTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7aWYoZShuKSl0aHJvdyBUeXBlRXJyb3IoXCJTdHJpbmcjXCIrcitcIiBkb2Vzbid0IGFjY2VwdCByZWdleCFcIik7cmV0dXJuIFN0cmluZyhvKHQpKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpLG89cig1KSxpPXIoNikoXCJtYXRjaFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGUodCkmJih2b2lkIDAhPT0obj10W2ldKT8hIW46XCJSZWdFeHBcIj09byh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig2KShcIm1hdGNoXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj0vLi87dHJ5e1wiLy4vXCJbdF0obil9Y2F0Y2gocil7dHJ5e3JldHVybiBuW2VdPSExLCFcIi8uL1wiW3RdKG4pfWNhdGNoKHQpe319cmV0dXJuITB9fV0pOyIsImltcG9ydCBhY2NlcHRzIGZyb20gJ2F0dHItYWNjZXB0J1xuXG5leHBvcnQgY29uc3Qgc3VwcG9ydE11bHRpcGxlID1cbiAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFbGVtZW50XG4gICAgPyAnbXVsdGlwbGUnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcbiAgICA6IHRydWVcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFUcmFuc2Zlckl0ZW1zKGV2ZW50KSB7XG4gIGxldCBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBbXVxuICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgY29uc3QgZHQgPSBldmVudC5kYXRhVHJhbnNmZXJcblxuICAgIC8vIE5PVEU6IE9ubHkgdGhlICdkcm9wJyBldmVudCBoYXMgYWNjZXNzIHRvIERhdGFUcmFuc2Zlci5maWxlcyxcbiAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgYmUgZW1wdHlcbiAgICBpZiAoZHQuZmlsZXMgJiYgZHQuZmlsZXMubGVuZ3RoKSB7XG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5maWxlc1xuICAgIH0gZWxzZSBpZiAoZHQuaXRlbXMgJiYgZHQuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAvLyBEdXJpbmcgdGhlIGRyYWcgZXZlbiB0aGUgZGF0YVRyYW5zZmVyLmZpbGVzIGlzIG51bGxcbiAgICAgIC8vIGJ1dCBDaHJvbWUgaW1wbGVtZW50cyBzb21lIGRyYWcgc3RvcmUsIHdoaWNoIGlzIGFjY2VzaWJsZSB2aWEgZGF0YVRyYW5zZmVyLml0ZW1zXG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5pdGVtc1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgZGF0YVRyYW5zZmVySXRlbXNMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzXG4gIH1cblxuICAvLyBDb252ZXJ0IGZyb20gRGF0YVRyYW5zZmVySXRlbXNMaXN0IHRvIHRoZSBuYXRpdmUgQXJyYXlcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRhdGFUcmFuc2Zlckl0ZW1zTGlzdClcbn1cblxuLy8gRmlyZWZveCB2ZXJzaW9ucyBwcmlvciB0byA1MyByZXR1cm4gYSBib2d1cyBNSU1FIHR5cGUgZm9yIGV2ZXJ5IGZpbGUgZHJhZywgc28gZHJhZ292ZXJzIHdpdGhcbi8vIHRoYXQgTUlNRSB0eXBlIHdpbGwgYWx3YXlzIGJlIGFjY2VwdGVkXG5leHBvcnQgZnVuY3Rpb24gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkge1xuICByZXR1cm4gZmlsZS50eXBlID09PSAnYXBwbGljYXRpb24veC1tb3otZmlsZScgfHwgYWNjZXB0cyhmaWxlLCBhY2NlcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlTWF0Y2hTaXplKGZpbGUsIG1heFNpemUsIG1pblNpemUpIHtcbiAgcmV0dXJuIGZpbGUuc2l6ZSA8PSBtYXhTaXplICYmIGZpbGUuc2l6ZSA+PSBtaW5TaXplXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxGaWxlc0FjY2VwdGVkKGZpbGVzLCBhY2NlcHQpIHtcbiAgcmV0dXJuIGZpbGVzLmV2ZXJ5KGZpbGUgPT4gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWdEYXRhV2l0aEZpbGVzKGV2dCkge1xuICBpZiAoIWV2dC5kYXRhVHJhbnNmZXIpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9EYXRhVHJhbnNmZXIvdHlwZXNcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxfRHJhZ19hbmRfRHJvcF9BUEkvUmVjb21tZW5kZWRfZHJhZ190eXBlcyNmaWxlXG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuZXZlcnkuY2FsbChcbiAgICBldnQuZGF0YVRyYW5zZmVyLnR5cGVzLFxuICAgIHR5cGUgPT4gdHlwZSA9PT0gJ0ZpbGVzJyB8fCB0eXBlID09PSAnYXBwbGljYXRpb24veC1tb3otZmlsZSdcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNLaW5kRmlsZShpdGVtKSB7XG4gIHJldHVybiB0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCAmJiBpdGVtLmtpbmQgPT09ICdmaWxlJ1xufVxuXG4vLyBhbGxvdyB0aGUgZW50aXJlIGRvY3VtZW50IHRvIGJlIGEgZHJhZyB0YXJnZXRcbmV4cG9ydCBmdW5jdGlvbiBvbkRvY3VtZW50RHJhZ092ZXIoZXZ0KSB7XG4gIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG59XG5cbmZ1bmN0aW9uIGlzSWUodXNlckFnZW50KSB7XG4gIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZignTVNJRScpICE9PSAtMSB8fCB1c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudC8nKSAhPT0gLTFcbn1cblxuZnVuY3Rpb24gaXNFZGdlKHVzZXJBZ2VudCkge1xuICByZXR1cm4gdXNlckFnZW50LmluZGV4T2YoJ0VkZ2UvJykgIT09IC0xXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0llT3JFZGdlKHVzZXJBZ2VudCA9IHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gIHJldHVybiBpc0llKHVzZXJBZ2VudCkgfHwgaXNFZGdlKHVzZXJBZ2VudClcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gY29tcG9zZSBldmVudCBoYW5kbGVyc1xuICogVGhleSBhcmUgZXhlY3V0ZWQgaW4gb3JkZXIgdW50aWwgb25lIG9mIHRoZW0gY2FsbHMgYGV2ZW50LnByZXZlbnREZWZhdWx0KClgLlxuICogTm90IHN1cmUgdGhpcyBpcyB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcywgYnV0IGl0IHNlZW1zIGxlZ2l0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm5zIHRoZSBldmVudCBoYW5sZGVyIGZ1bmN0aW9uc1xuICogQHJldHVybiB7RnVuY3Rpb259IHRoZSBldmVudCBoYW5kbGVyIHRvIGFkZCB0byBhbiBlbGVtZW50XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb21wb3NlRXZlbnRIYW5kbGVycyguLi5mbnMpIHtcbiAgcmV0dXJuIChldmVudCwgLi4uYXJncykgPT5cbiAgICBmbnMuc29tZShmbiA9PiB7XG4gICAgICBmbiAmJiBmbihldmVudCwgLi4uYXJncylcbiAgICAgIHJldHVybiBldmVudC5kZWZhdWx0UHJldmVudGVkXG4gICAgfSlcbn1cbiIsIi8qIGVzbGludCBwcmVmZXItdGVtcGxhdGU6IDAgKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHtcbiAgaXNEcmFnRGF0YVdpdGhGaWxlcyxcbiAgc3VwcG9ydE11bHRpcGxlLFxuICBmaWxlQWNjZXB0ZWQsXG4gIGFsbEZpbGVzQWNjZXB0ZWQsXG4gIGZpbGVNYXRjaFNpemUsXG4gIG9uRG9jdW1lbnREcmFnT3ZlcixcbiAgZ2V0RGF0YVRyYW5zZmVySXRlbXMgYXMgZGVmYXVsdEdldERhdGFUcmFuc2Zlckl0ZW0sXG4gIGlzSWVPckVkZ2UsXG4gIGNvbXBvc2VFdmVudEhhbmRsZXJzXG59IGZyb20gJy4vdXRpbHMnXG5cbmNsYXNzIERyb3B6b25lIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHtcbiAgc3RhdGUgPSB7XG4gICAgZHJhZ2dlZEZpbGVzOiBbXSxcbiAgICBhY2NlcHRlZEZpbGVzOiBbXSxcbiAgICByZWplY3RlZEZpbGVzOiBbXVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3QgeyBwcmV2ZW50RHJvcE9uRG9jdW1lbnQgfSA9IHRoaXMucHJvcHNcbiAgICB0aGlzLmRyYWdUYXJnZXRzID0gW11cblxuICAgIGlmIChwcmV2ZW50RHJvcE9uRG9jdW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgb25Eb2N1bWVudERyYWdPdmVyLCBmYWxzZSlcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCB0aGlzLm9uRG9jdW1lbnREcm9wLCBmYWxzZSlcbiAgICB9XG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLm9uRmlsZURpYWxvZ0NhbmNlbCwgZmFsc2UpXG4gIH1cblxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICBjb25zdCB7IHByZXZlbnREcm9wT25Eb2N1bWVudCB9ID0gdGhpcy5wcm9wc1xuICAgIGlmIChwcmV2ZW50RHJvcE9uRG9jdW1lbnQpIHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2RyYWdvdmVyJywgb25Eb2N1bWVudERyYWdPdmVyKVxuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMub25Eb2N1bWVudERyb3ApXG4gICAgfVxuXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5vbkZpbGVEaWFsb2dDYW5jZWwsIGZhbHNlKVxuICB9XG5cbiAgaXNGaWxlRGlhbG9nQWN0aXZlID0gZmFsc2VcblxuICBvbkRvY3VtZW50RHJvcCA9IGV2dCA9PiB7XG4gICAgaWYgKHRoaXMubm9kZSAmJiB0aGlzLm5vZGUuY29udGFpbnMoZXZ0LnRhcmdldCkpIHtcbiAgICAgIC8vIGlmIHdlIGludGVyY2VwdGVkIGFuIGV2ZW50IGZvciBvdXIgaW5zdGFuY2UsIGxldCBpdCBwcm9wYWdhdGUgZG93biB0byB0aGUgaW5zdGFuY2UncyBvbkRyb3AgaGFuZGxlclxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgdGhpcy5kcmFnVGFyZ2V0cyA9IFtdXG4gIH1cblxuICBvbkRyYWdTdGFydCA9IGV2dCA9PiB7XG4gICAgZXZ0LnBlcnNpc3QoKVxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ1N0YXJ0ICYmIGlzRHJhZ0RhdGFXaXRoRmlsZXMoZXZ0KSkge1xuICAgICAgdGhpcy5wcm9wcy5vbkRyYWdTdGFydC5jYWxsKHRoaXMsIGV2dClcbiAgICB9XG4gIH1cblxuICBvbkRyYWdFbnRlciA9IGV2dCA9PiB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KClcblxuICAgIC8vIENvdW50IHRoZSBkcm9wem9uZSBhbmQgYW55IGNoaWxkcmVuIHRoYXQgYXJlIGVudGVyZWQuXG4gICAgaWYgKHRoaXMuZHJhZ1RhcmdldHMuaW5kZXhPZihldnQudGFyZ2V0KSA9PT0gLTEpIHtcbiAgICAgIHRoaXMuZHJhZ1RhcmdldHMucHVzaChldnQudGFyZ2V0KVxuICAgIH1cblxuICAgIGV2dC5wZXJzaXN0KClcblxuICAgIGlmIChpc0RyYWdEYXRhV2l0aEZpbGVzKGV2dCkpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSh0aGlzLnByb3BzLmdldERhdGFUcmFuc2Zlckl0ZW1zKGV2dCkpLnRoZW4oZHJhZ2dlZEZpbGVzID0+IHtcbiAgICAgICAgaWYgKGV2dC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICBkcmFnZ2VkRmlsZXMsXG4gICAgICAgICAgLy8gRG8gbm90IHJlbHkgb24gZmlsZXMgZm9yIHRoZSBkcmFnIHN0YXRlLiBJdCBkb2Vzbid0IHdvcmsgaW4gU2FmYXJpLlxuICAgICAgICAgIGlzRHJhZ0FjdGl2ZTogdHJ1ZVxuICAgICAgICB9KVxuICAgICAgfSlcblxuICAgICAgaWYgKHRoaXMucHJvcHMub25EcmFnRW50ZXIpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRyYWdFbnRlci5jYWxsKHRoaXMsIGV2dClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkRyYWdPdmVyID0gZXZ0ID0+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2dC5wZXJzaXN0KClcblxuICAgIGlmICh0aGlzLnByb3BzLm9uRHJhZ092ZXIgJiYgaXNEcmFnRGF0YVdpdGhGaWxlcyhldnQpKSB7XG4gICAgICB0aGlzLnByb3BzLm9uRHJhZ092ZXIuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBvbkRyYWdMZWF2ZSA9IGV2dCA9PiB7XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICBldnQucGVyc2lzdCgpXG5cbiAgICAvLyBPbmx5IGRlYWN0aXZhdGUgb25jZSB0aGUgZHJvcHpvbmUgYW5kIGFsbCBjaGlsZHJlbiBoYXZlIGJlZW4gbGVmdC5cbiAgICB0aGlzLmRyYWdUYXJnZXRzID0gdGhpcy5kcmFnVGFyZ2V0cy5maWx0ZXIoZWwgPT4gZWwgIT09IGV2dC50YXJnZXQgJiYgdGhpcy5ub2RlLmNvbnRhaW5zKGVsKSlcbiAgICBpZiAodGhpcy5kcmFnVGFyZ2V0cy5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBDbGVhciBkcmFnZ2luZyBmaWxlcyBzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaXNEcmFnQWN0aXZlOiBmYWxzZSxcbiAgICAgIGRyYWdnZWRGaWxlczogW11cbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnTGVhdmUgJiYgaXNEcmFnRGF0YVdpdGhGaWxlcyhldnQpKSB7XG4gICAgICB0aGlzLnByb3BzLm9uRHJhZ0xlYXZlLmNhbGwodGhpcywgZXZ0KVxuICAgIH1cbiAgfVxuXG4gIG9uRHJvcCA9IGV2dCA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb25Ecm9wLFxuICAgICAgb25Ecm9wQWNjZXB0ZWQsXG4gICAgICBvbkRyb3BSZWplY3RlZCxcbiAgICAgIG11bHRpcGxlLFxuICAgICAgYWNjZXB0LFxuICAgICAgZ2V0RGF0YVRyYW5zZmVySXRlbXNcbiAgICB9ID0gdGhpcy5wcm9wc1xuXG4gICAgLy8gU3RvcCBkZWZhdWx0IGJyb3dzZXIgYmVoYXZpb3JcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgLy8gUGVyc2lzdCBldmVudCBmb3IgbGF0ZXIgdXNhZ2VcbiAgICBldnQucGVyc2lzdCgpXG5cbiAgICAvLyBSZXNldCB0aGUgY291bnRlciBhbG9uZyB3aXRoIHRoZSBkcmFnIG9uIGEgZHJvcC5cbiAgICB0aGlzLmRyYWdUYXJnZXRzID0gW11cbiAgICB0aGlzLmlzRmlsZURpYWxvZ0FjdGl2ZSA9IGZhbHNlXG5cbiAgICAvLyBDbGVhciBmaWxlcyB2YWx1ZVxuICAgIHRoaXMuZHJhZ2dlZEZpbGVzID0gbnVsbFxuXG4gICAgLy8gUmVzZXQgZHJhZyBzdGF0ZVxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaXNEcmFnQWN0aXZlOiBmYWxzZSxcbiAgICAgIGRyYWdnZWRGaWxlczogW11cbiAgICB9KVxuXG4gICAgaWYgKGlzRHJhZ0RhdGFXaXRoRmlsZXMoZXZ0KSkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKGdldERhdGFUcmFuc2Zlckl0ZW1zKGV2dCkpLnRoZW4oZmlsZUxpc3QgPT4ge1xuICAgICAgICBjb25zdCBhY2NlcHRlZEZpbGVzID0gW11cbiAgICAgICAgY29uc3QgcmVqZWN0ZWRGaWxlcyA9IFtdXG5cbiAgICAgICAgaWYgKGV2dC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBmaWxlTGlzdC5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGZpbGVBY2NlcHRlZChmaWxlLCBhY2NlcHQpICYmXG4gICAgICAgICAgICBmaWxlTWF0Y2hTaXplKGZpbGUsIHRoaXMucHJvcHMubWF4U2l6ZSwgdGhpcy5wcm9wcy5taW5TaXplKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgYWNjZXB0ZWRGaWxlcy5wdXNoKGZpbGUpXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlamVjdGVkRmlsZXMucHVzaChmaWxlKVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIW11bHRpcGxlICYmIGFjY2VwdGVkRmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIC8vIGlmIG5vdCBpbiBtdWx0aSBtb2RlIGFkZCBhbnkgZXh0cmEgYWNjZXB0ZWQgZmlsZXMgdG8gcmVqZWN0ZWQuXG4gICAgICAgICAgLy8gVGhpcyB3aWxsIGFsbG93IGVuZCB1c2VycyB0byBlYXNpbHkgaWdub3JlIGEgbXVsdGkgZmlsZSBkcm9wIGluIFwic2luZ2xlXCIgbW9kZS5cbiAgICAgICAgICByZWplY3RlZEZpbGVzLnB1c2goLi4uYWNjZXB0ZWRGaWxlcy5zcGxpY2UoMCkpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBVcGRhdGUgYGFjY2VwdGVkRmlsZXNgIGFuZCBgcmVqZWN0ZWRGaWxlc2Agc3RhdGVcbiAgICAgICAgLy8gVGhpcyB3aWxsIG1ha2UgY2hpbGRyZW4gcmVuZGVyIGZ1bmN0aW9ucyByZWNlaXZlIHRoZSBhcHByb3ByaWF0ZVxuICAgICAgICAvLyB2YWx1ZXNcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGFjY2VwdGVkRmlsZXMsIHJlamVjdGVkRmlsZXMgfSwgKCkgPT4ge1xuICAgICAgICAgIGlmIChvbkRyb3ApIHtcbiAgICAgICAgICAgIG9uRHJvcC5jYWxsKHRoaXMsIGFjY2VwdGVkRmlsZXMsIHJlamVjdGVkRmlsZXMsIGV2dClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVqZWN0ZWRGaWxlcy5sZW5ndGggPiAwICYmIG9uRHJvcFJlamVjdGVkKSB7XG4gICAgICAgICAgICBvbkRyb3BSZWplY3RlZC5jYWxsKHRoaXMsIHJlamVjdGVkRmlsZXMsIGV2dClcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYWNjZXB0ZWRGaWxlcy5sZW5ndGggPiAwICYmIG9uRHJvcEFjY2VwdGVkKSB7XG4gICAgICAgICAgICBvbkRyb3BBY2NlcHRlZC5jYWxsKHRoaXMsIGFjY2VwdGVkRmlsZXMsIGV2dClcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIG9uQ2xpY2sgPSBldnQgPT4ge1xuICAgIGNvbnN0IHsgb25DbGljaywgZGlzYWJsZUNsaWNrIH0gPSB0aGlzLnByb3BzXG5cbiAgICAvLyBpZiBvbkNsaWNrIHByb3AgaXMgZ2l2ZW4sIHJ1biBpdCBmaXJzdFxuICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICBvbkNsaWNrLmNhbGwodGhpcywgZXZ0KVxuICAgIH1cblxuICAgIC8vIGlmIGRpc2FibGVDbGljayBpcyBub3Qgc2V0IGFuZCB0aGUgZXZlbnQgaGFzbid0IGJlZW4gZGVmYXVsdCBwcmVmZW50ZWQgd2l0aGluXG4gICAgLy8gdGhlIG9uQ2xpY2sgbGlzdGVuZXIsIG9wZW4gdGhlIGZpbGUgZGlhbG9nXG4gICAgaWYgKCFkaXNhYmxlQ2xpY2sgJiYgIWV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkge1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICAgIC8vIGluIElFMTEvRWRnZSB0aGUgZmlsZS1icm93c2VyIGRpYWxvZyBpcyBibG9ja2luZywgZW5zdXJlIHRoaXMgaXMgYmVoaW5kIHNldFRpbWVvdXRcbiAgICAgIC8vIHRoaXMgaXMgc28gcmVhY3QgY2FuIGhhbmRsZSBzdGF0ZSBjaGFuZ2VzIGluIHRoZSBvbkNsaWNrIHByb3AgYWJvdmUgYWJvdmVcbiAgICAgIC8vIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWRyb3B6b25lL3JlYWN0LWRyb3B6b25lL2lzc3Vlcy80NTBcbiAgICAgIGlmIChpc0llT3JFZGdlKCkpIHtcbiAgICAgICAgc2V0VGltZW91dCh0aGlzLm9wZW4sIDApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wZW4oKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRFbGVtZW50Q2xpY2sgPSBldnQgPT4ge1xuICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKVxuICB9XG5cbiAgb25GaWxlRGlhbG9nQ2FuY2VsID0gKCkgPT4ge1xuICAgIC8vIHRpbWVvdXQgd2lsbCBub3QgcmVjb2duaXplIGNvbnRleHQgb2YgdGhpcyBtZXRob2RcbiAgICBjb25zdCB7IG9uRmlsZURpYWxvZ0NhbmNlbCB9ID0gdGhpcy5wcm9wc1xuICAgIC8vIGV4ZWN1dGUgdGhlIHRpbWVvdXQgb25seSBpZiB0aGUgRmlsZURpYWxvZyBpcyBvcGVuZWQgaW4gdGhlIGJyb3dzZXJcbiAgICBpZiAodGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pbnB1dCAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gUmV0dXJucyBhbiBvYmplY3QgYXMgRmlsZUxpc3RcbiAgICAgICAgICBjb25zdCB7IGZpbGVzIH0gPSB0aGlzLmlucHV0XG5cbiAgICAgICAgICBpZiAoIWZpbGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5pc0ZpbGVEaWFsb2dBY3RpdmUgPSBmYWxzZVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9uRmlsZURpYWxvZ0NhbmNlbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICBvbkZpbGVEaWFsb2dDYW5jZWwoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSwgMzAwKVxuICAgIH1cbiAgfVxuXG4gIG9uRm9jdXMgPSBldnQgPT4ge1xuICAgIGNvbnN0IHsgb25Gb2N1cyB9ID0gdGhpcy5wcm9wc1xuICAgIGlmIChvbkZvY3VzKSB7XG4gICAgICBvbkZvY3VzLmNhbGwodGhpcywgZXZ0KVxuICAgIH1cbiAgICBpZiAoIWV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGlzRm9jdXNlZDogdHJ1ZSB9KVxuICAgIH1cbiAgfVxuXG4gIG9uQmx1ciA9IGV2dCA9PiB7XG4gICAgY29uc3QgeyBvbkJsdXIgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAob25CbHVyKSB7XG4gICAgICBvbkJsdXIuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuICAgIGlmICghZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgaXNGb2N1c2VkOiBmYWxzZSB9KVxuICAgIH1cbiAgfVxuXG4gIG9uS2V5RG93biA9IGV2dCA9PiB7XG4gICAgY29uc3QgeyBvbktleURvd24gfSA9IHRoaXMucHJvcHNcbiAgICBpZiAoIXRoaXMubm9kZS5pc0VxdWFsTm9kZShldnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKG9uS2V5RG93bikge1xuICAgICAgb25LZXlEb3duLmNhbGwodGhpcywgZXZ0KVxuICAgIH1cblxuICAgIGlmICghZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpICYmIChldnQua2V5Q29kZSA9PT0gMzIgfHwgZXZ0LmtleUNvZGUgPT09IDEzKSkge1xuICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICAgIHRoaXMub3BlbigpXG4gICAgfVxuICB9XG5cbiAgY29tcG9zZUhhbmRsZXIgPSBoYW5kbGVyID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG4gICAgcmV0dXJuIGhhbmRsZXJcbiAgfVxuXG4gIGdldFJvb3RQcm9wcyA9ICh7XG4gICAgcmVmS2V5ID0gJ3JlZicsXG4gICAgb25LZXlEb3duLFxuICAgIG9uRm9jdXMsXG4gICAgb25CbHVyLFxuICAgIG9uQ2xpY2ssXG4gICAgb25EcmFnU3RhcnQsXG4gICAgb25EcmFnRW50ZXIsXG4gICAgb25EcmFnT3ZlcixcbiAgICBvbkRyYWdMZWF2ZSxcbiAgICBvbkRyb3AsXG4gICAgLi4ucmVzdFxuICB9ID0ge30pID0+ICh7XG4gICAgb25LZXlEb3duOiB0aGlzLmNvbXBvc2VIYW5kbGVyKFxuICAgICAgb25LZXlEb3duID8gY29tcG9zZUV2ZW50SGFuZGxlcnMob25LZXlEb3duLCB0aGlzLm9uS2V5RG93bikgOiB0aGlzLm9uS2V5RG93blxuICAgICksXG4gICAgb25Gb2N1czogdGhpcy5jb21wb3NlSGFuZGxlcihcbiAgICAgIG9uRm9jdXMgPyBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkZvY3VzLCB0aGlzLm9uRm9jdXMpIDogdGhpcy5vbkZvY3VzXG4gICAgKSxcbiAgICBvbkJsdXI6IHRoaXMuY29tcG9zZUhhbmRsZXIob25CbHVyID8gY29tcG9zZUV2ZW50SGFuZGxlcnMob25CbHVyLCB0aGlzLm9uQmx1cikgOiB0aGlzLm9uQmx1ciksXG4gICAgb25DbGljazogdGhpcy5jb21wb3NlSGFuZGxlcihcbiAgICAgIG9uQ2xpY2sgPyBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkNsaWNrLCB0aGlzLm9uQ2xpY2spIDogdGhpcy5vbkNsaWNrXG4gICAgKSxcbiAgICBvbkRyYWdTdGFydDogdGhpcy5jb21wb3NlSGFuZGxlcihcbiAgICAgIG9uRHJhZ1N0YXJ0ID8gY29tcG9zZUV2ZW50SGFuZGxlcnMob25EcmFnU3RhcnQsIHRoaXMub25EcmFnU3RhcnQpIDogdGhpcy5vbkRyYWdTdGFydFxuICAgICksXG4gICAgb25EcmFnRW50ZXI6IHRoaXMuY29tcG9zZUhhbmRsZXIoXG4gICAgICBvbkRyYWdFbnRlciA/IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uRHJhZ0VudGVyLCB0aGlzLm9uRHJhZ0VudGVyKSA6IHRoaXMub25EcmFnRW50ZXJcbiAgICApLFxuICAgIG9uRHJhZ092ZXI6IHRoaXMuY29tcG9zZUhhbmRsZXIoXG4gICAgICBvbkRyYWdPdmVyID8gY29tcG9zZUV2ZW50SGFuZGxlcnMob25EcmFnT3ZlciwgdGhpcy5vbkRyYWdPdmVyKSA6IHRoaXMub25EcmFnT3ZlclxuICAgICksXG4gICAgb25EcmFnTGVhdmU6IHRoaXMuY29tcG9zZUhhbmRsZXIoXG4gICAgICBvbkRyYWdMZWF2ZSA/IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uRHJhZ0xlYXZlLCB0aGlzLm9uRHJhZ0xlYXZlKSA6IHRoaXMub25EcmFnTGVhdmVcbiAgICApLFxuICAgIG9uRHJvcDogdGhpcy5jb21wb3NlSGFuZGxlcihvbkRyb3AgPyBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkRyb3AsIHRoaXMub25Ecm9wKSA6IHRoaXMub25Ecm9wKSxcbiAgICBbcmVmS2V5XTogdGhpcy5zZXROb2RlUmVmLFxuICAgIHRhYkluZGV4OiB0aGlzLnByb3BzLmRpc2FibGVkID8gLTEgOiAwLFxuICAgIC4uLnJlc3RcbiAgfSlcblxuICBnZXRJbnB1dFByb3BzID0gKHsgcmVmS2V5ID0gJ3JlZicsIG9uQ2hhbmdlLCBvbkNsaWNrLCAuLi5yZXN0IH0gPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgYWNjZXB0LCBtdWx0aXBsZSwgbmFtZSB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGlucHV0UHJvcHMgPSB7XG4gICAgICBhY2NlcHQsXG4gICAgICB0eXBlOiAnZmlsZScsXG4gICAgICBzdHlsZTogeyBkaXNwbGF5OiAnbm9uZScgfSxcbiAgICAgIG11bHRpcGxlOiBzdXBwb3J0TXVsdGlwbGUgJiYgbXVsdGlwbGUsXG4gICAgICBvbkNoYW5nZTogY29tcG9zZUV2ZW50SGFuZGxlcnMob25DaGFuZ2UsIHRoaXMub25Ecm9wKSxcbiAgICAgIG9uQ2xpY2s6IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uQ2xpY2ssIHRoaXMub25JbnB1dEVsZW1lbnRDbGljayksXG4gICAgICBhdXRvQ29tcGxldGU6ICdvZmYnLFxuICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgW3JlZktleV06IHRoaXMuc2V0SW5wdXRSZWZcbiAgICB9XG4gICAgaWYgKG5hbWUgJiYgbmFtZS5sZW5ndGgpIHtcbiAgICAgIGlucHV0UHJvcHMubmFtZSA9IG5hbWVcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmlucHV0UHJvcHMsXG4gICAgICAuLi5yZXN0XG4gICAgfVxuICB9XG5cbiAgc2V0Tm9kZVJlZiA9IG5vZGUgPT4ge1xuICAgIHRoaXMubm9kZSA9IG5vZGVcbiAgfVxuXG4gIHNldElucHV0UmVmID0gaW5wdXQgPT4ge1xuICAgIHRoaXMuaW5wdXQgPSBpbnB1dFxuICB9XG5cbiAgLyoqXG4gICAqIE9wZW4gc3lzdGVtIGZpbGUgdXBsb2FkIGRpYWxvZy5cbiAgICpcbiAgICogQHB1YmxpY1xuICAgKi9cbiAgb3BlbiA9ICgpID0+IHtcbiAgICB0aGlzLmlzRmlsZURpYWxvZ0FjdGl2ZSA9IHRydWVcbiAgICBpZiAodGhpcy5pbnB1dCkge1xuICAgICAgdGhpcy5pbnB1dC52YWx1ZSA9IG51bGxcbiAgICAgIHRoaXMuaW5wdXQuY2xpY2soKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IGNoaWxkcmVuLCBtdWx0aXBsZSwgZGlzYWJsZWQgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7IGlzRHJhZ0FjdGl2ZSwgaXNGb2N1c2VkLCBkcmFnZ2VkRmlsZXMsIGFjY2VwdGVkRmlsZXMsIHJlamVjdGVkRmlsZXMgfSA9IHRoaXMuc3RhdGVcblxuICAgIGNvbnN0IGZpbGVzQ291bnQgPSBkcmFnZ2VkRmlsZXMubGVuZ3RoXG4gICAgY29uc3QgaXNNdWx0aXBsZUFsbG93ZWQgPSBtdWx0aXBsZSB8fCBmaWxlc0NvdW50IDw9IDFcbiAgICBjb25zdCBpc0RyYWdBY2NlcHQgPSBmaWxlc0NvdW50ID4gMCAmJiBhbGxGaWxlc0FjY2VwdGVkKGRyYWdnZWRGaWxlcywgdGhpcy5wcm9wcy5hY2NlcHQpXG4gICAgY29uc3QgaXNEcmFnUmVqZWN0ID0gZmlsZXNDb3VudCA+IDAgJiYgKCFpc0RyYWdBY2NlcHQgfHwgIWlzTXVsdGlwbGVBbGxvd2VkKVxuXG4gICAgcmV0dXJuIGNoaWxkcmVuKHtcbiAgICAgIGlzRHJhZ0FjdGl2ZSxcbiAgICAgIGlzRHJhZ0FjY2VwdCxcbiAgICAgIGlzRHJhZ1JlamVjdCxcbiAgICAgIGRyYWdnZWRGaWxlcyxcbiAgICAgIGFjY2VwdGVkRmlsZXMsXG4gICAgICByZWplY3RlZEZpbGVzLFxuICAgICAgaXNGb2N1c2VkOiBpc0ZvY3VzZWQgJiYgIWRpc2FibGVkLFxuICAgICAgZ2V0Um9vdFByb3BzOiB0aGlzLmdldFJvb3RQcm9wcyxcbiAgICAgIGdldElucHV0UHJvcHM6IHRoaXMuZ2V0SW5wdXRQcm9wcyxcbiAgICAgIG9wZW46IHRoaXMub3BlblxuICAgIH0pXG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRHJvcHpvbmVcblxuRHJvcHpvbmUucHJvcFR5cGVzID0ge1xuICAvKipcbiAgICogQWxsb3cgc3BlY2lmaWMgdHlwZXMgb2YgZmlsZXMuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vb2tvbmV0L2F0dHItYWNjZXB0IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICAgKiBLZWVwIGluIG1pbmQgdGhhdCBtaW1lIHR5cGUgZGV0ZXJtaW5hdGlvbiBpcyBub3QgcmVsaWFibGUgYWNyb3NzIHBsYXRmb3Jtcy4gQ1NWIGZpbGVzLFxuICAgKiBmb3IgZXhhbXBsZSwgYXJlIHJlcG9ydGVkIGFzIHRleHQvcGxhaW4gdW5kZXIgbWFjT1MgYnV0IGFzIGFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCB1bmRlclxuICAgKiBXaW5kb3dzLiBJbiBzb21lIGNhc2VzIHRoZXJlIG1pZ2h0IG5vdCBiZSBhIG1pbWUgdHlwZSBzZXQgYXQgYWxsLlxuICAgKiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdC1kcm9wem9uZS9yZWFjdC1kcm9wem9uZS9pc3N1ZXMvMjc2XG4gICAqL1xuICBhY2NlcHQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zdHJpbmcpXSksXG5cbiAgLyoqXG4gICAqIFJlbmRlciBmdW5jdGlvbiB0aGF0IHJlbmRlcnMgdGhlIGFjdHVhbCBjb21wb25lbnRcbiAgICpcbiAgICogQHBhcmFtIHtPYmplY3R9IHByb3BzXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IHByb3BzLmdldFJvb3RQcm9wcyBSZXR1cm5zIHRoZSBwcm9wcyB5b3Ugc2hvdWxkIGFwcGx5IHRvIHRoZSByb290IGRyb3AgY29udGFpbmVyIHlvdSByZW5kZXJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvcHMuZ2V0SW5wdXRQcm9wcyBSZXR1cm5zIHRoZSBwcm9wcyB5b3Ugc2hvdWxkIGFwcGx5IHRvIGhpZGRlbiBmaWxlIGlucHV0IHlvdSByZW5kZXJcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvcHMub3BlbiBPcGVuIHRoZSBuYXRpdmUgZmlsZSBzZWxlY3Rpb24gZGlhbG9nXG4gICAqIEBwYXJhbSB7Qm9vbGVhbn0gcHJvcHMuaXNGb2N1c2VkIERyb3B6b25lIGFyZWEgaXMgaW4gZm9jdXNcbiAgICogQHBhcmFtIHtCb29sZWFufSBwcm9wcy5pc0RyYWdBY3RpdmUgQWN0aXZlIGRyYWcgaXMgaW4gcHJvZ3Jlc3NcbiAgICogQHBhcmFtIHtCb29sZWFufSBwcm9wcy5pc0RyYWdBY2NlcHQgRHJhZ2dlZCBmaWxlcyBhcmUgYWNjZXB0ZWRcbiAgICogQHBhcmFtIHtCb29sZWFufSBwcm9wcy5pc0RyYWdSZWplY3QgU29tZSBkcmFnZ2VkIGZpbGVzIGFyZSByZWplY3RlZFxuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcy5kcmFnZ2VkRmlsZXMgRmlsZXMgaW4gYWN0aXZlIGRyYWdcbiAgICogQHBhcmFtIHtBcnJheX0gcHJvcHMuYWNjZXB0ZWRGaWxlcyBBY2NlcHRlZCBmaWxlc1xuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcy5yZWplY3RlZEZpbGVzIFJlamVjdGVkIGZpbGVzXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIERpc2FsbG93IGNsaWNraW5nIG9uIHRoZSBkcm9wem9uZSBjb250YWluZXIgdG8gb3BlbiBmaWxlIGRpYWxvZ1xuICAgKi9cbiAgZGlzYWJsZUNsaWNrOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogRW5hYmxlL2Rpc2FibGUgdGhlIGRyb3B6b25lIGVudGlyZWx5XG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIElmIGZhbHNlLCBhbGxvdyBkcm9wcGVkIGl0ZW1zIHRvIHRha2Ugb3ZlciB0aGUgY3VycmVudCBicm93c2VyIHdpbmRvd1xuICAgKi9cbiAgcHJldmVudERyb3BPbkRvY3VtZW50OiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogQWxsb3cgZHJvcHBpbmcgbXVsdGlwbGUgZmlsZXNcbiAgICovXG4gIG11bHRpcGxlOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogYG5hbWVgIGF0dHJpYnV0ZSBmb3IgdGhlIGlucHV0IHRhZ1xuICAgKi9cbiAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogTWF4aW11bSBmaWxlIHNpemUgKGluIGJ5dGVzKVxuICAgKi9cbiAgbWF4U2l6ZTogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogTWluaW11bSBmaWxlIHNpemUgKGluIGJ5dGVzKVxuICAgKi9cbiAgbWluU2l6ZTogUHJvcFR5cGVzLm51bWJlcixcblxuICAvKipcbiAgICogZ2V0RGF0YVRyYW5zZmVySXRlbXMgaGFuZGxlclxuICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudFxuICAgKiBAcmV0dXJucyB7QXJyYXl9IGFycmF5IG9mIEZpbGUgb2JqZWN0c1xuICAgKi9cbiAgZ2V0RGF0YVRyYW5zZmVySXRlbXM6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkNsaWNrIGNhbGxiYWNrXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XG4gICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25Gb2N1cyBjYWxsYmFja1xuICAgKi9cbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uQmx1ciBjYWxsYmFja1xuICAgKi9cbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25LZXlEb3duIGNhbGxiYWNrXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBUaGUgYG9uRHJvcGAgbWV0aG9kIHRoYXQgYWNjZXB0cyB0d28gYXJndW1lbnRzLlxuICAgKiBUaGUgZmlyc3QgYXJndW1lbnQgcmVwcmVzZW50cyB0aGUgYWNjZXB0ZWQgZmlsZXMgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgdGhlIHJlamVjdGVkIGZpbGVzLlxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIGZ1bmN0aW9uIG9uRHJvcChhY2NlcHRlZEZpbGVzLCByZWplY3RlZEZpbGVzKSB7XG4gICAqICAgLy8gZG8gc3R1ZmYgd2l0aCBmaWxlcy4uLlxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBGaWxlcyBhcmUgYWNjZXB0ZWQgb3IgcmVqZWN0ZWQgYmFzZWQgb24gdGhlIGBhY2NlcHRgIHByb3AuXG4gICAqIFRoaXMgbXVzdCBiZSBhIHZhbGlkIFtNSU1FIHR5cGVdKGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvbWVkaWEtdHlwZXMvbWVkaWEtdHlwZXMueGh0bWwpIGFjY29yZGluZyB0byBbaW5wdXQgZWxlbWVudCBzcGVjaWZpY2F0aW9uXShodHRwczovL3d3dy53My5vcmcvd2lraS9IVE1ML0VsZW1lbnRzL2lucHV0L2ZpbGUpIG9yIGEgdmFsaWQgZmlsZSBleHRlbnNpb24uXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgYG9uRHJvcGAgY2FsbGJhY2sgd2lsbCBhbHdheXMgYmUgY2FsbGVkIHJlZ2FyZGxlc3MgaWYgdGhlIGRyb3BwZWQgZmlsZXMgd2VyZSBhY2NlcHRlZCBvciByZWplY3RlZC5cbiAgICogWW91IGNhbiB1c2UgdGhlIGBvbkRyb3BBY2NlcHRlZGAvYG9uRHJvcFJlamVjdGVkYCBwcm9wcyBpZiB5b3UnZCBsaWtlIHRvIHJlYWN0IHRvIGEgc3BlY2lmaWMgZXZlbnQgaW5zdGVhZCBvZiB0aGUgYG9uRHJvcGAgcHJvcC5cbiAgICpcbiAgICogVGhlIGBvbkRyb3BgIGNhbGxiYWNrIHdpbGwgcHJvdmlkZSB5b3Ugd2l0aCBhbiBhcnJheSBvZiBbRmlsZXNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GaWxlKSB3aGljaCB5b3UgY2FuIHRoZW4gcHJvY2VzcyBhbmQgc2VuZCB0byBhIHNlcnZlci5cbiAgICogRm9yIGV4YW1wbGUsIHdpdGggW1N1cGVyQWdlbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS92aXNpb25tZWRpYS9zdXBlcmFnZW50KSBhcyBhIGh0dHAvYWpheCBsaWJyYXJ5OlxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIGZ1bmN0aW9uIG9uRHJvcChhY2NlcHRlZEZpbGVzKSB7XG4gICAqICAgY29uc3QgcmVxID0gcmVxdWVzdC5wb3N0KCcvdXBsb2FkJylcbiAgICogICBhY2NlcHRlZEZpbGVzLmZvckVhY2goZmlsZSA9PiB7XG4gICAqICAgICByZXEuYXR0YWNoKGZpbGUubmFtZSwgZmlsZSlcbiAgICogICB9KVxuICAgKiAgIHJlcS5lbmQoY2FsbGJhY2spXG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBvbkRyb3A6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyb3BBY2NlcHRlZCBjYWxsYmFja1xuICAgKi9cbiAgb25Ecm9wQWNjZXB0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyb3BSZWplY3RlZCBjYWxsYmFja1xuICAgKi9cbiAgb25Ecm9wUmVqZWN0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyYWdTdGFydCBjYWxsYmFja1xuICAgKi9cbiAgb25EcmFnU3RhcnQ6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyYWdFbnRlciBjYWxsYmFja1xuICAgKi9cbiAgb25EcmFnRW50ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyYWdPdmVyIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyYWdPdmVyOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25EcmFnTGVhdmUgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJhZ0xlYXZlOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogUHJvdmlkZSBhIGNhbGxiYWNrIG9uIGNsaWNraW5nIHRoZSBjYW5jZWwgYnV0dG9uIG9mIHRoZSBmaWxlIGRpYWxvZ1xuICAgKi9cbiAgb25GaWxlRGlhbG9nQ2FuY2VsOiBQcm9wVHlwZXMuZnVuY1xufVxuXG5Ecm9wem9uZS5kZWZhdWx0UHJvcHMgPSB7XG4gIHByZXZlbnREcm9wT25Eb2N1bWVudDogdHJ1ZSxcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBkaXNhYmxlQ2xpY2s6IGZhbHNlLFxuICBtdWx0aXBsZTogdHJ1ZSxcbiAgbWF4U2l6ZTogSW5maW5pdHksXG4gIG1pblNpemU6IDAsXG4gIGdldERhdGFUcmFuc2Zlckl0ZW1zOiBkZWZhdWx0R2V0RGF0YVRyYW5zZmVySXRlbVxufVxuIl0sIm5hbWVzIjpbIm1vZHVsZSIsInQiLCJuIiwiZSIsInIiLCJleHBvcnRzIiwibyIsImkiLCJsIiwiY2FsbCIsIm0iLCJjIiwiZCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsImdldCIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsIndpbmRvdyIsIk1hdGgiLCJzZWxmIiwiRnVuY3Rpb24iLCJfX2ciLCJ2ZXJzaW9uIiwiX19lIiwiYSIsInRvU3RyaW5nIiwic2xpY2UiLCJTeW1ib2wiLCJ1Iiwic3RvcmUiLCJmIiwidiIsIkYiLCJ5IiwiRyIsImgiLCJTIiwiUCIsIngiLCJCIiwiZyIsImIiLCJVIiwiY29yZSIsIlciLCJSIiwicmFuZG9tIiwiY29uY2F0IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJUeXBlRXJyb3IiLCJtaW4iLCJBcnJheSIsImlzQXJyYXkiLCJzcGxpdCIsIm5hbWUiLCJ0eXBlIiwicmVwbGFjZSIsInNvbWUiLCJ0cmltIiwiY2hhckF0IiwidG9Mb3dlckNhc2UiLCJlbmRzV2l0aCIsInRoaXMiLCJ2YWx1ZSIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInZhbHVlT2YiLCJ3cml0YWJsZSIsImluc3BlY3RTb3VyY2UiLCJqb2luIiwiU3RyaW5nIiwibGVuZ3RoIiwiXyIsInciLCJwdXNoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJjZWlsIiwiZmxvb3IiLCJpc05hTiIsImNvbnN0cnVjdG9yIiwic3VwcG9ydE11bHRpcGxlIiwiZmlsZUFjY2VwdGVkIiwiZmlsZSIsImFjY2VwdCIsImFjY2VwdHMiLCJpc0RyYWdEYXRhV2l0aEZpbGVzIiwiZXZ0IiwiZGF0YVRyYW5zZmVyIiwiZXZlcnkiLCJ0eXBlcyIsIm9uRG9jdW1lbnREcmFnT3ZlciIsInByZXZlbnREZWZhdWx0IiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJmbnMiLCJldmVudCIsImFyZ3MiLCJmbiIsImRlZmF1bHRQcmV2ZW50ZWQiLCJEcm9wem9uZSIsInN0YXRlIiwiaXNGaWxlRGlhbG9nQWN0aXZlIiwib25Eb2N1bWVudERyb3AiLCJfdGhpcyIsIm5vZGUiLCJjb250YWlucyIsInRhcmdldCIsImRyYWdUYXJnZXRzIiwib25EcmFnU3RhcnQiLCJwZXJzaXN0IiwicHJvcHMiLCJvbkRyYWdFbnRlciIsImluZGV4T2YiLCJyZXNvbHZlIiwiZ2V0RGF0YVRyYW5zZmVySXRlbXMiLCJ0aGVuIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJzZXRTdGF0ZSIsIm9uRHJhZ092ZXIiLCJvbkRyYWdMZWF2ZSIsImZpbHRlciIsImVsIiwib25Ecm9wIiwib25Ecm9wQWNjZXB0ZWQiLCJvbkRyb3BSZWplY3RlZCIsIm11bHRpcGxlIiwiZHJhZ2dlZEZpbGVzIiwiYWNjZXB0ZWRGaWxlcyIsInJlamVjdGVkRmlsZXMiLCJmb3JFYWNoIiwibWF4U2l6ZSIsIm1pblNpemUiLCJzaXplIiwiZmlsZU1hdGNoU2l6ZSIsInNwbGljZSIsIm9uQ2xpY2siLCJkaXNhYmxlQ2xpY2siLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJzdG9wUHJvcGFnYXRpb24iLCJ1c2VyQWdlbnQiLCJuYXZpZ2F0b3IiLCJpc0llIiwiaXNFZGdlIiwiaXNJZU9yRWRnZSIsIm9wZW4iLCJvbklucHV0RWxlbWVudENsaWNrIiwib25GaWxlRGlhbG9nQ2FuY2VsIiwiaW5wdXQiLCJmaWxlcyIsIm9uRm9jdXMiLCJpc0ZvY3VzZWQiLCJvbkJsdXIiLCJvbktleURvd24iLCJpc0VxdWFsTm9kZSIsImtleUNvZGUiLCJjb21wb3NlSGFuZGxlciIsImRpc2FibGVkIiwiaGFuZGxlciIsImdldFJvb3RQcm9wcyIsInJlZktleSIsInJlc3QiLCJzZXROb2RlUmVmIiwiZ2V0SW5wdXRQcm9wcyIsIm9uQ2hhbmdlIiwiaW5wdXRQcm9wcyIsImRpc3BsYXkiLCJzZXRJbnB1dFJlZiIsImNsaWNrIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcmV2ZW50RHJvcE9uRG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNoaWxkcmVuIiwiaXNEcmFnQWN0aXZlIiwiZmlsZXNDb3VudCIsImlzTXVsdGlwbGVBbGxvd2VkIiwiaXNEcmFnQWNjZXB0IiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib25lT2ZUeXBlIiwic3RyaW5nIiwiYXJyYXlPZiIsImZ1bmMiLCJib29sIiwibnVtYmVyIiwiZGVmYXVsdFByb3BzIiwiSW5m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
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("react"),require("prop-types")):"function"==typeof define&&define.amd?define(["react","prop-types"],n):e.Dropzone=n(e.React,e.PropTypes)}(this,function(e,n){"use strict";e=e&&e.hasOwnProperty("default")?e.default:e,n=n&&n.hasOwnProperty("default")?n.default:n;var t,r,o=(function(e){e.exports=function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var t={};return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},n.p="",n(n.s=13)}([function(e,n){var t=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=t)},function(e,n){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,n){var t=e.exports={version:"2.5.0"};"number"==typeof __e&&(__e=t)},function(e,n,t){e.exports=!t(4)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,n){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,n){var t={}.toString;e.exports=function(e){return t.call(e).slice(8,-1)}},function(e,n,t){var r=t(32)("wks"),o=t(9),i=t(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,n,t){var r=t(0),o=t(2),i=t(8),a=t(22),u=t(10),c=function(e,n,t){var s,p,f,l,d=e&c.F,g=e&c.G,v=e&c.S,y=e&c.P,h=e&c.B,m=g?r:v?r[n]||(r[n]={}):(r[n]||{}).prototype,D=g?o:o[n]||(o[n]={}),b=D.prototype||(D.prototype={});for(s in g&&(t=n),t)f=((p=!d&&m&&void 0!==m[s])?m:t)[s],l=h&&p?u(f,r):y&&"function"==typeof f?u(Function.call,f):f,m&&a(m,s,f,e&c.U),D[s]!=f&&i(D,s,l),y&&b[s]!=f&&(b[s]=f)};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,n,t){var r=t(16),o=t(21);e.exports=t(3)?function(e,n,t){return r.f(e,n,o(1,t))}:function(e,n,t){return e[n]=t,e}},function(e,n){var t=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++t+r).toString(36))}},function(e,n,t){var r=t(24);e.exports=function(e,n,t){if(r(e),void 0===n)return e;switch(t){case 1:return function(t){return e.call(n,t)};case 2:return function(t,r){return e.call(n,t,r)};case 3:return function(t,r,o){return e.call(n,t,r,o)}}return function(){return e.apply(n,arguments)}}},function(e,n){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,n,t){var r=t(28),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,n,t){n.__esModule=!0,n.default=function(e,n){if(e&&n){var t=Array.isArray(n)?n:n.split(","),r=e.name||"",o=e.type||"",i=o.replace(/\/.*$/,"");return t.some(function(e){var n=e.trim();return"."===n.charAt(0)?r.toLowerCase().endsWith(n.toLowerCase()):n.endsWith("/*")?i===n.replace(/\/.*$/,""):o===n})}return!0},t(14),t(34)},function(e,n,t){t(15),e.exports=t(2).Array.some},function(e,n,t){var r=t(7),o=t(25)(3);r(r.P+r.F*!t(33)([].some,!0),"Array",{some:function(e){return o(this,e,arguments[1])}})},function(e,n,t){var r=t(17),o=t(18),i=t(20),a=Object.defineProperty;n.f=t(3)?Object.defineProperty:function(e,n,t){if(r(e),n=i(n,!0),r(t),o)try{return a(e,n,t)}catch(e){}if("get"in t||"set"in t)throw TypeError("Accessors not supported!");return"value"in t&&(e[n]=t.value),e}},function(e,n,t){var r=t(1);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,n,t){e.exports=!t(3)&&!t(4)(function(){return 7!=Object.defineProperty(t(19)("div"),"a",{get:function(){return 7}}).a})},function(e,n,t){var r=t(1),o=t(0).document,i=r(o)&&r(o.createElement);e.exports=function(e){return i?o.createElement(e):{}}},function(e,n,t){var r=t(1);e.exports=function(e,n){if(!r(e))return e;var t,o;if(n&&"function"==typeof(t=e.toString)&&!r(o=t.call(e)))return o;if("function"==typeof(t=e.valueOf)&&!r(o=t.call(e)))return o;if(!n&&"function"==typeof(t=e.toString)&&!r(o=t.call(e)))return o;throw TypeError("Can't convert object to primitive value")}},function(e,n){e.exports=function(e,n){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:n}}},function(e,n,t){var r=t(0),o=t(8),i=t(23),a=t(9)("src"),u=Function.toString,c=(""+u).split("toString");t(2).inspectSource=function(e){return u.call(e)},(e.exports=function(e,n,t,u){var s="function"==typeof t;s&&(i(t,"name")||o(t,"name",n)),e[n]!==t&&(s&&(i(t,a)||o(t,a,e[n]?""+e[n]:c.join(String(n)))),e===r?e[n]=t:u?e[n]?e[n]=t:o(e,n,t):(delete e[n],o(e,n,t)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[a]||u.call(this)})},function(e,n){var t={}.hasOwnProperty;e.exports=function(e,n){return t.call(e,n)}},function(e,n){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,n,t){var r=t(10),o=t(26),i=t(27),a=t(12),u=t(29);e.exports=function(e,n){var t=1==e,c=2==e,s=3==e,p=4==e,f=6==e,l=5==e||f,d=n||u;return function(n,u,g){for(var v,y,h=i(n),m=o(h),D=r(u,g,3),b=a(m.length),x=0,O=t?d(n,b):c?d(n,0):void 0;b>x;x++)if((l||x in m)&&(y=D(v=m[x],x,h),e))if(t)O[x]=y;else if(y)switch(e){case 3:return!0;case 5:return v;case 6:return x;case 2:O.push(v)}else if(p)return!1;return f?-1:s||p?p:O}}},function(e,n,t){var r=t(5);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,n,t){var r=t(11);e.exports=function(e){return Object(r(e))}},function(e,n){var t=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:t)(e)}},function(e,n,t){var r=t(30);e.exports=function(e,n){return new(r(e))(n)}},function(e,n,t){var r=t(1),o=t(31),i=t(6)("species");e.exports=function(e){var n;return o(e)&&("function"!=typeof(n=e.constructor)||n!==Array&&!o(n.prototype)||(n=void 0),r(n)&&null===(n=n[i])&&(n=void 0)),void 0===n?Array:n}},function(e,n,t){var r=t(5);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,n,t){var r=t(0),o=r["__core-js_shared__"]||(r["__core-js_shared__"]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,n,t){var r=t(4);e.exports=function(e,n){return!!e&&r(function(){n?e.call(null,function(){},1):e.call(null)})}},function(e,n,t){t(35),e.exports=t(2).String.endsWith},function(e,n,t){var r=t(7),o=t(12),i=t(36),a="".endsWith;r(r.P+r.F*t(38)("endsWith"),"String",{endsWith:function(e){var n=i(this,e,"endsWith"),t=arguments.length>1?arguments[1]:void 0,r=o(n.length),u=void 0===t?r:Math.min(o(t),r),c=String(e);return a?a.call(n,c,u):n.slice(u-c.length,u)===c}})},function(e,n,t){var r=t(37),o=t(11);e.exports=function(e,n,t){if(r(n))throw TypeError("String#"+t+" doesn't accept regex!");return String(o(e))}},function(e,n,t){var r=t(1),o=t(5),i=t(6)("match");e.exports=function(e){var n;return r(e)&&(void 0!==(n=e[i])?!!n:"RegExp"==o(e))}},function(e,n,t){var r=t(6)("match");e.exports=function(e){var n=/./;try{"/./"[e](n)}catch(t){try{return n[r]=!1,!"/./"[e](n)}catch(e){}}return!0}}])}(t={exports:{}},t.exports),t.exports),i=(r=o)&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r,a=function(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")},u=function(){function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(n,t,r){return t&&e(n.prototype,t),r&&e(n,r),n}}(),c=function(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e},s=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])}return e},p=function(e,n){var t={};for(var r in e)n.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},f=function(e,n){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!n||"object"!=typeof n&&"function"!=typeof n?e:n},l=function(e){if(Array.isArray(e)){for(var n=0,t=Array(e.length);n<e.length;n++)t[n]=e[n];return t}return Array.from(e)},d="undefined"==typeof document||!document||!document.createElement||"multiple"in document.createElement("input");function g(e,n){return"application/x-moz-file"===e.type||i(e,n)}function v(e){return!e.dataTransfer||Array.prototype.some.call(e.dataTransfer.types,function(e){return"Files"===e||"application/x-moz-file"===e})}function y(e){e.preventDefault()}function h(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];return function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),o=1;o<t;o++)r[o-1]=arguments[o];return n.some(function(n){return n&&n.apply(void 0,[e].concat(r)),e.defaultPrevented})}}var m=function(n){function t(){var e,n,r;a(this,t);for(var o=arguments.length,i=Array(o),u=0;u<o;u++)i[u]=arguments[u];return n=r=f(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),r.state={draggedFiles:[],acceptedFiles:[],rejectedFiles:[]},r.isFileDialogActive=!1,r.onDocumentDrop=function(e){r.node&&r.node.contains(e.target)||(e.preventDefault(),r.dragTargets=[])},r.onDragStart=function(e){e.persist(),r.props.onDragStart&&v(e)&&r.props.onDragStart.call(r,e)},r.onDragEnter=function(e){e.preventDefault(),-1===r.dragTargets.indexOf(e.target)&&r.dragTargets.push(e.target),e.persist(),v(e)&&(Promise.resolve(r.props.getDataTransferItems(e)).then(function(n){e.isPropagationStopped()||r.setState({draggedFiles:n,isDragActive:!0})}),r.props.onDragEnter&&r.props.onDragEnter.call(r,e))},r.onDragOver=function(e){return e.preventDefault(),e.persist(),r.props.onDragOver&&v(e)&&r.props.onDragOver.call(r,e),!1},r.onDragLeave=function(e){e.preventDefault(),e.persist(),r.dragTargets=r.dragTargets.filter(function(n){return n!==e.target&&r.node.contains(n)}),r.dragTargets.length>0||(r.setState({isDragActive:!1,draggedFiles:[]}),r.props.onDragLeave&&v(e)&&r.props.onDragLeave.call(r,e))},r.onDrop=function(e){var n=r.props,t=n.onDrop,o=n.onDropAccepted,i=n.onDropRejected,a=n.multiple,u=n.accept,c=n.getDataTransferItems;e.preventDefault(),e.persist(),r.dragTargets=[],r.isFileDialogActive=!1,r.draggedFiles=null,r.setState({isDragActive:!1,draggedFiles:[]}),v(e)&&Promise.resolve(c(e)).then(function(n){var c=[],s=[];e.isPropagationStopped()||(n.forEach(function(e){g(e,u)&&function(e,n,t){return e.size<=n&&e.size>=t}(e,r.props.maxSize,r.props.minSize)?c.push(e):s.push(e)}),!a&&c.length>1&&s.push.apply(s,l(c.splice(0))),r.setState({acceptedFiles:c,rejectedFiles:s},function(){t&&t.call(r,c,s,e),s.length>0&&i&&i.call(r,s,e),c.length>0&&o&&o.call(r,c,e)}))})},r.onClick=function(e){var n=r.props,t=n.onClick,o=n.disableClick;t&&t.call(r,e),o||e.isDefaultPrevented()||(e.stopPropagation(),!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)}()?r.open():setTimeout(r.open,0))},r.onInputElementClick=function(e){e.stopPropagation()},r.onFileDialogCancel=function(){var e=r.props.onFileDialogCancel;r.isFileDialogActive&&setTimeout(function(){null!=r.input&&(r.input.files.length||(r.isFileDialogActive=!1,"function"==typeof e&&e()))},300)},r.onFocus=function(e){var n=r.props.onFocus;n&&n.call(r,e),e.isDefaultPrevented()||r.setState({isFocused:!0})},r.onBlur=function(e){var n=r.props.onBlur;n&&n.call(r,e),e.isDefaultPrevented()||r.setState({isFocused:!1})},r.onKeyDown=function(e){var n=r.props.onKeyDown;r.node.isEqualNode(e.target)&&(n&&n.call(r,e),e.isDefaultPrevented()||32!==e.keyCode&&13!==e.keyCode||(e.preventDefault(),r.open()))},r.composeHandler=function(e){return r.props.disabled?null:e},r.getRootProps=function(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=n.refKey,o=void 0===t?"ref":t,i=n.onKeyDown,a=n.onFocus,u=n.onBlur,f=n.onClick,l=n.onDragStart,d=n.onDragEnter,g=n.onDragOver,v=n.onDragLeave,y=n.onDrop,m=p(n,["refKey","onKeyDown","onFocus","onBlur","onClick","onDragStart","onDragEnter","onDragOver","onDragLeave","onDrop"]);return s((e={onKeyDown:r.composeHandler(i?h(i,r.onKeyDown):r.onKeyDown),onFocus:r.composeHandler(a?h(a,r.onFocus):r.onFocus),onBlur:r.composeHandler(u?h(u,r.onBlur):r.onBlur),onClick:r.composeHandler(f?h(f,r.onClick):r.onClick),onDragStart:r.composeHandler(l?h(l,r.onDragStart):r.onDragStart),onDragEnter:r.composeHandler(d?h(d,r.onDragEnter):r.onDragEnter),onDragOver:r.composeHandler(g?h(g,r.onDragOver):r.onDragOver),onDragLeave:r.composeHandler(v?h(v,r.onDragLeave):r.onDragLeave),onDrop:r.composeHandler(y?h(y,r.onDrop):r.onDrop)},c(e,o,r.setNodeRef),c(e,"tabIndex",r.props.disabled?-1:0),e),m)},r.getInputProps=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.refKey,t=void 0===n?"ref":n,o=e.onChange,i=e.onClick,a=p(e,["refKey","onChange","onClick"]),u=r.props,f=u.accept,l=u.multiple,g=u.name,v=c({accept:f,type:"file",style:{display:"none"},multiple:d&&l,onChange:h(o,r.onDrop),onClick:h(i,r.onInputElementClick),autoComplete:"off",tabIndex:-1},t,r.setInputRef);return g&&g.length&&(v.name=g),s({},v,a)},r.setNodeRef=function(e){r.node=e},r.setInputRef=function(e){r.input=e},r.open=function(){r.isFileDialogActive=!0,r.input&&(r.input.value=null,r.input.click())},f(r,n)}return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Super expression must either be null or a function, not "+typeof n);e.prototype=Object.create(n&&n.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),n&&(Object.setPrototypeOf?Object.setPrototypeOf(e,n):e.__proto__=n)}(t,e.Component),u(t,[{key:"componentDidMount",value:function(){var e=this.props.preventDropOnDocument;this.dragTargets=[],e&&(document.addEventListener("dragover",y,!1),document.addEventListener("drop",this.onDocumentDrop,!1)),window.addEventListener("focus",this.onFileDialogCancel,!1)}},{key:"componentWillUnmount",value:function(){this.props.preventDropOnDocument&&(document.removeEventListener("dragover",y),document.removeEventListener("drop",this.onDocumentDrop)),window.removeEventListener("focus",this.onFileDialogCancel,!1)}},{key:"render",value:function(){var e,n,t=this.props,r=t.children,o=t.multiple,i=t.disabled,a=this.state,u=a.isDragActive,c=a.isFocused,s=a.draggedFiles,p=a.acceptedFiles,f=a.rejectedFiles,l=s.length,d=o||l<=1,v=l>0&&(e=s,n=this.props.accept,e.every(function(e){return g(e,n)}));return r({isDragActive:u,isDragAccept:v,isDragReject:l>0&&(!v||!d),draggedFiles:s,acceptedFiles:p,rejectedFiles:f,isFocused:c&&!i,getRootProps:this.getRootProps,getInputProps:this.getInputProps,open:this.open})}}]),t}();return m.propTypes={accept:n.oneOfType([n.string,n.arrayOf(n.string)]),children:n.func,disableClick:n.bool,disabled:n.bool,preventDropOnDocument:n.bool,multiple:n.bool,name:n.string,maxSize:n.number,minSize:n.number,getDataTransferItems:n.func,onClick:n.func,onFocus:n.func,onBlur:n.func,onKeyDown:n.func,onDrop:n.func,onDropAccepted:n.func,onDropRejected:n.func,onDragStart:n.func,onDragEnter:n.func,onDragOver:n.func,onDragLeave:n.func,onFileDialogCancel:n.func},m.defaultProps={preventDropOnDocument:!0,disabled:!1,disableClick:!1,multiple:!0,maxSize:1/0,minSize:0,getDataTransferItems:function(e){var n=[];if(e.dataTransfer){var t=e.dataTransfer;t.files&&t.files.length?n=t.files:t.items&&t.items.length&&(n=t.items)}else e.target&&e.target.files&&(n=e.target.files);return Array.prototype.slice.call(n)}},m});
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL25vZGVfbW9kdWxlcy9hdHRyLWFjY2VwdC9kaXN0L2luZGV4LmpzIiwiLi4vc3JjL3V0aWxzL2luZGV4LmpzIiwiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIG4oZSl7aWYocltlXSlyZXR1cm4gcltlXS5leHBvcnRzO3ZhciBvPXJbZV09e2k6ZSxsOiExLGV4cG9ydHM6e319O3JldHVybiB0W2VdLmNhbGwoby5leHBvcnRzLG8sby5leHBvcnRzLG4pLG8ubD0hMCxvLmV4cG9ydHN9dmFyIHI9e307cmV0dXJuIG4ubT10LG4uYz1yLG4uZD1mdW5jdGlvbih0LHIsZSl7bi5vKHQscil8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHIse2NvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLGdldDplfSl9LG4ubj1mdW5jdGlvbih0KXt2YXIgcj10JiZ0Ll9fZXNNb2R1bGU/ZnVuY3Rpb24oKXtyZXR1cm4gdC5kZWZhdWx0fTpmdW5jdGlvbigpe3JldHVybiB0fTtyZXR1cm4gbi5kKHIsXCJhXCIscikscn0sbi5vPWZ1bmN0aW9uKHQsbil7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0LG4pfSxuLnA9XCJcIixuKG4ucz0xMyl9KFtmdW5jdGlvbih0LG4pe3ZhciByPXQuZXhwb3J0cz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcIm51bWJlclwiPT10eXBlb2YgX19nJiYoX19nPXIpfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdD9udWxsIT09dDpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0fX0sZnVuY3Rpb24odCxuKXt2YXIgcj10LmV4cG9ydHM9e3ZlcnNpb246XCIyLjUuMFwifTtcIm51bWJlclwiPT10eXBlb2YgX19lJiYoX19lPXIpfSxmdW5jdGlvbih0LG4scil7dC5leHBvcnRzPSFyKDQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sZnVuY3Rpb24odCxuKXt2YXIgcj17fS50b1N0cmluZzt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIuY2FsbCh0KS5zbGljZSg4LC0xKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDMyKShcIndrc1wiKSxvPXIoOSksaT1yKDApLlN5bWJvbCx1PVwiZnVuY3Rpb25cIj09dHlwZW9mIGk7KHQuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZVt0XXx8KGVbdF09dSYmaVt0XXx8KHU/aTpvKShcIlN5bWJvbC5cIit0KSl9KS5zdG9yZT1lfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoMiksaT1yKDgpLHU9cigyMiksYz1yKDEwKSxmPWZ1bmN0aW9uKHQsbixyKXt2YXIgYSxzLHAsbCx2PXQmZi5GLHk9dCZmLkcsaD10JmYuUyxkPXQmZi5QLHg9dCZmLkIsZz15P2U6aD9lW25dfHwoZVtuXT17fSk6KGVbbl18fHt9KS5wcm90b3R5cGUsbT15P286b1tuXXx8KG9bbl09e30pLGI9bS5wcm90b3R5cGV8fChtLnByb3RvdHlwZT17fSk7eSYmKHI9bik7Zm9yKGEgaW4gcilzPSF2JiZnJiZ2b2lkIDAhPT1nW2FdLHA9KHM/ZzpyKVthXSxsPXgmJnM/YyhwLGUpOmQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHA/YyhGdW5jdGlvbi5jYWxsLHApOnAsZyYmdShnLGEscCx0JmYuVSksbVthXSE9cCYmaShtLGEsbCksZCYmYlthXSE9cCYmKGJbYV09cCl9O2UuY29yZT1vLGYuRj0xLGYuRz0yLGYuUz00LGYuUD04LGYuQj0xNixmLlc9MzIsZi5VPTY0LGYuUj0xMjgsdC5leHBvcnRzPWZ9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDE2KSxvPXIoMjEpO3QuZXhwb3J0cz1yKDMpP2Z1bmN0aW9uKHQsbixyKXtyZXR1cm4gZS5mKHQsbixvKDEscikpfTpmdW5jdGlvbih0LG4scil7cmV0dXJuIHRbbl09cix0fX0sZnVuY3Rpb24odCxuKXt2YXIgcj0wLGU9TWF0aC5yYW5kb20oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJTeW1ib2woXCIuY29uY2F0KHZvaWQgMD09PXQ/XCJcIjp0LFwiKV9cIiwoKytyK2UpLnRvU3RyaW5nKDM2KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigyNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixyKXtpZihlKHQpLHZvaWQgMD09PW4pcmV0dXJuIHQ7c3dpdGNoKHIpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQuY2FsbChuLHIpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIHQuY2FsbChuLHIsZSl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24ocixlLG8pe3JldHVybiB0LmNhbGwobixyLGUsbyl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KG4sYXJndW1lbnRzKX19fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZih2b2lkIDA9PXQpdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIFwiK3QpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMjgpLG89TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/byhlKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7bi5fX2VzTW9kdWxlPSEwLG4uZGVmYXVsdD1mdW5jdGlvbih0LG4pe2lmKHQmJm4pe3ZhciByPUFycmF5LmlzQXJyYXkobik/bjpuLnNwbGl0KFwiLFwiKSxlPXQubmFtZXx8XCJcIixvPXQudHlwZXx8XCJcIixpPW8ucmVwbGFjZSgvXFwvLiokLyxcIlwiKTtyZXR1cm4gci5zb21lKGZ1bmN0aW9uKHQpe3ZhciBuPXQudHJpbSgpO3JldHVyblwiLlwiPT09bi5jaGFyQXQoMCk/ZS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKG4udG9Mb3dlckNhc2UoKSk6bi5lbmRzV2l0aChcIi8qXCIpP2k9PT1uLnJlcGxhY2UoL1xcLy4qJC8sXCJcIik6bz09PW59KX1yZXR1cm4hMH0scigxNCkscigzNCl9LGZ1bmN0aW9uKHQsbixyKXtyKDE1KSx0LmV4cG9ydHM9cigyKS5BcnJheS5zb21lfSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9cig3KSxvPXIoMjUpKDMpO2UoZS5QK2UuRiohcigzMykoW10uc29tZSwhMCksXCJBcnJheVwiLHtzb21lOmZ1bmN0aW9uKHQpe3JldHVybiBvKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxNyksbz1yKDE4KSxpPXIoMjApLHU9T2JqZWN0LmRlZmluZVByb3BlcnR5O24uZj1yKDMpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LG4scil7aWYoZSh0KSxuPWkobiwhMCksZShyKSxvKXRyeXtyZXR1cm4gdSh0LG4scil9Y2F0Y2godCl7fWlmKFwiZ2V0XCJpbiByfHxcInNldFwiaW4gcil0aHJvdyBUeXBlRXJyb3IoXCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCFcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gciYmKHRbbl09ci52YWx1ZSksdH19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighZSh0KSl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYW4gb2JqZWN0IVwiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixyKXt0LmV4cG9ydHM9IXIoMykmJiFyKDQpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShyKDE5KShcImRpdlwiKSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxKSxvPXIoMCkuZG9jdW1lbnQsaT1lKG8pJiZlKG8uY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpP28uY3JlYXRlRWxlbWVudCh0KTp7fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKCFlKHQpKXJldHVybiB0O3ZhciByLG87aWYobiYmXCJmdW5jdGlvblwiPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIWUobz1yLmNhbGwodCkpKXJldHVybiBvO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dC52YWx1ZU9mKSYmIWUobz1yLmNhbGwodCkpKXJldHVybiBvO2lmKCFuJiZcImZ1bmN0aW9uXCI9PXR5cGVvZihyPXQudG9TdHJpbmcpJiYhZShvPXIuY2FsbCh0KSkpcmV0dXJuIG87dGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6bn19fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigwKSxvPXIoOCksaT1yKDIzKSx1PXIoOSkoXCJzcmNcIiksYz1GdW5jdGlvbi50b1N0cmluZyxmPShcIlwiK2MpLnNwbGl0KFwidG9TdHJpbmdcIik7cigyKS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBjLmNhbGwodCl9LCh0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLHIsYyl7dmFyIGE9XCJmdW5jdGlvblwiPT10eXBlb2YgcjthJiYoaShyLFwibmFtZVwiKXx8byhyLFwibmFtZVwiLG4pKSx0W25dIT09ciYmKGEmJihpKHIsdSl8fG8ocix1LHRbbl0/XCJcIit0W25dOmYuam9pbihTdHJpbmcobikpKSksdD09PWU/dFtuXT1yOmM/dFtuXT90W25dPXI6byh0LG4scik6KGRlbGV0ZSB0W25dLG8odCxuLHIpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdGhpcyYmdGhpc1t1XXx8Yy5jYWxsKHRoaXMpfSl9LGZ1bmN0aW9uKHQsbil7dmFyIHI9e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuY2FsbCh0LG4pfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYSBmdW5jdGlvbiFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigxMCksbz1yKDI2KSxpPXIoMjcpLHU9cigxMiksYz1yKDI5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgcj0xPT10LGY9Mj09dCxhPTM9PXQscz00PT10LHA9Nj09dCxsPTU9PXR8fHAsdj1ufHxjO3JldHVybiBmdW5jdGlvbihuLGMseSl7Zm9yKHZhciBoLGQseD1pKG4pLGc9byh4KSxtPWUoYyx5LDMpLGI9dShnLmxlbmd0aCksXz0wLHc9cj92KG4sYik6Zj92KG4sMCk6dm9pZCAwO2I+XztfKyspaWYoKGx8fF8gaW4gZykmJihoPWdbX10sZD1tKGgsXyx4KSx0KSlpZihyKXdbX109ZDtlbHNlIGlmKGQpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIGg7Y2FzZSA2OnJldHVybiBfO2Nhc2UgMjp3LnB1c2goaCl9ZWxzZSBpZihzKXJldHVybiExO3JldHVybiBwPy0xOmF8fHM/czp3fX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDUpO3QuZXhwb3J0cz1PYmplY3QoXCJ6XCIpLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbih0KXtyZXR1cm5cIlN0cmluZ1wiPT1lKHQpP3Quc3BsaXQoXCJcIik6T2JqZWN0KHQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KGUodCkpfX0sZnVuY3Rpb24odCxuKXt2YXIgcj1NYXRoLmNlaWwsZT1NYXRoLmZsb29yO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gaXNOYU4odD0rdCk/MDoodD4wP2U6cikodCl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cigzMCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyhlKHQpKShuKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpLG89cigzMSksaT1yKDYpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIG8odCkmJihuPXQuY29uc3RydWN0b3IsXCJmdW5jdGlvblwiIT10eXBlb2Ygbnx8biE9PUFycmF5JiYhbyhuLnByb3RvdHlwZSl8fChuPXZvaWQgMCksZShuKSYmbnVsbD09PShuPW5baV0pJiYobj12b2lkIDApKSx2b2lkIDA9PT1uP0FycmF5Om59fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig1KTt0LmV4cG9ydHM9QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24odCl7cmV0dXJuXCJBcnJheVwiPT1lKHQpfX0sZnVuY3Rpb24odCxuLHIpe3ZhciBlPXIoMCksbz1lW1wiX19jb3JlLWpzX3NoYXJlZF9fXCJdfHwoZVtcIl9fY29yZS1qc19zaGFyZWRfX1wiXT17fSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfHwob1t0XT17fSl9fSxmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9cig0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm4hIXQmJmUoZnVuY3Rpb24oKXtuP3QuY2FsbChudWxsLGZ1bmN0aW9uKCl7fSwxKTp0LmNhbGwobnVsbCl9KX19LGZ1bmN0aW9uKHQsbixyKXtyKDM1KSx0LmV4cG9ydHM9cigyKS5TdHJpbmcuZW5kc1dpdGh9LGZ1bmN0aW9uKHQsbixyKXtcInVzZSBzdHJpY3RcIjt2YXIgZT1yKDcpLG89cigxMiksaT1yKDM2KSx1PVwiXCIuZW5kc1dpdGg7ZShlLlArZS5GKnIoMzgpKFwiZW5kc1dpdGhcIiksXCJTdHJpbmdcIix7ZW5kc1dpdGg6ZnVuY3Rpb24odCl7dmFyIG49aSh0aGlzLHQsXCJlbmRzV2l0aFwiKSxyPWFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLGU9byhuLmxlbmd0aCksYz12b2lkIDA9PT1yP2U6TWF0aC5taW4obyhyKSxlKSxmPVN0cmluZyh0KTtyZXR1cm4gdT91LmNhbGwobixmLGMpOm4uc2xpY2UoYy1mLmxlbmd0aCxjKT09PWZ9fSl9LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDM3KSxvPXIoMTEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4scil7aWYoZShuKSl0aHJvdyBUeXBlRXJyb3IoXCJTdHJpbmcjXCIrcitcIiBkb2Vzbid0IGFjY2VwdCByZWdleCFcIik7cmV0dXJuIFN0cmluZyhvKHQpKX19LGZ1bmN0aW9uKHQsbixyKXt2YXIgZT1yKDEpLG89cig1KSxpPXIoNikoXCJtYXRjaFwiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGUodCkmJih2b2lkIDAhPT0obj10W2ldKT8hIW46XCJSZWdFeHBcIj09byh0KSl9fSxmdW5jdGlvbih0LG4scil7dmFyIGU9cig2KShcIm1hdGNoXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj0vLi87dHJ5e1wiLy4vXCJbdF0obil9Y2F0Y2gocil7dHJ5e3JldHVybiBuW2VdPSExLCFcIi8uL1wiW3RdKG4pfWNhdGNoKHQpe319cmV0dXJuITB9fV0pOyIsImltcG9ydCBhY2NlcHRzIGZyb20gJ2F0dHItYWNjZXB0J1xuXG5leHBvcnQgY29uc3Qgc3VwcG9ydE11bHRpcGxlID1cbiAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5jcmVhdGVFbGVtZW50XG4gICAgPyAnbXVsdGlwbGUnIGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JylcbiAgICA6IHRydWVcblxuZXhwb3J0IGZ1bmN0aW9uIGdldERhdGFUcmFuc2Zlckl0ZW1zKGV2ZW50KSB7XG4gIGxldCBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBbXVxuICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgY29uc3QgZHQgPSBldmVudC5kYXRhVHJhbnNmZXJcblxuICAgIC8vIE5PVEU6IE9ubHkgdGhlICdkcm9wJyBldmVudCBoYXMgYWNjZXNzIHRvIERhdGFUcmFuc2Zlci5maWxlcyxcbiAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBhbHdheXMgYmUgZW1wdHlcbiAgICBpZiAoZHQuZmlsZXMgJiYgZHQuZmlsZXMubGVuZ3RoKSB7XG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5maWxlc1xuICAgIH0gZWxzZSBpZiAoZHQuaXRlbXMgJiYgZHQuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAvLyBEdXJpbmcgdGhlIGRyYWcgZXZlbiB0aGUgZGF0YVRyYW5zZmVyLmZpbGVzIGlzIG51bGxcbiAgICAgIC8vIGJ1dCBDaHJvbWUgaW1wbGVtZW50cyBzb21lIGRyYWcgc3RvcmUsIHdoaWNoIGlzIGFjY2VzaWJsZSB2aWEgZGF0YVRyYW5zZmVyLml0ZW1zXG4gICAgICBkYXRhVHJhbnNmZXJJdGVtc0xpc3QgPSBkdC5pdGVtc1xuICAgIH1cbiAgfSBlbHNlIGlmIChldmVudC50YXJnZXQgJiYgZXZlbnQudGFyZ2V0LmZpbGVzKSB7XG4gICAgZGF0YVRyYW5zZmVySXRlbXNMaXN0ID0gZXZlbnQudGFyZ2V0LmZpbGVzXG4gIH1cblxuICAvLyBDb252ZXJ0IGZyb20gRGF0YVRyYW5zZmVySXRlbXNMaXN0IHRvIHRoZSBuYXRpdmUgQXJyYXlcbiAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRhdGFUcmFuc2Zlckl0ZW1zTGlzdClcbn1cblxuLy8gRmlyZWZveCB2ZXJzaW9ucyBwcmlvciB0byA1MyByZXR1cm4gYSBib2d1cyBNSU1FIHR5cGUgZm9yIGV2ZXJ5IGZpbGUgZHJhZywgc28gZHJhZ292ZXJzIHdpdGhcbi8vIHRoYXQgTUlNRSB0eXBlIHdpbGwgYWx3YXlzIGJlIGFjY2VwdGVkXG5leHBvcnQgZnVuY3Rpb24gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkge1xuICByZXR1cm4gZmlsZS50eXBlID09PSAnYXBwbGljYXRpb24veC1tb3otZmlsZScgfHwgYWNjZXB0cyhmaWxlLCBhY2NlcHQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlTWF0Y2hTaXplKGZpbGUsIG1heFNpemUsIG1pblNpemUpIHtcbiAgcmV0dXJuIGZpbGUuc2l6ZSA8PSBtYXhTaXplICYmIGZpbGUuc2l6ZSA+PSBtaW5TaXplXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhbGxGaWxlc0FjY2VwdGVkKGZpbGVzLCBhY2NlcHQpIHtcbiAgcmV0dXJuIGZpbGVzLmV2ZXJ5KGZpbGUgPT4gZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RyYWdEYXRhV2l0aEZpbGVzKGV2dCkge1xuICBpZiAoIWV2dC5kYXRhVHJhbnNmZXIpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9EYXRhVHJhbnNmZXIvdHlwZXNcbiAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0hUTUxfRHJhZ19hbmRfRHJvcF9BUEkvUmVjb21tZW5kZWRfZHJhZ190eXBlcyNmaWxlXG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc29tZS5jYWxsKFxuICAgIGV2dC5kYXRhVHJhbnNmZXIudHlwZXMsXG4gICAgdHlwZSA9PiB0eXBlID09PSAnRmlsZXMnIHx8IHR5cGUgPT09ICdhcHBsaWNhdGlvbi94LW1vei1maWxlJ1xuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0tpbmRGaWxlKGl0ZW0pIHtcbiAgcmV0dXJuIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsICYmIGl0ZW0ua2luZCA9PT0gJ2ZpbGUnXG59XG5cbi8vIGFsbG93IHRoZSBlbnRpcmUgZG9jdW1lbnQgdG8gYmUgYSBkcmFnIHRhcmdldFxuZXhwb3J0IGZ1bmN0aW9uIG9uRG9jdW1lbnREcmFnT3ZlcihldnQpIHtcbiAgZXZ0LnByZXZlbnREZWZhdWx0KClcbn1cblxuZnVuY3Rpb24gaXNJZSh1c2VyQWdlbnQpIHtcbiAgcmV0dXJuIHVzZXJBZ2VudC5pbmRleE9mKCdNU0lFJykgIT09IC0xIHx8IHVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50LycpICE9PSAtMVxufVxuXG5mdW5jdGlvbiBpc0VkZ2UodXNlckFnZW50KSB7XG4gIHJldHVybiB1c2VyQWdlbnQuaW5kZXhPZignRWRnZS8nKSAhPT0gLTFcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzSWVPckVkZ2UodXNlckFnZW50ID0gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHtcbiAgcmV0dXJuIGlzSWUodXNlckFnZW50KSB8fCBpc0VkZ2UodXNlckFnZW50KVxufVxuXG4vKipcbiAqIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBjb21wb3NlIGV2ZW50IGhhbmRsZXJzXG4gKiBUaGV5IGFyZSBleGVjdXRlZCBpbiBvcmRlciB1bnRpbCBvbmUgb2YgdGhlbSBjYWxscyBgZXZlbnQucHJldmVudERlZmF1bHQoKWAuXG4gKiBOb3Qgc3VyZSB0aGlzIGlzIHRoZSBiZXN0IHdheSB0byBkbyB0aGlzLCBidXQgaXQgc2VlbXMgbGVnaXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbnMgdGhlIGV2ZW50IGhhbmxkZXIgZnVuY3Rpb25zXG4gKiBAcmV0dXJuIHtGdW5jdGlvbn0gdGhlIGV2ZW50IGhhbmRsZXIgdG8gYWRkIHRvIGFuIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXBvc2VFdmVudEhhbmRsZXJzKC4uLmZucykge1xuICByZXR1cm4gKGV2ZW50LCAuLi5hcmdzKSA9PlxuICAgIGZucy5zb21lKGZuID0+IHtcbiAgICAgIGZuICYmIGZuKGV2ZW50LCAuLi5hcmdzKVxuICAgICAgcmV0dXJuIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWRcbiAgICB9KVxufVxuIiwiLyogZXNsaW50IHByZWZlci10ZW1wbGF0ZTogMCAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQge1xuICBpc0RyYWdEYXRhV2l0aEZpbGVzLFxuICBzdXBwb3J0TXVsdGlwbGUsXG4gIGZpbGVBY2NlcHRlZCxcbiAgYWxsRmlsZXNBY2NlcHRlZCxcbiAgZmlsZU1hdGNoU2l6ZSxcbiAgb25Eb2N1bWVudERyYWdPdmVyLFxuICBnZXREYXRhVHJhbnNmZXJJdGVtcyBhcyBkZWZhdWx0R2V0RGF0YVRyYW5zZmVySXRlbSxcbiAgaXNJZU9yRWRnZSxcbiAgY29tcG9zZUV2ZW50SGFuZGxlcnNcbn0gZnJvbSAnLi91dGlscydcblxuY2xhc3MgRHJvcHpvbmUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICBzdGF0ZSA9IHtcbiAgICBkcmFnZ2VkRmlsZXM6IFtdLFxuICAgIGFjY2VwdGVkRmlsZXM6IFtdLFxuICAgIHJlamVjdGVkRmlsZXM6IFtdXG4gIH1cblxuICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICBjb25zdCB7IHByZXZlbnREcm9wT25Eb2N1bWVudCB9ID0gdGhpcy5wcm9wc1xuICAgIHRoaXMuZHJhZ1RhcmdldHMgPSBbXVxuXG4gICAgaWYgKHByZXZlbnREcm9wT25Eb2N1bWVudCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRvY3VtZW50RHJhZ092ZXIsIGZhbHNlKVxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZHJvcCcsIHRoaXMub25Eb2N1bWVudERyb3AsIGZhbHNlKVxuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIHRoaXMub25GaWxlRGlhbG9nQ2FuY2VsLCBmYWxzZSlcbiAgfVxuXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGNvbnN0IHsgcHJldmVudERyb3BPbkRvY3VtZW50IH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKHByZXZlbnREcm9wT25Eb2N1bWVudCkge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZHJhZ292ZXInLCBvbkRvY3VtZW50RHJhZ092ZXIpXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5vbkRvY3VtZW50RHJvcClcbiAgICB9XG5cbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXMnLCB0aGlzLm9uRmlsZURpYWxvZ0NhbmNlbCwgZmFsc2UpXG4gIH1cblxuICBpc0ZpbGVEaWFsb2dBY3RpdmUgPSBmYWxzZVxuXG4gIG9uRG9jdW1lbnREcm9wID0gZXZ0ID0+IHtcbiAgICBpZiAodGhpcy5ub2RlICYmIHRoaXMubm9kZS5jb250YWlucyhldnQudGFyZ2V0KSkge1xuICAgICAgLy8gaWYgd2UgaW50ZXJjZXB0ZWQgYW4gZXZlbnQgZm9yIG91ciBpbnN0YW5jZSwgbGV0IGl0IHByb3BhZ2F0ZSBkb3duIHRvIHRoZSBpbnN0YW5jZSdzIG9uRHJvcCBoYW5kbGVyXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgZXZ0LnByZXZlbnREZWZhdWx0KClcbiAgICB0aGlzLmRyYWdUYXJnZXRzID0gW11cbiAgfVxuXG4gIG9uRHJhZ1N0YXJ0ID0gZXZ0ID0+IHtcbiAgICBldnQucGVyc2lzdCgpXG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnU3RhcnQgJiYgaXNEcmFnRGF0YVdpdGhGaWxlcyhldnQpKSB7XG4gICAgICB0aGlzLnByb3BzLm9uRHJhZ1N0YXJ0LmNhbGwodGhpcywgZXZ0KVxuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ0VudGVyID0gZXZ0ID0+IHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgLy8gQ291bnQgdGhlIGRyb3B6b25lIGFuZCBhbnkgY2hpbGRyZW4gdGhhdCBhcmUgZW50ZXJlZC5cbiAgICBpZiAodGhpcy5kcmFnVGFyZ2V0cy5pbmRleE9mKGV2dC50YXJnZXQpID09PSAtMSkge1xuICAgICAgdGhpcy5kcmFnVGFyZ2V0cy5wdXNoKGV2dC50YXJnZXQpXG4gICAgfVxuXG4gICAgZXZ0LnBlcnNpc3QoKVxuXG4gICAgaWYgKGlzRHJhZ0RhdGFXaXRoRmlsZXMoZXZ0KSkge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKHRoaXMucHJvcHMuZ2V0RGF0YVRyYW5zZmVySXRlbXMoZXZ0KSkudGhlbihkcmFnZ2VkRmlsZXMgPT4ge1xuICAgICAgICBpZiAoZXZ0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGRyYWdnZWRGaWxlcyxcbiAgICAgICAgICAvLyBEbyBub3QgcmVseSBvbiBmaWxlcyBmb3IgdGhlIGRyYWcgc3RhdGUuIEl0IGRvZXNuJ3Qgd29yayBpbiBTYWZhcmkuXG4gICAgICAgICAgaXNEcmFnQWN0aXZlOiB0cnVlXG4gICAgICAgIH0pXG4gICAgICB9KVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5vbkRyYWdFbnRlcikge1xuICAgICAgICB0aGlzLnByb3BzLm9uRHJhZ0VudGVyLmNhbGwodGhpcywgZXZ0KVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ092ZXIgPSBldnQgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZXZ0LnBlcnNpc3QoKVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25EcmFnT3ZlciAmJiBpc0RyYWdEYXRhV2l0aEZpbGVzKGV2dCkpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnT3Zlci5jYWxsKHRoaXMsIGV2dClcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIG9uRHJhZ0xlYXZlID0gZXZ0ID0+IHtcbiAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgIGV2dC5wZXJzaXN0KClcblxuICAgIC8vIE9ubHkgZGVhY3RpdmF0ZSBvbmNlIHRoZSBkcm9wem9uZSBhbmQgYWxsIGNoaWxkcmVuIGhhdmUgYmVlbiBsZWZ0LlxuICAgIHRoaXMuZHJhZ1RhcmdldHMgPSB0aGlzLmRyYWdUYXJnZXRzLmZpbHRlcihlbCA9PiBlbCAhPT0gZXZ0LnRhcmdldCAmJiB0aGlzLm5vZGUuY29udGFpbnMoZWwpKVxuICAgIGlmICh0aGlzLmRyYWdUYXJnZXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIENsZWFyIGRyYWdnaW5nIGZpbGVzIHN0YXRlXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0RyYWdBY3RpdmU6IGZhbHNlLFxuICAgICAgZHJhZ2dlZEZpbGVzOiBbXVxuICAgIH0pXG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkRyYWdMZWF2ZSAmJiBpc0RyYWdEYXRhV2l0aEZpbGVzKGV2dCkpIHtcbiAgICAgIHRoaXMucHJvcHMub25EcmFnTGVhdmUuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuICB9XG5cbiAgb25Ecm9wID0gZXZ0ID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvbkRyb3AsXG4gICAgICBvbkRyb3BBY2NlcHRlZCxcbiAgICAgIG9uRHJvcFJlamVjdGVkLFxuICAgICAgbXVsdGlwbGUsXG4gICAgICBhY2NlcHQsXG4gICAgICBnZXREYXRhVHJhbnNmZXJJdGVtc1xuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICAvLyBTdG9wIGRlZmF1bHQgYnJvd3NlciBiZWhhdmlvclxuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAvLyBQZXJzaXN0IGV2ZW50IGZvciBsYXRlciB1c2FnZVxuICAgIGV2dC5wZXJzaXN0KClcblxuICAgIC8vIFJlc2V0IHRoZSBjb3VudGVyIGFsb25nIHdpdGggdGhlIGRyYWcgb24gYSBkcm9wLlxuICAgIHRoaXMuZHJhZ1RhcmdldHMgPSBbXVxuICAgIHRoaXMuaXNGaWxlRGlhbG9nQWN0aXZlID0gZmFsc2VcblxuICAgIC8vIENsZWFyIGZpbGVzIHZhbHVlXG4gICAgdGhpcy5kcmFnZ2VkRmlsZXMgPSBudWxsXG5cbiAgICAvLyBSZXNldCBkcmFnIHN0YXRlXG4gICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICBpc0RyYWdBY3RpdmU6IGZhbHNlLFxuICAgICAgZHJhZ2dlZEZpbGVzOiBbXVxuICAgIH0pXG5cbiAgICBpZiAoaXNEcmFnRGF0YVdpdGhGaWxlcyhldnQpKSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoZ2V0RGF0YVRyYW5zZmVySXRlbXMoZXZ0KSkudGhlbihmaWxlTGlzdCA9PiB7XG4gICAgICAgIGNvbnN0IGFjY2VwdGVkRmlsZXMgPSBbXVxuICAgICAgICBjb25zdCByZWplY3RlZEZpbGVzID0gW11cblxuICAgICAgICBpZiAoZXZ0LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGZpbGVMaXN0LmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgZmlsZUFjY2VwdGVkKGZpbGUsIGFjY2VwdCkgJiZcbiAgICAgICAgICAgIGZpbGVNYXRjaFNpemUoZmlsZSwgdGhpcy5wcm9wcy5tYXhTaXplLCB0aGlzLnByb3BzLm1pblNpemUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBhY2NlcHRlZEZpbGVzLnB1c2goZmlsZSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVqZWN0ZWRGaWxlcy5wdXNoKGZpbGUpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghbXVsdGlwbGUgJiYgYWNjZXB0ZWRGaWxlcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgLy8gaWYgbm90IGluIG11bHRpIG1vZGUgYWRkIGFueSBleHRyYSBhY2NlcHRlZCBmaWxlcyB0byByZWplY3RlZC5cbiAgICAgICAgICAvLyBUaGlzIHdpbGwgYWxsb3cgZW5kIHVzZXJzIHRvIGVhc2lseSBpZ25vcmUgYSBtdWx0aSBmaWxlIGRyb3AgaW4gXCJzaW5nbGVcIiBtb2RlLlxuICAgICAgICAgIHJlamVjdGVkRmlsZXMucHVzaCguLi5hY2NlcHRlZEZpbGVzLnNwbGljZSgwKSlcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVwZGF0ZSBgYWNjZXB0ZWRGaWxlc2AgYW5kIGByZWplY3RlZEZpbGVzYCBzdGF0ZVxuICAgICAgICAvLyBUaGlzIHdpbGwgbWFrZSBjaGlsZHJlbiByZW5kZXIgZnVuY3Rpb25zIHJlY2VpdmUgdGhlIGFwcHJvcHJpYXRlXG4gICAgICAgIC8vIHZhbHVlc1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgYWNjZXB0ZWRGaWxlcywgcmVqZWN0ZWRGaWxlcyB9LCAoKSA9PiB7XG4gICAgICAgICAgaWYgKG9uRHJvcCkge1xuICAgICAgICAgICAgb25Ecm9wLmNhbGwodGhpcywgYWNjZXB0ZWRGaWxlcywgcmVqZWN0ZWRGaWxlcywgZXZ0KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZWplY3RlZEZpbGVzLmxlbmd0aCA+IDAgJiYgb25Ecm9wUmVqZWN0ZWQpIHtcbiAgICAgICAgICAgIG9uRHJvcFJlamVjdGVkLmNhbGwodGhpcywgcmVqZWN0ZWRGaWxlcywgZXZ0KVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChhY2NlcHRlZEZpbGVzLmxlbmd0aCA+IDAgJiYgb25Ecm9wQWNjZXB0ZWQpIHtcbiAgICAgICAgICAgIG9uRHJvcEFjY2VwdGVkLmNhbGwodGhpcywgYWNjZXB0ZWRGaWxlcywgZXZ0KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgb25DbGljayA9IGV2dCA9PiB7XG4gICAgY29uc3QgeyBvbkNsaWNrLCBkaXNhYmxlQ2xpY2sgfSA9IHRoaXMucHJvcHNcblxuICAgIC8vIGlmIG9uQ2xpY2sgcHJvcCBpcyBnaXZlbiwgcnVuIGl0IGZpcnN0XG4gICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgIG9uQ2xpY2suY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuXG4gICAgLy8gaWYgZGlzYWJsZUNsaWNrIGlzIG5vdCBzZXQgYW5kIHRoZSBldmVudCBoYXNuJ3QgYmVlbiBkZWZhdWx0IHByZWZlbnRlZCB3aXRoaW5cbiAgICAvLyB0aGUgb25DbGljayBsaXN0ZW5lciwgb3BlbiB0aGUgZmlsZSBkaWFsb2dcbiAgICBpZiAoIWRpc2FibGVDbGljayAmJiAhZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7XG4gICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgICAgLy8gaW4gSUUxMS9FZGdlIHRoZSBmaWxlLWJyb3dzZXIgZGlhbG9nIGlzIGJsb2NraW5nLCBlbnN1cmUgdGhpcyBpcyBiZWhpbmQgc2V0VGltZW91dFxuICAgICAgLy8gdGhpcyBpcyBzbyByZWFjdCBjYW4gaGFuZGxlIHN0YXRlIGNoYW5nZXMgaW4gdGhlIG9uQ2xpY2sgcHJvcCBhYm92ZSBhYm92ZVxuICAgICAgLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3QtZHJvcHpvbmUvcmVhY3QtZHJvcHpvbmUvaXNzdWVzLzQ1MFxuICAgICAgaWYgKGlzSWVPckVkZ2UoKSkge1xuICAgICAgICBzZXRUaW1lb3V0KHRoaXMub3BlbiwgMClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3BlbigpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgb25JbnB1dEVsZW1lbnRDbGljayA9IGV2dCA9PiB7XG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpXG4gIH1cblxuICBvbkZpbGVEaWFsb2dDYW5jZWwgPSAoKSA9PiB7XG4gICAgLy8gdGltZW91dCB3aWxsIG5vdCByZWNvZ25pemUgY29udGV4dCBvZiB0aGlzIG1ldGhvZFxuICAgIGNvbnN0IHsgb25GaWxlRGlhbG9nQ2FuY2VsIH0gPSB0aGlzLnByb3BzXG4gICAgLy8gZXhlY3V0ZSB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSBGaWxlRGlhbG9nIGlzIG9wZW5lZCBpbiB0aGUgYnJvd3NlclxuICAgIGlmICh0aGlzLmlzRmlsZURpYWxvZ0FjdGl2ZSkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0ICE9IG51bGwpIHtcbiAgICAgICAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCBhcyBGaWxlTGlzdFxuICAgICAgICAgIGNvbnN0IHsgZmlsZXMgfSA9IHRoaXMuaW5wdXRcblxuICAgICAgICAgIGlmICghZmlsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmlzRmlsZURpYWxvZ0FjdGl2ZSA9IGZhbHNlXG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb25GaWxlRGlhbG9nQ2FuY2VsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIG9uRmlsZURpYWxvZ0NhbmNlbCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LCAzMDApXG4gICAgfVxuICB9XG5cbiAgb25Gb2N1cyA9IGV2dCA9PiB7XG4gICAgY29uc3QgeyBvbkZvY3VzIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKG9uRm9jdXMpIHtcbiAgICAgIG9uRm9jdXMuY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuICAgIGlmICghZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgaXNGb2N1c2VkOiB0cnVlIH0pXG4gICAgfVxuICB9XG5cbiAgb25CbHVyID0gZXZ0ID0+IHtcbiAgICBjb25zdCB7IG9uQmx1ciB9ID0gdGhpcy5wcm9wc1xuICAgIGlmIChvbkJsdXIpIHtcbiAgICAgIG9uQmx1ci5jYWxsKHRoaXMsIGV2dClcbiAgICB9XG4gICAgaWYgKCFldnQuaXNEZWZhdWx0UHJldmVudGVkKCkpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBpc0ZvY3VzZWQ6IGZhbHNlIH0pXG4gICAgfVxuICB9XG5cbiAgb25LZXlEb3duID0gZXZ0ID0+IHtcbiAgICBjb25zdCB7IG9uS2V5RG93biB9ID0gdGhpcy5wcm9wc1xuICAgIGlmICghdGhpcy5ub2RlLmlzRXF1YWxOb2RlKGV2dC50YXJnZXQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAob25LZXlEb3duKSB7XG4gICAgICBvbktleURvd24uY2FsbCh0aGlzLCBldnQpXG4gICAgfVxuXG4gICAgaWYgKCFldnQuaXNEZWZhdWx0UHJldmVudGVkKCkgJiYgKGV2dC5rZXlDb2RlID09PSAzMiB8fCBldnQua2V5Q29kZSA9PT0gMTMpKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKVxuICAgICAgdGhpcy5vcGVuKClcbiAgICB9XG4gIH1cblxuICBjb21wb3NlSGFuZGxlciA9IGhhbmRsZXIgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICByZXR1cm4gaGFuZGxlclxuICB9XG5cbiAgZ2V0Um9vdFByb3BzID0gKHtcbiAgICByZWZLZXkgPSAncmVmJyxcbiAgICBvbktleURvd24sXG4gICAgb25Gb2N1cyxcbiAgICBvbkJsdXIsXG4gICAgb25DbGljayxcbiAgICBvbkRyYWdTdGFydCxcbiAgICBvbkRyYWdFbnRlcixcbiAgICBvbkRyYWdPdmVyLFxuICAgIG9uRHJhZ0xlYXZlLFxuICAgIG9uRHJvcCxcbiAgICAuLi5yZXN0XG4gIH0gPSB7fSkgPT4gKHtcbiAgICBvbktleURvd246IHRoaXMuY29tcG9zZUhhbmRsZXIoXG4gICAgICBvbktleURvd24gPyBjb21wb3NlRXZlbnRIYW5kbGVycyhvbktleURvd24sIHRoaXMub25LZXlEb3duKSA6IHRoaXMub25LZXlEb3duXG4gICAgKSxcbiAgICBvbkZvY3VzOiB0aGlzLmNvbXBvc2VIYW5kbGVyKFxuICAgICAgb25Gb2N1cyA/IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uRm9jdXMsIHRoaXMub25Gb2N1cykgOiB0aGlzLm9uRm9jdXNcbiAgICApLFxuICAgIG9uQmx1cjogdGhpcy5jb21wb3NlSGFuZGxlcihvbkJsdXIgPyBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkJsdXIsIHRoaXMub25CbHVyKSA6IHRoaXMub25CbHVyKSxcbiAgICBvbkNsaWNrOiB0aGlzLmNvbXBvc2VIYW5kbGVyKFxuICAgICAgb25DbGljayA/IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uQ2xpY2ssIHRoaXMub25DbGljaykgOiB0aGlzLm9uQ2xpY2tcbiAgICApLFxuICAgIG9uRHJhZ1N0YXJ0OiB0aGlzLmNvbXBvc2VIYW5kbGVyKFxuICAgICAgb25EcmFnU3RhcnQgPyBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkRyYWdTdGFydCwgdGhpcy5vbkRyYWdTdGFydCkgOiB0aGlzLm9uRHJhZ1N0YXJ0XG4gICAgKSxcbiAgICBvbkRyYWdFbnRlcjogdGhpcy5jb21wb3NlSGFuZGxlcihcbiAgICAgIG9uRHJhZ0VudGVyID8gY29tcG9zZUV2ZW50SGFuZGxlcnMob25EcmFnRW50ZXIsIHRoaXMub25EcmFnRW50ZXIpIDogdGhpcy5vbkRyYWdFbnRlclxuICAgICksXG4gICAgb25EcmFnT3ZlcjogdGhpcy5jb21wb3NlSGFuZGxlcihcbiAgICAgIG9uRHJhZ092ZXIgPyBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkRyYWdPdmVyLCB0aGlzLm9uRHJhZ092ZXIpIDogdGhpcy5vbkRyYWdPdmVyXG4gICAgKSxcbiAgICBvbkRyYWdMZWF2ZTogdGhpcy5jb21wb3NlSGFuZGxlcihcbiAgICAgIG9uRHJhZ0xlYXZlID8gY29tcG9zZUV2ZW50SGFuZGxlcnMob25EcmFnTGVhdmUsIHRoaXMub25EcmFnTGVhdmUpIDogdGhpcy5vbkRyYWdMZWF2ZVxuICAgICksXG4gICAgb25Ecm9wOiB0aGlzLmNvbXBvc2VIYW5kbGVyKG9uRHJvcCA/IGNvbXBvc2VFdmVudEhhbmRsZXJzKG9uRHJvcCwgdGhpcy5vbkRyb3ApIDogdGhpcy5vbkRyb3ApLFxuICAgIFtyZWZLZXldOiB0aGlzLnNldE5vZGVSZWYsXG4gICAgdGFiSW5kZXg6IHRoaXMucHJvcHMuZGlzYWJsZWQgPyAtMSA6IDAsXG4gICAgLi4ucmVzdFxuICB9KVxuXG4gIGdldElucHV0UHJvcHMgPSAoeyByZWZLZXkgPSAncmVmJywgb25DaGFuZ2UsIG9uQ2xpY2ssIC4uLnJlc3QgfSA9IHt9KSA9PiB7XG4gICAgY29uc3QgeyBhY2NlcHQsIG11bHRpcGxlLCBuYW1lIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgaW5wdXRQcm9wcyA9IHtcbiAgICAgIGFjY2VwdCxcbiAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgIHN0eWxlOiB7IGRpc3BsYXk6ICdub25lJyB9LFxuICAgICAgbXVsdGlwbGU6IHN1cHBvcnRNdWx0aXBsZSAmJiBtdWx0aXBsZSxcbiAgICAgIG9uQ2hhbmdlOiBjb21wb3NlRXZlbnRIYW5kbGVycyhvbkNoYW5nZSwgdGhpcy5vbkRyb3ApLFxuICAgICAgb25DbGljazogY29tcG9zZUV2ZW50SGFuZGxlcnMob25DbGljaywgdGhpcy5vbklucHV0RWxlbWVudENsaWNrKSxcbiAgICAgIGF1dG9Db21wbGV0ZTogJ29mZicsXG4gICAgICB0YWJJbmRleDogLTEsXG4gICAgICBbcmVmS2V5XTogdGhpcy5zZXRJbnB1dFJlZlxuICAgIH1cbiAgICBpZiAobmFtZSAmJiBuYW1lLmxlbmd0aCkge1xuICAgICAgaW5wdXRQcm9wcy5uYW1lID0gbmFtZVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgLi4uaW5wdXRQcm9wcyxcbiAgICAgIC4uLnJlc3RcbiAgICB9XG4gIH1cblxuICBzZXROb2RlUmVmID0gbm9kZSA9PiB7XG4gICAgdGhpcy5ub2RlID0gbm9kZVxuICB9XG5cbiAgc2V0SW5wdXRSZWYgPSBpbnB1dCA9PiB7XG4gICAgdGhpcy5pbnB1dCA9IGlucHV0XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBzeXN0ZW0gZmlsZSB1cGxvYWQgZGlhbG9nLlxuICAgKlxuICAgKiBAcHVibGljXG4gICAqL1xuICBvcGVuID0gKCkgPT4ge1xuICAgIHRoaXMuaXNGaWxlRGlhbG9nQWN0aXZlID0gdHJ1ZVxuICAgIGlmICh0aGlzLmlucHV0KSB7XG4gICAgICB0aGlzLmlucHV0LnZhbHVlID0gbnVsbFxuICAgICAgdGhpcy5pbnB1dC5jbGljaygpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHsgY2hpbGRyZW4sIG11bHRpcGxlLCBkaXNhYmxlZCB9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHsgaXNEcmFnQWN0aXZlLCBpc0ZvY3VzZWQsIGRyYWdnZWRGaWxlcywgYWNjZXB0ZWRGaWxlcywgcmVqZWN0ZWRGaWxlcyB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgY29uc3QgZmlsZXNDb3VudCA9IGRyYWdnZWRGaWxlcy5sZW5ndGhcbiAgICBjb25zdCBpc011bHRpcGxlQWxsb3dlZCA9IG11bHRpcGxlIHx8IGZpbGVzQ291bnQgPD0gMVxuICAgIGNvbnN0IGlzRHJhZ0FjY2VwdCA9IGZpbGVzQ291bnQgPiAwICYmIGFsbEZpbGVzQWNjZXB0ZWQoZHJhZ2dlZEZpbGVzLCB0aGlzLnByb3BzLmFjY2VwdClcbiAgICBjb25zdCBpc0RyYWdSZWplY3QgPSBmaWxlc0NvdW50ID4gMCAmJiAoIWlzRHJhZ0FjY2VwdCB8fCAhaXNNdWx0aXBsZUFsbG93ZWQpXG5cbiAgICByZXR1cm4gY2hpbGRyZW4oe1xuICAgICAgaXNEcmFnQWN0aXZlLFxuICAgICAgaXNEcmFnQWNjZXB0LFxuICAgICAgaXNEcmFnUmVqZWN0LFxuICAgICAgZHJhZ2dlZEZpbGVzLFxuICAgICAgYWNjZXB0ZWRGaWxlcyxcbiAgICAgIHJlamVjdGVkRmlsZXMsXG4gICAgICBpc0ZvY3VzZWQ6IGlzRm9jdXNlZCAmJiAhZGlzYWJsZWQsXG4gICAgICBnZXRSb290UHJvcHM6IHRoaXMuZ2V0Um9vdFByb3BzLFxuICAgICAgZ2V0SW5wdXRQcm9wczogdGhpcy5nZXRJbnB1dFByb3BzLFxuICAgICAgb3BlbjogdGhpcy5vcGVuXG4gICAgfSlcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEcm9wem9uZVxuXG5Ecm9wem9uZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBBbGxvdyBzcGVjaWZpYyB0eXBlcyBvZiBmaWxlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9va29uZXQvYXR0ci1hY2NlcHQgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqIEtlZXAgaW4gbWluZCB0aGF0IG1pbWUgdHlwZSBkZXRlcm1pbmF0aW9uIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgcGxhdGZvcm1zLiBDU1YgZmlsZXMsXG4gICAqIGZvciBleGFtcGxlLCBhcmUgcmVwb3J0ZWQgYXMgdGV4dC9wbGFpbiB1bmRlciBtYWNPUyBidXQgYXMgYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsIHVuZGVyXG4gICAqIFdpbmRvd3MuIEluIHNvbWUgY2FzZXMgdGhlcmUgbWlnaHQgbm90IGJlIGEgbWltZSB0eXBlIHNldCBhdCBhbGwuXG4gICAqIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0LWRyb3B6b25lL3JlYWN0LWRyb3B6b25lL2lzc3Vlcy8yNzZcbiAgICovXG4gIGFjY2VwdDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLnN0cmluZyldKSxcblxuICAvKipcbiAgICogUmVuZGVyIGZ1bmN0aW9uIHRoYXQgcmVuZGVycyB0aGUgYWN0dWFsIGNvbXBvbmVudFxuICAgKlxuICAgKiBAcGFyYW0ge09iamVjdH0gcHJvcHNcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcHJvcHMuZ2V0Um9vdFByb3BzIFJldHVybnMgdGhlIHByb3BzIHlvdSBzaG91bGQgYXBwbHkgdG8gdGhlIHJvb3QgZHJvcCBjb250YWluZXIgeW91IHJlbmRlclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm9wcy5nZXRJbnB1dFByb3BzIFJldHVybnMgdGhlIHByb3BzIHlvdSBzaG91bGQgYXBwbHkgdG8gaGlkZGVuIGZpbGUgaW5wdXQgeW91IHJlbmRlclxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcm9wcy5vcGVuIE9wZW4gdGhlIG5hdGl2ZSBmaWxlIHNlbGVjdGlvbiBkaWFsb2dcbiAgICogQHBhcmFtIHtCb29sZWFufSBwcm9wcy5pc0ZvY3VzZWQgRHJvcHpvbmUgYXJlYSBpcyBpbiBmb2N1c1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHByb3BzLmlzRHJhZ0FjdGl2ZSBBY3RpdmUgZHJhZyBpcyBpbiBwcm9ncmVzc1xuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHByb3BzLmlzRHJhZ0FjY2VwdCBEcmFnZ2VkIGZpbGVzIGFyZSBhY2NlcHRlZFxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IHByb3BzLmlzRHJhZ1JlamVjdCBTb21lIGRyYWdnZWQgZmlsZXMgYXJlIHJlamVjdGVkXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzLmRyYWdnZWRGaWxlcyBGaWxlcyBpbiBhY3RpdmUgZHJhZ1xuICAgKiBAcGFyYW0ge0FycmF5fSBwcm9wcy5hY2NlcHRlZEZpbGVzIEFjY2VwdGVkIGZpbGVzXG4gICAqIEBwYXJhbSB7QXJyYXl9IHByb3BzLnJlamVjdGVkRmlsZXMgUmVqZWN0ZWQgZmlsZXNcbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogRGlzYWxsb3cgY2xpY2tpbmcgb24gdGhlIGRyb3B6b25lIGNvbnRhaW5lciB0byBvcGVuIGZpbGUgZGlhbG9nXG4gICAqL1xuICBkaXNhYmxlQ2xpY2s6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBFbmFibGUvZGlzYWJsZSB0aGUgZHJvcHpvbmUgZW50aXJlbHlcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcblxuICAvKipcbiAgICogSWYgZmFsc2UsIGFsbG93IGRyb3BwZWQgaXRlbXMgdG8gdGFrZSBvdmVyIHRoZSBjdXJyZW50IGJyb3dzZXIgd2luZG93XG4gICAqL1xuICBwcmV2ZW50RHJvcE9uRG9jdW1lbnQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBBbGxvdyBkcm9wcGluZyBtdWx0aXBsZSBmaWxlc1xuICAgKi9cbiAgbXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBgbmFtZWAgYXR0cmlidXRlIGZvciB0aGUgaW5wdXQgdGFnXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGZpbGUgc2l6ZSAoaW4gYnl0ZXMpXG4gICAqL1xuICBtYXhTaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBNaW5pbXVtIGZpbGUgc2l6ZSAoaW4gYnl0ZXMpXG4gICAqL1xuICBtaW5TaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuXG4gIC8qKlxuICAgKiBnZXREYXRhVHJhbnNmZXJJdGVtcyBoYW5kbGVyXG4gICAqIEBwYXJhbSB7RXZlbnR9IGV2ZW50XG4gICAqIEByZXR1cm5zIHtBcnJheX0gYXJyYXkgb2YgRmlsZSBvYmplY3RzXG4gICAqL1xuICBnZXREYXRhVHJhbnNmZXJJdGVtczogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uQ2xpY2sgY2FsbGJhY2tcbiAgICogQHBhcmFtIHtFdmVudH0gZXZlbnRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkZvY3VzIGNhbGxiYWNrXG4gICAqL1xuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb25CbHVyIGNhbGxiYWNrXG4gICAqL1xuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbktleURvd24gY2FsbGJhY2tcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSBgb25Ecm9wYCBtZXRob2QgdGhhdCBhY2NlcHRzIHR3byBhcmd1bWVudHMuXG4gICAqIFRoZSBmaXJzdCBhcmd1bWVudCByZXByZXNlbnRzIHRoZSBhY2NlcHRlZCBmaWxlcyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCB0aGUgcmVqZWN0ZWQgZmlsZXMuXG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogZnVuY3Rpb24gb25Ecm9wKGFjY2VwdGVkRmlsZXMsIHJlamVjdGVkRmlsZXMpIHtcbiAgICogICAvLyBkbyBzdHVmZiB3aXRoIGZpbGVzLi4uXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEZpbGVzIGFyZSBhY2NlcHRlZCBvciByZWplY3RlZCBiYXNlZCBvbiB0aGUgYGFjY2VwdGAgcHJvcC5cbiAgICogVGhpcyBtdXN0IGJlIGEgdmFsaWQgW01JTUUgdHlwZV0oaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9tZWRpYS10eXBlcy9tZWRpYS10eXBlcy54aHRtbCkgYWNjb3JkaW5nIHRvIFtpbnB1dCBlbGVtZW50IHNwZWNpZmljYXRpb25dKGh0dHBzOi8vd3d3LnczLm9yZy93aWtpL0hUTUwvRWxlbWVudHMvaW5wdXQvZmlsZSkgb3IgYSB2YWxpZCBmaWxlIGV4dGVuc2lvbi5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBgb25Ecm9wYCBjYWxsYmFjayB3aWxsIGFsd2F5cyBiZSBjYWxsZWQgcmVnYXJkbGVzcyBpZiB0aGUgZHJvcHBlZCBmaWxlcyB3ZXJlIGFjY2VwdGVkIG9yIHJlamVjdGVkLlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgYG9uRHJvcEFjY2VwdGVkYC9gb25Ecm9wUmVqZWN0ZWRgIHByb3BzIGlmIHlvdSdkIGxpa2UgdG8gcmVhY3QgdG8gYSBzcGVjaWZpYyBldmVudCBpbnN0ZWFkIG9mIHRoZSBgb25Ecm9wYCBwcm9wLlxuICAgKlxuICAgKiBUaGUgYG9uRHJvcGAgY2FsbGJhY2sgd2lsbCBwcm92aWRlIHlvdSB3aXRoIGFuIGFycmF5IG9mIFtGaWxlc10oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0ZpbGUpIHdoaWNoIHlvdSBjYW4gdGhlbiBwcm9jZXNzIGFuZCBzZW5kIHRvIGEgc2VydmVyLlxuICAgKiBGb3IgZXhhbXBsZSwgd2l0aCBbU3VwZXJBZ2VudF0oaHR0cHM6Ly9naXRodWIuY29tL3Zpc2lvbm1lZGlhL3N1cGVyYWdlbnQpIGFzIGEgaHR0cC9hamF4IGxpYnJhcnk6XG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogZnVuY3Rpb24gb25Ecm9wKGFjY2VwdGVkRmlsZXMpIHtcbiAgICogICBjb25zdCByZXEgPSByZXF1ZXN0LnBvc3QoJy91cGxvYWQnKVxuICAgKiAgIGFjY2VwdGVkRmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICogICAgIHJlcS5hdHRhY2goZmlsZS5uYW1lLCBmaWxlKVxuICAgKiAgIH0pXG4gICAqICAgcmVxLmVuZChjYWxsYmFjaylcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIG9uRHJvcDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJvcEFjY2VwdGVkIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyb3BBY2NlcHRlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJvcFJlamVjdGVkIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyb3BSZWplY3RlZDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJhZ1N0YXJ0IGNhbGxiYWNrXG4gICAqL1xuICBvbkRyYWdTdGFydDogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJhZ0VudGVyIGNhbGxiYWNrXG4gICAqL1xuICBvbkRyYWdFbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIG9uRHJhZ092ZXIgY2FsbGJhY2tcbiAgICovXG4gIG9uRHJhZ092ZXI6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBvbkRyYWdMZWF2ZSBjYWxsYmFja1xuICAgKi9cbiAgb25EcmFnTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBQcm92aWRlIGEgY2FsbGJhY2sgb24gY2xpY2tpbmcgdGhlIGNhbmNlbCBidXR0b24gb2YgdGhlIGZpbGUgZGlhbG9nXG4gICAqL1xuICBvbkZpbGVEaWFsb2dDYW5jZWw6IFByb3BUeXBlcy5mdW5jXG59XG5cbkRyb3B6b25lLmRlZmF1bHRQcm9wcyA9IHtcbiAgcHJldmVudERyb3BPbkRvY3VtZW50OiB0cnVlLFxuICBkaXNhYmxlZDogZmFsc2UsXG4gIGRpc2FibGVDbGljazogZmFsc2UsXG4gIG11bHRpcGxlOiB0cnVlLFxuICBtYXhTaXplOiBJbmZpbml0eSxcbiAgbWluU2l6ZTogMCxcbiAgZ2V0RGF0YVRyYW5zZmVySXRlbXM6IGRlZmF1bHRHZXREYXRhVHJhbnNmZXJJdGVtXG59XG4iXSwibmFtZXMiOlsibW9kdWxlIiwidCIsIm4iLCJlIiwiciIsImV4cG9ydHMiLCJvIiwiaSIsImwiLCJjYWxsIiwibSIsImMiLCJkIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwid2luZG93IiwiTWF0aCIsInNlbGYiLCJGdW5jdGlvbiIsIl9fZyIsInZlcnNpb24iLCJfX2UiLCJhIiwidG9TdHJpbmciLCJzbGljZSIsIlN5bWJvbCIsInUiLCJzdG9yZSIsImYiLCJ2IiwiRiIsInkiLCJHIiwiaCIsIlMiLCJQIiwieCIsIkIiLCJnIiwiYiIsIlUiLCJjb3JlIiwiVyIsIlIiLCJyYW5kb20iLCJjb25jYXQiLCJhcHBseSIsImFyZ3VtZW50cyIsIlR5cGVFcnJvciIsIm1pbiIsIkFycmF5IiwiaXNBcnJheSIsInNwbGl0IiwibmFtZSIsInR5cGUiLCJyZXBsYWNlIiwic29tZSIsInRyaW0iLCJjaGFyQXQiLCJ0b0xvd2VyQ2FzZSIsImVuZHNXaXRoIiwidGhpcyIsInZhbHVlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidmFsdWVPZiIsIndyaXRhYmxlIiwiaW5zcGVjdFNvdXJjZSIsImpvaW4iLCJTdHJpbmciLCJsZW5ndGgiLCJfIiwidyIsInB1c2giLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImNlaWwiLCJmbG9vciIsImlzTmFOIiwiY29uc3RydWN0b3IiLCJzdXBwb3J0TXVsdGlwbGUiLCJmaWxlQWNjZXB0ZWQiLCJmaWxlIiwiYWNjZXB0IiwiYWNjZXB0cyIsImlzRHJhZ0RhdGFXaXRoRmlsZXMiLCJldnQiLCJkYXRhVHJhbnNmZXIiLCJ0eXBlcyIsIm9uRG9jdW1lbnREcmFnT3ZlciIsInByZXZlbnREZWZhdWx0IiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJmbnMiLCJldmVudCIsImFyZ3MiLCJmbiIsImRlZmF1bHRQcmV2ZW50ZWQiLCJEcm9wem9uZSIsInN0YXRlIiwiaXNGaWxlRGlhbG9nQWN0aXZlIiwib25Eb2N1bWVudERyb3AiLCJfdGhpcyIsIm5vZGUiLCJjb250YWlucyIsInRhcmdldCIsImRyYWdUYXJnZXRzIiwib25EcmFnU3RhcnQiLCJwZXJzaXN0IiwicHJvcHMiLCJvbkRyYWdFbnRlciIsImluZGV4T2YiLCJyZXNvbHZlIiwiZ2V0RGF0YVRyYW5zZmVySXRlbXMiLCJ0aGVuIiwiaXNQcm9wYWdhdGlvblN0b3BwZWQiLCJzZXRTdGF0ZSIsIm9uRHJhZ092ZXIiLCJvbkRyYWdMZWF2ZSIsImZpbHRlciIsImVsIiwib25Ecm9wIiwib25Ecm9wQWNjZXB0ZWQiLCJvbkRyb3BSZWplY3RlZCIsIm11bHRpcGxlIiwiZHJhZ2dlZEZpbGVzIiwiYWNjZXB0ZWRGaWxlcyIsInJlamVjdGVkRmlsZXMiLCJmb3JFYWNoIiwibWF4U2l6ZSIsIm1pblNpemUiLCJzaXplIiwiZmlsZU1hdGNoU2l6ZSIsInNwbGljZSIsIm9uQ2xpY2siLCJkaXNhYmxlQ2xpY2siLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJzdG9wUHJvcGFnYXRpb24iLCJ1c2VyQWdlbnQiLCJuYXZpZ2F0b3IiLCJpc0llIiwiaXNFZGdlIiwiaXNJZU9yRWRnZSIsIm9wZW4iLCJvbklucHV0RWxlbWVudENsaWNrIiwib25GaWxlRGlhbG9nQ2FuY2VsIiwiaW5wdXQiLCJmaWxlcyIsIm9uRm9jdXMiLCJpc0ZvY3VzZWQiLCJvbkJsdXIiLCJvbktleURvd24iLCJpc0VxdWFsTm9kZSIsImtleUNvZGUiLCJjb21wb3NlSGFuZGxlciIsImRpc2FibGVkIiwiaGFuZGxlciIsImdldFJvb3RQcm9wcyIsInJlZktleSIsInJlc3QiLCJzZXROb2RlUmVmIiwiZ2V0SW5wdXRQcm9wcyIsIm9uQ2hhbmdlIiwiaW5wdXRQcm9wcyIsImRpc3BsYXkiLCJzZXRJbnB1dFJlZiIsImNsaWNrIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcmV2ZW50RHJvcE9uRG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImNoaWxkcmVuIiwiaXNEcmFnQWN0aXZlIiwiZmlsZXNDb3VudCIsImlzTXVsdGlwbGVBbGxvd2VkIiwiaXNEcmFnQWNjZXB0IiwiZXZlcnkiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvbmVPZlR5cGUiLCJzdHJpbmciLCJhcnJheU9mIiwiZnVuYyIsImJvb2wiLCJudW1iZXIiLCJkZWZhdWx0UHJvcHMiLCJJbmZpbml0eSIsImRhdGFUcmFuc2Zlckl0ZW1zTGlzdCIsImR0IiwiaXRlbXMiXSwibWFwcGluZ3MiOiJ3WEFBQUEsVUFBZSxTQUFTQyxHQUFHLFNBQVNDLEVBQUVDLEdBQUcsR0FBR0MsRUFBRUQsR0FBRyxPQUFPQyxFQUFFRCxHQUFHRSxRQUFRLElBQUlDLEVBQUVGLEVBQUVELElBQUlJLEVBQUVKLEVBQUVLLEdBQUUsRUFBR0gsWUFBWSxPQUFPSixFQUFFRSxHQUFHTSxLQUFLSCxFQUFFRCxRQUFRQyxFQUFFQSxFQUFFRCxRQUFRSCxHQUFHSSxFQUFFRSxHQUFFLEVBQUdGLEVBQUVELFFBQVEsSUFBSUQsS0FBSyxPQUFPRixFQUFFUSxFQUFFVCxFQUFFQyxFQUFFUyxFQUFFUCxFQUFFRixFQUFFVSxFQUFFLFNBQVNYLEVBQUVHLEVBQUVELEdBQUdELEVBQUVJLEVBQUVMLEVBQUVHLElBQUlTLE9BQU9DLGVBQWViLEVBQUVHLEdBQUdXLGNBQWEsRUFBR0MsWUFBVyxFQUFHQyxJQUFJZCxLQUFLRCxFQUFFQSxFQUFFLFNBQVNELEdBQUcsSUFBSUcsRUFBRUgsR0FBR0EsRUFBRWlCLFdBQVcsV0FBVyxPQUFPakIsRUFBRWtCLFNBQVMsV0FBVyxPQUFPbEIsR0FBRyxPQUFPQyxFQUFFVSxFQUFFUixFQUFFLElBQUlBLEdBQUdBLEdBQUdGLEVBQUVJLEVBQUUsU0FBU0wsRUFBRUMsR0FBRyxPQUFPVyxPQUFPTyxVQUFVQyxlQUFlWixLQUFLUixFQUFFQyxJQUFJQSxFQUFFb0IsRUFBRSxHQUFHcEIsRUFBRUEsRUFBRXFCLEVBQUUsSUFBOWMsRUFBb2QsU0FBU3RCLEVBQUVDLEdBQUcsSUFBSUUsRUFBRUgsRUFBRUksUUFBUSxvQkFBb0JtQixRQUFRQSxPQUFPQyxNQUFNQSxLQUFLRCxPQUFPLG9CQUFvQkUsTUFBTUEsS0FBS0QsTUFBTUEsS0FBS0MsS0FBS0MsU0FBUyxjQUFUQSxHQUEwQixpQkFBaUJDLE1BQU1BLElBQUl4QixJQUFJLFNBQVNILEVBQUVDLEdBQUdELEVBQUVJLFFBQVEsU0FBU0osR0FBRyxNQUFNLGlCQUFpQkEsRUFBRSxPQUFPQSxFQUFFLG1CQUFtQkEsSUFBSSxTQUFTQSxFQUFFQyxHQUFHLElBQUlFLEVBQUVILEVBQUVJLFNBQVN3QixRQUFRLFNBQVMsaUJBQWlCQyxNQUFNQSxJQUFJMUIsSUFBSSxTQUFTSCxFQUFFQyxFQUFFRSxHQUFHSCxFQUFFSSxTQUFTRCxFQUFFLEVBQUZBLENBQUssV0FBVyxPQUFPLEdBQUdTLE9BQU9DLGtCQUFrQixLQUFLRyxJQUFJLFdBQVcsT0FBTyxLQUFLYyxLQUFLLFNBQVM5QixFQUFFQyxHQUFHRCxFQUFFSSxRQUFRLFNBQVNKLEdBQUcsSUFBSSxRQUFRQSxJQUFJLE1BQU1BLEdBQUcsT0FBTSxLQUFNLFNBQVNBLEVBQUVDLEdBQUcsSUFBSUUsS0FBSzRCLFNBQVMvQixFQUFFSSxRQUFRLFNBQVNKLEdBQUcsT0FBT0csRUFBRUssS0FBS1IsR0FBR2dDLE1BQU0sR0FBRyxLQUFLLFNBQVNoQyxFQUFFQyxFQUFFRSxHQUFHLElBQUlELEVBQUVDLEVBQUUsR0FBRkEsQ0FBTSxPQUFPRSxFQUFFRixFQUFFLEdBQUdHLEVBQUVILEVBQUUsR0FBRzhCLE9BQU9DLEVBQUUsbUJBQW1CNUIsR0FBR04sRUFBRUksUUFBUSxTQUFTSixHQUFHLE9BQU9FLEVBQUVGLEtBQUtFLEVBQUVGLEdBQUdrQyxHQUFHNUIsRUFBRU4sS0FBS2tDLEVBQUU1QixFQUFFRCxHQUFHLFVBQVVMLE1BQU1tQyxNQUFNakMsR0FBRyxTQUFTRixFQUFFQyxFQUFFRSxHQUFHLElBQUlELEVBQUVDLEVBQUUsR0FBR0UsRUFBRUYsRUFBRSxHQUFHRyxFQUFFSCxFQUFFLEdBQUcrQixFQUFFL0IsRUFBRSxJQUFJTyxFQUFFUCxFQUFFLElBQUlpQyxFQUFFLFNBQVNwQyxFQUFFQyxFQUFFRSxHQUFHLElBQUkyQixFQUFFUixFQUFFRCxFQUFFZCxFQUFFOEIsRUFBRXJDLEVBQUVvQyxFQUFFRSxFQUFFQyxFQUFFdkMsRUFBRW9DLEVBQUVJLEVBQUVDLEVBQUV6QyxFQUFFb0MsRUFBRU0sRUFBRS9CLEVBQUVYLEVBQUVvQyxFQUFFTyxFQUFFQyxFQUFFNUMsRUFBRW9DLEVBQUVTLEVBQUVDLEVBQUVQLEVBQUVyQyxFQUFFdUMsRUFBRXZDLEVBQUVELEtBQUtDLEVBQUVELFFBQVFDLEVBQUVELFFBQVFrQixVQUFVVixFQUFFOEIsRUFBRWxDLEVBQUVBLEVBQUVKLEtBQUtJLEVBQUVKLE9BQU84QyxFQUFFdEMsRUFBRVUsWUFBWVYsRUFBRVUsY0FBdUIsSUFBSVcsS0FBYlMsSUFBSXBDLEVBQUVGLEdBQVlFLEVBQXlCa0IsSUFBdkJDLEdBQUdlLEdBQUdTLFFBQUcsSUFBU0EsRUFBRWhCLElBQVFnQixFQUFFM0MsR0FBRzJCLEdBQUd2QixFQUFFcUMsR0FBR3RCLEVBQUVaLEVBQUVXLEVBQUVuQixHQUFHUyxHQUFHLG1CQUFtQlUsRUFBRVgsRUFBRWdCLFNBQVNsQixLQUFLYSxHQUFHQSxFQUFFeUIsR0FBR1osRUFBRVksRUFBRWhCLEVBQUVULEVBQUVyQixFQUFFb0MsRUFBRVksR0FBR3ZDLEVBQUVxQixJQUFJVCxHQUFHZixFQUFFRyxFQUFFcUIsRUFBRXZCLEdBQUdJLEdBQUdvQyxFQUFFakIsSUFBSVQsSUFBSTBCLEVBQUVqQixHQUFHVCxJQUFJbkIsRUFBRStDLEtBQUs1QyxFQUFFK0IsRUFBRUUsRUFBRSxFQUFFRixFQUFFSSxFQUFFLEVBQUVKLEVBQUVNLEVBQUUsRUFBRU4sRUFBRU8sRUFBRSxFQUFFUCxFQUFFUyxFQUFFLEdBQUdULEVBQUVjLEVBQUUsR0FBR2QsRUFBRVksRUFBRSxHQUFHWixFQUFFZSxFQUFFLElBQUluRCxFQUFFSSxRQUFRZ0MsR0FBRyxTQUFTcEMsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLElBQUlFLEVBQUVGLEVBQUUsSUFBSUgsRUFBRUksUUFBUUQsRUFBRSxHQUFHLFNBQVNILEVBQUVDLEVBQUVFLEdBQUcsT0FBT0QsRUFBRWtDLEVBQUVwQyxFQUFFQyxFQUFFSSxFQUFFLEVBQUVGLEtBQUssU0FBU0gsRUFBRUMsRUFBRUUsR0FBRyxPQUFPSCxFQUFFQyxHQUFHRSxFQUFFSCxJQUFJLFNBQVNBLEVBQUVDLEdBQUcsSUFBSUUsRUFBRSxFQUFFRCxFQUFFc0IsS0FBSzRCLFNBQVNwRCxFQUFFSSxRQUFRLFNBQVNKLEdBQUcsTUFBTSxVQUFVcUQsWUFBTyxJQUFTckQsRUFBRSxHQUFHQSxFQUFFLFFBQVFHLEVBQUVELEdBQUc2QixTQUFTLE9BQU8sU0FBUy9CLEVBQUVDLEVBQUVFLEdBQUcsSUFBSUQsRUFBRUMsRUFBRSxJQUFJSCxFQUFFSSxRQUFRLFNBQVNKLEVBQUVDLEVBQUVFLEdBQUcsR0FBR0QsRUFBRUYsUUFBRyxJQUFTQyxFQUFFLE9BQU9ELEVBQUUsT0FBT0csR0FBRyxLQUFLLEVBQUUsT0FBTyxTQUFTQSxHQUFHLE9BQU9ILEVBQUVRLEtBQUtQLEVBQUVFLElBQUksS0FBSyxFQUFFLE9BQU8sU0FBU0EsRUFBRUQsR0FBRyxPQUFPRixFQUFFUSxLQUFLUCxFQUFFRSxFQUFFRCxJQUFJLEtBQUssRUFBRSxPQUFPLFNBQVNDLEVBQUVELEVBQUVHLEdBQUcsT0FBT0wsRUFBRVEsS0FBS1AsRUFBRUUsRUFBRUQsRUFBRUcsSUFBSSxPQUFPLFdBQVcsT0FBT0wsRUFBRXNELE1BQU1yRCxFQUFFc0QsY0FBYyxTQUFTdkQsRUFBRUMsR0FBR0QsRUFBRUksUUFBUSxTQUFTSixHQUFHLFFBQUcsR0FBUUEsRUFBRSxNQUFNd0QsVUFBVSx5QkFBeUJ4RCxHQUFHLE9BQU9BLElBQUksU0FBU0EsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLElBQUlFLEVBQUVtQixLQUFLaUMsSUFBSXpELEVBQUVJLFFBQVEsU0FBU0osR0FBRyxPQUFPQSxFQUFFLEVBQUVLLEVBQUVILEVBQUVGLEdBQUcsa0JBQWtCLElBQUksU0FBU0EsRUFBRUMsRUFBRUUsR0FBR0YsRUFBZWdCLFlBQVcsRUFBR2hCLEVBQUVpQixRQUFRLFNBQVNsQixFQUFFQyxHQUFHLEdBQUdELEdBQUdDLEVBQUUsQ0FBQyxJQUFJRSxFQUFFdUQsTUFBTUMsUUFBUTFELEdBQUdBLEVBQUVBLEVBQUUyRCxNQUFNLEtBQUsxRCxFQUFFRixFQUFFNkQsTUFBTSxHQUFHeEQsRUFBRUwsRUFBRThELE1BQU0sR0FBR3hELEVBQUVELEVBQUUwRCxRQUFRLFFBQVEsSUFBSSxPQUFPNUQsRUFBRTZELEtBQUssU0FBU2hFLEdBQUcsSUFBSUMsRUFBRUQsRUFBRWlFLE9BQU8sTUFBTSxNQUFNaEUsRUFBRWlFLE9BQU8sR0FBR2hFLEVBQUVpRSxjQUFjQyxTQUFTbkUsRUFBRWtFLGVBQWVsRSxFQUFFbUUsU0FBUyxNQUFNOUQsSUFBSUwsRUFBRThELFFBQVEsUUFBUSxJQUFJMUQsSUFBSUosSUFBSSxPQUFNLEdBQUlFLEVBQUUsSUFBSUEsRUFBRSxLQUFLLFNBQVNILEVBQUVDLEVBQUVFLEdBQUdBLEVBQUUsSUFBSUgsRUFBRUksUUFBUUQsRUFBRSxHQUFHdUQsTUFBTU0sTUFBTSxTQUFTaEUsRUFBRUMsRUFBRUUsR0FBRyxJQUFpQkQsRUFBRUMsRUFBRSxHQUFHRSxFQUFFRixFQUFFLEdBQUZBLENBQU0sR0FBR0QsRUFBRUEsRUFBRXlDLEVBQUV6QyxFQUFFb0MsR0FBR25DLEVBQUUsR0FBRkEsSUFBUzZELE1BQUssR0FBSSxTQUFTQSxLQUFLLFNBQVNoRSxHQUFHLE9BQU9LLEVBQUVnRSxLQUFLckUsRUFBRXVELFVBQVUsUUFBUSxTQUFTdkQsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLElBQUlFLEVBQUVGLEVBQUUsSUFBSUcsRUFBRUgsRUFBRSxJQUFJK0IsRUFBRXRCLE9BQU9DLGVBQWVaLEVBQUVtQyxFQUFFakMsRUFBRSxHQUFHUyxPQUFPQyxlQUFlLFNBQVNiLEVBQUVDLEVBQUVFLEdBQUcsR0FBR0QsRUFBRUYsR0FBR0MsRUFBRUssRUFBRUwsR0FBRSxHQUFJQyxFQUFFQyxHQUFHRSxFQUFFLElBQUksT0FBTzZCLEVBQUVsQyxFQUFFQyxFQUFFRSxHQUFHLE1BQU1ILElBQUksR0FBRyxRQUFRRyxHQUFHLFFBQVFBLEVBQUUsTUFBTXFELFVBQVUsNEJBQTRCLE1BQU0sVUFBVXJELElBQUlILEVBQUVDLEdBQUdFLEVBQUVtRSxPQUFPdEUsSUFBSSxTQUFTQSxFQUFFQyxFQUFFRSxHQUFHLElBQUlELEVBQUVDLEVBQUUsR0FBR0gsRUFBRUksUUFBUSxTQUFTSixHQUFHLElBQUlFLEVBQUVGLEdBQUcsTUFBTXdELFVBQVV4RCxFQUFFLHNCQUFzQixPQUFPQSxJQUFJLFNBQVNBLEVBQUVDLEVBQUVFLEdBQUdILEVBQUVJLFNBQVNELEVBQUUsS0FBS0EsRUFBRSxFQUFGQSxDQUFLLFdBQVcsT0FBTyxHQUFHUyxPQUFPQyxlQUFlVixFQUFFLEdBQUZBLENBQU0sT0FBTyxLQUFLYSxJQUFJLFdBQVcsT0FBTyxLQUFLYyxLQUFLLFNBQVM5QixFQUFFQyxFQUFFRSxHQUFHLElBQUlELEVBQUVDLEVBQUUsR0FBR0UsRUFBRUYsRUFBRSxHQUFHb0UsU0FBU2pFLEVBQUVKLEVBQUVHLElBQUlILEVBQUVHLEVBQUVtRSxlQUFleEUsRUFBRUksUUFBUSxTQUFTSixHQUFHLE9BQU9NLEVBQUVELEVBQUVtRSxjQUFjeEUsUUFBUSxTQUFTQSxFQUFFQyxFQUFFRSxHQUFHLElBQUlELEVBQUVDLEVBQUUsR0FBR0gsRUFBRUksUUFBUSxTQUFTSixFQUFFQyxHQUFHLElBQUlDLEVBQUVGLEdBQUcsT0FBT0EsRUFBRSxJQUFJRyxFQUFFRSxFQUFFLEdBQUdKLEdBQUcsbUJBQW1CRSxFQUFFSCxFQUFFK0IsWUFBWTdCLEVBQUVHLEVBQUVGLEVBQUVLLEtBQUtSLElBQUksT0FBT0ssRUFBRSxHQUFHLG1CQUFtQkYsRUFBRUgsRUFBRXlFLFdBQVd2RSxFQUFFRyxFQUFFRixFQUFFSyxLQUFLUixJQUFJLE9BQU9LLEVBQUUsSUFBSUosR0FBRyxtQkFBbUJFLEVBQUVILEVBQUUrQixZQUFZN0IsRUFBRUcsRUFBRUYsRUFBRUssS0FBS1IsSUFBSSxPQUFPSyxFQUFFLE1BQU1tRCxVQUFVLDZDQUE2QyxTQUFTeEQsRUFBRUMsR0FBR0QsRUFBRUksUUFBUSxTQUFTSixFQUFFQyxHQUFHLE9BQU9jLGFBQWEsRUFBRWYsR0FBR2MsZUFBZSxFQUFFZCxHQUFHMEUsV0FBVyxFQUFFMUUsR0FBR3NFLE1BQU1yRSxLQUFLLFNBQVNELEVBQUVDLEVBQUVFLEdBQUcsSUFBSUQsRUFBRUMsRUFBRSxHQUFHRSxFQUFFRixFQUFFLEdBQUdHLEVBQUVILEVBQUUsSUFBSStCLEVBQUUvQixFQUFFLEVBQUZBLENBQUssT0FBT08sRUFBRWdCLFNBQVNLLFNBQVNLLEdBQUcsR0FBRzFCLEdBQUdrRCxNQUFNLFlBQVl6RCxFQUFFLEdBQUd3RSxjQUFjLFNBQVMzRSxHQUFHLE9BQU9VLEVBQUVGLEtBQUtSLEtBQUtBLEVBQUVJLFFBQVEsU0FBU0osRUFBRUMsRUFBRUUsRUFBRU8sR0FBRyxJQUFJb0IsRUFBRSxtQkFBbUIzQixFQUFFMkIsSUFBSXhCLEVBQUVILEVBQUUsU0FBU0UsRUFBRUYsRUFBRSxPQUFPRixJQUFJRCxFQUFFQyxLQUFLRSxJQUFJMkIsSUFBSXhCLEVBQUVILEVBQUUrQixJQUFJN0IsRUFBRUYsRUFBRStCLEVBQUVsQyxFQUFFQyxHQUFHLEdBQUdELEVBQUVDLEdBQUdtQyxFQUFFd0MsS0FBS0MsT0FBTzVFLE1BQU1ELElBQUlFLEVBQUVGLEVBQUVDLEdBQUdFLEVBQUVPLEVBQUVWLEVBQUVDLEdBQUdELEVBQUVDLEdBQUdFLEVBQUVFLEVBQUVMLEVBQUVDLEVBQUVFLFdBQVdILEVBQUVDLEdBQUdJLEVBQUVMLEVBQUVDLEVBQUVFLE9BQU91QixTQUFTUCxVQUFVLFdBQVcsV0FBVyxNQUFNLG1CQUFtQmtELE1BQU1BLEtBQUtuQyxJQUFJeEIsRUFBRUYsS0FBSzZELFNBQVMsU0FBU3JFLEVBQUVDLEdBQUcsSUFBSUUsS0FBS2lCLGVBQWVwQixFQUFFSSxRQUFRLFNBQVNKLEVBQUVDLEdBQUcsT0FBT0UsRUFBRUssS0FBS1IsRUFBRUMsS0FBSyxTQUFTRCxFQUFFQyxHQUFHRCxFQUFFSSxRQUFRLFNBQVNKLEdBQUcsR0FBRyxtQkFBbUJBLEVBQUUsTUFBTXdELFVBQVV4RCxFQUFFLHVCQUF1QixPQUFPQSxJQUFJLFNBQVNBLEVBQUVDLEVBQUVFLEdBQUcsSUFBSUQsRUFBRUMsRUFBRSxJQUFJRSxFQUFFRixFQUFFLElBQUlHLEVBQUVILEVBQUUsSUFBSStCLEVBQUUvQixFQUFFLElBQUlPLEVBQUVQLEVBQUUsSUFBSUgsRUFBRUksUUFBUSxTQUFTSixFQUFFQyxHQUFHLElBQUlFLEVBQUUsR0FBR0gsRUFBRW9DLEVBQUUsR0FBR3BDLEVBQUU4QixFQUFFLEdBQUc5QixFQUFFc0IsRUFBRSxHQUFHdEIsRUFBRXFCLEVBQUUsR0FBR3JCLEVBQUVPLEVBQUUsR0FBR1AsR0FBR3FCLEVBQUVnQixFQUFFcEMsR0FBR1MsRUFBRSxPQUFPLFNBQVNULEVBQUVTLEVBQUU2QixHQUFHLElBQUksSUFBSUUsRUFBRTlCLEVBQUVpQyxFQUFFdEMsRUFBRUwsR0FBRzZDLEVBQUV6QyxFQUFFdUMsR0FBR25DLEVBQUVQLEVBQUVRLEVBQUU2QixFQUFFLEdBQUdRLEVBQUViLEVBQUVZLEVBQUVnQyxRQUFRQyxFQUFFLEVBQUVDLEVBQUU3RSxFQUFFa0MsRUFBRXBDLEVBQUU4QyxHQUFHWCxFQUFFQyxFQUFFcEMsRUFBRSxRQUFHLEVBQU84QyxFQUFFZ0MsRUFBRUEsSUFBSSxJQUFJeEUsR0FBR3dFLEtBQUtqQyxLQUFZbkMsRUFBRUYsRUFBVGdDLEVBQUVLLEVBQUVpQyxHQUFTQSxFQUFFbkMsR0FBRzVDLEdBQUcsR0FBR0csRUFBRTZFLEVBQUVELEdBQUdwRSxPQUFPLEdBQUdBLEVBQUUsT0FBT1gsR0FBRyxLQUFLLEVBQUUsT0FBTSxFQUFHLEtBQUssRUFBRSxPQUFPeUMsRUFBRSxLQUFLLEVBQUUsT0FBT3NDLEVBQUUsS0FBSyxFQUFFQyxFQUFFQyxLQUFLeEMsUUFBUSxHQUFHbkIsRUFBRSxPQUFNLEVBQUcsT0FBT0QsR0FBRyxFQUFFUyxHQUFHUixFQUFFQSxFQUFFMEQsS0FBSyxTQUFTaEYsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLEdBQUdILEVBQUVJLFFBQVFRLE9BQU8sS0FBS3NFLHFCQUFxQixHQUFHdEUsT0FBTyxTQUFTWixHQUFHLE1BQU0sVUFBVUUsRUFBRUYsR0FBR0EsRUFBRTRELE1BQU0sSUFBSWhELE9BQU9aLEtBQUssU0FBU0EsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLElBQUlILEVBQUVJLFFBQVEsU0FBU0osR0FBRyxPQUFPWSxPQUFPVixFQUFFRixNQUFNLFNBQVNBLEVBQUVDLEdBQUcsSUFBSUUsRUFBRXFCLEtBQUsyRCxLQUFLakYsRUFBRXNCLEtBQUs0RCxNQUFNcEYsRUFBRUksUUFBUSxTQUFTSixHQUFHLE9BQU9xRixNQUFNckYsR0FBR0EsR0FBRyxHQUFHQSxFQUFFLEVBQUVFLEVBQUVDLEdBQUdILEtBQUssU0FBU0EsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLElBQUlILEVBQUVJLFFBQVEsU0FBU0osRUFBRUMsR0FBRyxPQUFPLElBQUlDLEVBQUVGLEdBQU4sQ0FBVUMsS0FBSyxTQUFTRCxFQUFFQyxFQUFFRSxHQUFHLElBQUlELEVBQUVDLEVBQUUsR0FBR0UsRUFBRUYsRUFBRSxJQUFJRyxFQUFFSCxFQUFFLEVBQUZBLENBQUssV0FBV0gsRUFBRUksUUFBUSxTQUFTSixHQUFHLElBQUlDLEVBQUUsT0FBT0ksRUFBRUwsS0FBcUIsbUJBQWhCQyxFQUFFRCxFQUFFc0YsY0FBa0NyRixJQUFJeUQsUUFBUXJELEVBQUVKLEVBQUVrQixhQUFhbEIsT0FBRSxHQUFRQyxFQUFFRCxJQUFJLFFBQVFBLEVBQUVBLEVBQUVLLE1BQU1MLE9BQUUsU0FBUyxJQUFTQSxFQUFFeUQsTUFBTXpELElBQUksU0FBU0QsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLEdBQUdILEVBQUVJLFFBQVFzRCxNQUFNQyxTQUFTLFNBQVMzRCxHQUFHLE1BQU0sU0FBU0UsRUFBRUYsS0FBSyxTQUFTQSxFQUFFQyxFQUFFRSxHQUFHLElBQUlELEVBQUVDLEVBQUUsR0FBR0UsRUFBRUgsRUFBRSx3QkFBd0JBLEVBQUUsMEJBQTBCRixFQUFFSSxRQUFRLFNBQVNKLEdBQUcsT0FBT0ssRUFBRUwsS0FBS0ssRUFBRUwsU0FBUyxTQUFTQSxFQUFFQyxFQUFFRSxHQUFHLElBQWlCRCxFQUFFQyxFQUFFLEdBQUdILEVBQUVJLFFBQVEsU0FBU0osRUFBRUMsR0FBRyxRQUFRRCxHQUFHRSxFQUFFLFdBQVdELEVBQUVELEVBQUVRLEtBQUssS0FBSyxhQUFhLEdBQUdSLEVBQUVRLEtBQUssVUFBVSxTQUFTUixFQUFFQyxFQUFFRSxHQUFHQSxFQUFFLElBQUlILEVBQUVJLFFBQVFELEVBQUUsR0FBRzBFLE9BQU9ULFVBQVUsU0FBU3BFLEVBQUVDLEVBQUVFLEdBQUcsSUFBaUJELEVBQUVDLEVBQUUsR0FBR0UsRUFBRUYsRUFBRSxJQUFJRyxFQUFFSCxFQUFFLElBQUkrQixFQUFFLEdBQUdrQyxTQUFTbEUsRUFBRUEsRUFBRXlDLEVBQUV6QyxFQUFFb0MsRUFBRW5DLEVBQUUsR0FBRkEsQ0FBTSxZQUFZLFVBQVVpRSxTQUFTLFNBQVNwRSxHQUFHLElBQUlDLEVBQUVLLEVBQUUrRCxLQUFLckUsRUFBRSxZQUFZRyxFQUFFb0QsVUFBVXVCLE9BQU8sRUFBRXZCLFVBQVUsUUFBRyxFQUFPckQsRUFBRUcsRUFBRUosRUFBRTZFLFFBQVFwRSxPQUFFLElBQVNQLEVBQUVELEVBQUVzQixLQUFLaUMsSUFBSXBELEVBQUVGLEdBQUdELEdBQUdrQyxFQUFFeUMsT0FBTzdFLEdBQUcsT0FBT2tDLEVBQUVBLEVBQUUxQixLQUFLUCxFQUFFbUMsRUFBRTFCLEdBQUdULEVBQUUrQixNQUFNdEIsRUFBRTBCLEVBQUUwQyxPQUFPcEUsS0FBSzBCLE1BQU0sU0FBU3BDLEVBQUVDLEVBQUVFLEdBQUcsSUFBSUQsRUFBRUMsRUFBRSxJQUFJRSxFQUFFRixFQUFFLElBQUlILEVBQUVJLFFBQVEsU0FBU0osRUFBRUMsRUFBRUUsR0FBRyxHQUFHRCxFQUFFRCxHQUFHLE1BQU11RCxVQUFVLFVBQVVyRCxFQUFFLDBCQUEwQixPQUFPMEUsT0FBT3hFLEVBQUVMLE1BQU0sU0FBU0EsRUFBRUMsRUFBRUUsR0FBRyxJQUFJRCxFQUFFQyxFQUFFLEdBQUdFLEVBQUVGLEVBQUUsR0FBR0csRUFBRUgsRUFBRSxFQUFGQSxDQUFLLFNBQVNILEVBQUVJLFFBQVEsU0FBU0osR0FBRyxJQUFJQyxFQUFFLE9BQU9DLEVBQUVGLFVBQUssS0FBVUMsRUFBRUQsRUFBRU0sTUFBTUwsRUFBRSxVQUFVSSxFQUFFTCxNQUFNLFNBQVNBLEVBQUVDLEVBQUVFLEdBQUcsSUFBSUQsRUFBRUMsRUFBRSxFQUFGQSxDQUFLLFNBQVNILEVBQUVJLFFBQVEsU0FBU0osR0FBRyxJQUFJQyxFQUFFLElBQUksSUFBSSxNQUFNRCxHQUFHQyxHQUFHLE1BQU1FLEdBQUcsSUFBSSxPQUFPRixFQUFFQyxJQUFHLEdBQUksTUFBTUYsR0FBR0MsR0FBRyxNQUFNRCxLQUFLLE9BQU0seW9DQ0UxeE51RixFQUNTLG9CQUFiaEIsV0FBNEJBLFdBQVlBLFNBQVNDLGVBQ3BELGFBQWNELFNBQVNDLGNBQWMsU0EyQnBDLFNBQVNnQixFQUFhQyxFQUFNQyxTQUNaLDJCQUFkRCxFQUFLM0IsTUFBcUM2QixFQUFRRixFQUFNQyxHQVcxRCxTQUFTRSxFQUFvQkMsVUFDN0JBLEVBQUlDLGNBS0ZwQyxNQUFNdkMsVUFBVTZDLEtBQUt4RCxLQUMxQnFGLEVBQUlDLGFBQWFDLE1BQ2pCLGtCQUFpQixVQUFUakMsR0FBNkIsMkJBQVRBLElBU3pCLFNBQVNrQyxFQUFtQkgsS0FDN0JJLGlCQXNCQyxTQUFTQywrQkFBd0JDLGdEQUMvQixTQUFDQyw4QkFBVUMsMERBQ2hCRixFQUFJbkMsS0FBSyxzQkFDRHNDLGdCQUFHRixVQUFVQyxJQUNaRCxFQUFNRyx3QkN2RWJDLGlOQUNKQyw0REE0QkFDLG9CQUFxQixJQUVyQkMsZUFBaUIsWUFDWEMsRUFBS0MsTUFBUUQsRUFBS0MsS0FBS0MsU0FBU2pCLEVBQUlrQixZQUlwQ2QsbUJBQ0NlLG1CQUdQQyxZQUFjLGNBQ1JDLFVBQ0FOLEVBQUtPLE1BQU1GLGFBQWVyQixFQUFvQkMsTUFDM0NzQixNQUFNRixZQUFZekcsT0FBV3FGLE1BSXRDdUIsWUFBYyxjQUNSbkIsa0JBRzBDLElBQTFDVyxFQUFLSSxZQUFZSyxRQUFReEIsRUFBSWtCLFdBQzFCQyxZQUFZL0IsS0FBS1ksRUFBSWtCLFVBR3hCRyxVQUVBdEIsRUFBb0JDLGFBQ2R5QixRQUFRVixFQUFLTyxNQUFNSSxxQkFBcUIxQixJQUFNMkIsS0FBSyxZQUNyRDNCLEVBQUk0QiwwQkFJSEMsdUNBR1csTUFJZGQsRUFBS08sTUFBTUMsZUFDUkQsTUFBTUMsWUFBWTVHLE9BQVdxRixPQUt4QzhCLFdBQWEscUJBRVAxQixtQkFDQWlCLFVBRUFOLEVBQUtPLE1BQU1RLFlBQWMvQixFQUFvQkMsTUFDMUNzQixNQUFNUSxXQUFXbkgsT0FBV3FGLElBRzVCLEtBR1QrQixZQUFjLGNBQ1IzQixtQkFDQWlCLFlBR0NGLFlBQWNKLEVBQUtJLFlBQVlhLE9BQU8sbUJBQU1DLElBQU9qQyxFQUFJa0IsUUFBVUgsRUFBS0MsS0FBS0MsU0FBU2dCLEtBQ3JGbEIsRUFBS0ksWUFBWWxDLE9BQVMsTUFLekI0Qyx3QkFDVyxvQkFJWmQsRUFBS08sTUFBTVMsYUFBZWhDLEVBQW9CQyxNQUMzQ3NCLE1BQU1TLFlBQVlwSCxPQUFXcUYsT0FJdENrQyxPQUFTLGtCQVFIbkIsRUFBS08sTUFOUFksSUFBQUEsT0FDQUMsSUFBQUEsZUFDQUMsSUFBQUEsZUFDQUMsSUFBQUEsU0FDQXhDLElBQUFBLE9BQ0E2QixJQUFBQSx1QkFJRXRCLG1CQUdBaUIsWUFHQ0YsaUJBQ0FOLG9CQUFxQixJQUdyQnlCLGFBQWUsT0FHZlQsd0JBQ1csb0JBSVo5QixFQUFvQkMsWUFDZHlCLFFBQVFDLEVBQXFCMUIsSUFBTTJCLEtBQUssZ0JBQ3hDWSxLQUNBQyxLQUVGeEMsRUFBSTRCLDJCQUlDYSxRQUFRLFlBRWI5QyxFQUFhQyxFQUFNQyxJRGxJeEIsU0FBdUJELEVBQU04QyxFQUFTQyxVQUNwQy9DLEVBQUtnRCxNQUFRRixHQUFXOUMsRUFBS2dELE1BQVFELEVDa0lsQ0UsQ0FBY2pELEVBQU1tQixFQUFLTyxNQUFNb0IsUUFBUzNCLEVBQUtPLE1BQU1xQixXQUVyQ3ZELEtBQUtRLEtBRUxSLEtBQUtRLE1BSWxCeUMsR0FBWUUsRUFBY3RELE9BQVMsS0FHeEJHLGVBQVFtRCxFQUFjTyxPQUFPLE9BTXhDakIsVUFBV1UsZ0JBQWVDLGlCQUFpQixXQUMxQ04sS0FDS3ZILE9BQVc0SCxFQUFlQyxFQUFleEMsR0FHOUN3QyxFQUFjdkQsT0FBUyxHQUFLbUQsS0FDZnpILE9BQVc2SCxFQUFleEMsR0FHdkN1QyxFQUFjdEQsT0FBUyxHQUFLa0QsS0FDZnhILE9BQVc0SCxFQUFldkMsV0FPbkQrQyxRQUFVLGtCQUMwQmhDLEVBQUtPLE1BQS9CeUIsSUFBQUEsUUFBU0MsSUFBQUEsYUFHYkQsS0FDTXBJLE9BQVdxRixHQUtoQmdELEdBQWlCaEQsRUFBSWlELHlCQUNwQkMsbUJEM0lILGVBQW9CQyx5REFBWXpILE9BQU8wSCxVQUFVRCxpQkFSeEQsU0FBY0EsVUFDMEIsSUFBL0JBLEVBQVUzQixRQUFRLFVBQXFELElBQW5DMkIsRUFBVTNCLFFBQVEsWUFRdEQ2QixDQUFLRixJQUxkLFNBQWdCQSxVQUN5QixJQUFoQ0EsRUFBVTNCLFFBQVEsU0FJQzhCLENBQU9ILEdDK0l6QkksS0FHR0Msa0JBRk16QyxFQUFLeUMsS0FBTSxPQU81QkMsb0JBQXNCLGNBQ2hCUCxxQkFHTlEsbUJBQXFCLGVBRVhBLEVBQXVCM0MsRUFBS08sTUFBNUJvQyxtQkFFSjNDLEVBQUtGLCtCQUNJLFdBQ1MsTUFBZEUsRUFBSzRDLFFBRVc1QyxFQUFLNEMsTUFBZkMsTUFFRzNFLFdBQ0o0QixvQkFBcUIsRUFFUSxtQkFBdkI2QyxVQUtkLFFBSVBHLFFBQVUsZ0JBQ0FBLEVBQVk5QyxFQUFLTyxNQUFqQnVDLFFBQ0pBLEtBQ01sSixPQUFXcUYsR0FFaEJBLEVBQUlpRCx3QkFDRnBCLFVBQVdpQyxXQUFXLE9BSS9CQyxPQUFTLGdCQUNDQSxFQUFXaEQsRUFBS08sTUFBaEJ5QyxPQUNKQSxLQUNLcEosT0FBV3FGLEdBRWZBLEVBQUlpRCx3QkFDRnBCLFVBQVdpQyxXQUFXLE9BSS9CRSxVQUFZLGdCQUNGQSxFQUFjakQsRUFBS08sTUFBbkIwQyxVQUNIakQsRUFBS0MsS0FBS2lELFlBQVlqRSxFQUFJa0IsVUFJM0I4QyxLQUNRckosT0FBV3FGLEdBR2xCQSxFQUFJaUQsc0JBQXlDLEtBQWhCakQsRUFBSWtFLFNBQWtDLEtBQWhCbEUsRUFBSWtFLFlBQ3REOUQsbUJBQ0NvRCxZQUlUVyxlQUFpQixtQkFDWHBELEVBQUtPLE1BQU04QyxTQUNOLEtBRUZDLEtBR1RDLGFBQWUsaUZBQ2JDLE9BQUFBLGFBQVMsUUFDVFAsSUFBQUEsVUFDQUgsSUFBQUEsUUFDQUUsSUFBQUEsT0FDQWhCLElBQUFBLFFBQ0EzQixJQUFBQSxZQUNBRyxJQUFBQSxZQUNBTyxJQUFBQSxXQUNBQyxJQUFBQSxZQUNBRyxJQUFBQSxPQUNHc0Msa0pBRVF6RCxFQUFLb0QsZUFDZEgsRUFBWTNELEVBQXFCMkQsRUFBV2pELEVBQUtpRCxXQUFhakQsRUFBS2lELG1CQUU1RGpELEVBQUtvRCxlQUNaTixFQUFVeEQsRUFBcUJ3RCxFQUFTOUMsRUFBSzhDLFNBQVc5QyxFQUFLOEMsZ0JBRXZEOUMsRUFBS29ELGVBQWVKLEVBQVMxRCxFQUFxQjBELEVBQVFoRCxFQUFLZ0QsUUFBVWhELEVBQUtnRCxnQkFDN0VoRCxFQUFLb0QsZUFDWnBCLEVBQVUxQyxFQUFxQjBDLEVBQVNoQyxFQUFLZ0MsU0FBV2hDLEVBQUtnQyxxQkFFbERoQyxFQUFLb0QsZUFDaEIvQyxFQUFjZixFQUFxQmUsRUFBYUwsRUFBS0ssYUFBZUwsRUFBS0sseUJBRTlETCxFQUFLb0QsZUFDaEI1QyxFQUFjbEIsRUFBcUJrQixFQUFhUixFQUFLUSxhQUFlUixFQUFLUSx3QkFFL0RSLEVBQUtvRCxlQUNmckMsRUFBYXpCLEVBQXFCeUIsRUFBWWYsRUFBS2UsWUFBY2YsRUFBS2Usd0JBRTNEZixFQUFLb0QsZUFDaEJwQyxFQUFjMUIsRUFBcUIwQixFQUFhaEIsRUFBS2dCLGFBQWVoQixFQUFLZ0Isb0JBRW5FaEIsRUFBS29ELGVBQWVqQyxFQUFTN0IsRUFBcUI2QixFQUFRbkIsRUFBS21CLFFBQVVuQixFQUFLbUIsYUFDckZxQyxFQUFTeEQsRUFBSzBELDJCQUNMMUQsRUFBS08sTUFBTThDLFVBQVksRUFBSSxNQUNsQ0ksTUFHTEUsY0FBZ0IsK0VBQUdILE9BQUFBLGFBQVMsUUFBT0ksSUFBQUEsU0FBVTVCLElBQUFBLFFBQVl5Qix5Q0FDcEJ6RCxFQUFLTyxNQUFoQ3pCLElBQUFBLE9BQVF3QyxJQUFBQSxTQUFVckUsSUFBQUEsS0FDcEI0RyxtQkFFRSxjQUNHQyxRQUFTLGlCQUNSbkYsR0FBbUIyQyxXQUNuQmhDLEVBQXFCc0UsRUFBVTVELEVBQUttQixnQkFDckM3QixFQUFxQjBDLEVBQVNoQyxFQUFLMEMsa0NBQzlCLGdCQUNILEdBQ1ZjLEVBQVN4RCxFQUFLK0Qsb0JBRWI5RyxHQUFRQSxFQUFLaUIsV0FDSmpCLEtBQU9BLFFBR2Y0RyxFQUNBSixNQUlQQyxXQUFhLGNBQ056RCxLQUFPQSxLQUdkOEQsWUFBYyxjQUNQbkIsTUFBUUEsS0FRZkgsS0FBTyxhQUNBM0Msb0JBQXFCLEVBQ3RCRSxFQUFLNEMsVUFDRkEsTUFBTWxGLE1BQVEsT0FDZGtGLE1BQU1vQixvVkFyV01DLEVBQU1DLDhEQVFqQkMsRUFBMEIxRyxLQUFLOEMsTUFBL0I0RCwyQkFDSC9ELGVBRUQrRCxhQUNPQyxpQkFBaUIsV0FBWWhGLEdBQW9CLFlBQ2pEZ0YsaUJBQWlCLE9BQVEzRyxLQUFLc0MsZ0JBQWdCLFdBR2xEcUUsaUJBQWlCLFFBQVMzRyxLQUFLa0Ysb0JBQW9CLGtEQUl4QmxGLEtBQUs4QyxNQUEvQjRELGlDQUVHRSxvQkFBb0IsV0FBWWpGLFlBQ2hDaUYsb0JBQW9CLE9BQVE1RyxLQUFLc0Msd0JBR3JDc0Usb0JBQW9CLFFBQVM1RyxLQUFLa0Ysb0JBQW9CLHdDREhoQ0UsRUFBTy9ELElDbVZLckIsS0FBSzhDLE1BQXRDK0QsSUFBQUEsU0FBVWhELElBQUFBLFNBQVUrQixJQUFBQSxXQUNvRDVGLEtBQUtvQyxNQUE3RTBFLElBQUFBLGFBQWN4QixJQUFBQSxVQUFXeEIsSUFBQUEsYUFBY0MsSUFBQUEsY0FBZUMsSUFBQUEsY0FFeEQrQyxFQUFhakQsRUFBYXJELE9BQzFCdUcsRUFBb0JuRCxHQUFZa0QsR0FBYyxFQUM5Q0UsRUFBZUYsRUFBYSxJRHhWTDNCLEVDd1YyQnRCLEVEeFZwQnpDLEVDd1ZrQ3JCLEtBQUs4QyxNQUFNekIsT0R2VjVFK0QsRUFBTThCLE1BQU0sbUJBQVEvRixFQUFhQyxFQUFNQyxhQzBWckN3Riw4Q0FGY0UsRUFBYSxLQUFPRSxJQUFpQkQsNERBUzdDMUIsSUFBY00sZUFDWDVGLEtBQUs4RiwyQkFDSjlGLEtBQUtrRyxtQkFDZGxHLEtBQUtnRix1QkFPakI3QyxFQUFTZ0Ysa0JBUUNDLEVBQVVDLFdBQVdELEVBQVVFLE9BQVFGLEVBQVVHLFFBQVFILEVBQVVFLG1CQWlCakVGLEVBQVVJLGtCQUtOSixFQUFVSyxjQUtkTCxFQUFVSywyQkFLR0wsRUFBVUssY0FLdkJMLEVBQVVLLFVBS2RMLEVBQVVFLGVBS1BGLEVBQVVNLGVBS1ZOLEVBQVVNLDRCQU9HTixFQUFVSSxhQU12QkosRUFBVUksYUFLVkosRUFBVUksWUFLWEosRUFBVUksZUFLUEosRUFBVUksWUErQmJKLEVBQVVJLG9CQUtGSixFQUFVSSxvQkFLVkosRUFBVUksaUJBS2JKLEVBQVVJLGlCQUtWSixFQUFVSSxnQkFLWEosRUFBVUksaUJBS1RKLEVBQVVJLHdCQUtISixFQUFVSSxNQUdoQ3JGLEVBQVN3RixxQ0FDZ0IsWUFDYixnQkFDSSxZQUNKLFVBQ0RDLEVBQUFBLFVBQ0EsdUJEL2lCSixTQUE4QjdGLE9BQy9COEYsUUFDQTlGLEVBQU1OLGFBQWMsS0FDaEJxRyxFQUFLL0YsRUFBTU4sYUFJYnFHLEVBQUcxQyxPQUFTMEMsRUFBRzFDLE1BQU0zRSxTQUNDcUgsRUFBRzFDLE1BQ2xCMEMsRUFBR0MsT0FBU0QsRUFBR0MsTUFBTXRILFdBR05xSCxFQUFHQyxZQUVwQmhHLEVBQU1XLFFBQVVYLEVBQU1XLE9BQU8wQyxVQUNkckQsRUFBTVcsT0FBTzBDLGNBSWhDL0YsTUFBTXZDLFVBQVVhLE1BQU14QixLQUFLMEwifQ==
package/package.json CHANGED
@@ -148,7 +148,7 @@
148
148
  "path": "@commitlint/prompt"
149
149
  }
150
150
  },
151
- "version": "8.0.2",
151
+ "version": "8.0.3",
152
152
  "engines": {
153
153
  "node": ">= 6"
154
154
  }
@@ -47,7 +47,7 @@ export function isDragDataWithFiles(evt) {
47
47
  }
48
48
  // https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/types
49
49
  // https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Recommended_drag_types#file
50
- return Array.prototype.every.call(
50
+ return Array.prototype.some.call(
51
51
  evt.dataTransfer.types,
52
52
  type => type === 'Files' || type === 'application/x-moz-file'
53
53
  )
@@ -150,12 +150,14 @@ describe('isDragDataWithFiles()', () => {
150
150
  ).toBe(true)
151
151
  expect(isDragDataWithFiles({ dataTransfer: { types: ['text/plain'] } })).toBe(false)
152
152
  expect(isDragDataWithFiles({ dataTransfer: { types: ['text/html'] } })).toBe(false)
153
- expect(isDragDataWithFiles({ dataTransfer: { types: ['Files', 'text/html'] } })).toBe(false)
153
+ expect(isDragDataWithFiles({ dataTransfer: { types: ['Files', 'application/test'] } })).toBe(
154
+ true
155
+ )
154
156
  expect(
155
157
  isDragDataWithFiles({
156
- dataTransfer: { types: ['application/x-moz-file', 'text/html'] }
158
+ dataTransfer: { types: ['application/x-moz-file', 'application/test'] }
157
159
  })
158
- ).toBe(false)
160
+ ).toBe(true)
159
161
  })
160
162
 
161
163
  it('should return true if {dataTransfer} is not defined', () => {