UNPKG

26.6 kBJavaScriptView Raw
1module.exports=function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=12)}([function(e,t){e.exports=require("react")},function(e,t){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,t){e.exports=require("we-edit")},function(e,t){e.exports=require("@babel/runtime/helpers/classCallCheck")},function(e,t){e.exports=require("@babel/runtime/helpers/createClass")},function(e,t){e.exports=require("@babel/runtime/helpers/possibleConstructorReturn")},function(e,t){e.exports=require("@babel/runtime/helpers/getPrototypeOf")},function(e,t){e.exports=require("@babel/runtime/helpers/inherits")},function(e,t){e.exports=require("material-ui/TextField")},function(e,t){e.exports=require("@babel/runtime/helpers/extends")},function(e,t){e.exports=require("@babel/runtime/helpers/assertThisInitialized")},function(e,t){e.exports=require("readable-stream")},function(e,t,r){"use strict";r.r(t),r.d(t,"Writer",(function(){return E})),r.d(t,"Reader",(function(){return R}));var n=r(9),o=r.n(n),a=r(3),i=r.n(a),u=r(4),l=r.n(u),s=r(5),c=r.n(s),p=r(6),f=r.n(p),d=r(10),m=r.n(d),b=r(7),h=r.n(b),v=r(1),y=r.n(v),w=r(0),g=r.n(w),O=r(11),x=r(2),j=r(8),P=r.n(j);function k(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function L(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?k(r,!0).forEach((function(t){y()(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):k(r).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var S=function(){try{return window.URL.createObjectURL&&document.createElement}catch(e){return!1}},E=function(e){function t(){var e,r;i()(this,t);for(var n=arguments.length,o=new Array(n),a=0;a<n;a++)o[a]=arguments[a];return r=c()(this,(e=f()(t)).call.apply(e,[this].concat(o))),y()(m()(r),"state",L({windowFeatures:"menubar=no,location=no,resizable=yes,scrollbars=yes,status=no"},r.props)),r}return h()(t,e),l()(t,[{key:"componentWillReceiveProps",value:function(e){var t=e.format,r=e.fixName;this.props.format!=t&&this.setState({name:r(this.state.name)})}},{key:"render",value:function(){var e=this,t=this.state,r=t.name,n=t.target,o=t.windowFeatures;return g.a.createElement("center",null,g.a.createElement("div",null,g.a.createElement(P.a,{value:r||"",floatingLabelText:"file name",onChange:function(t,r){return e.setState({name:r})}})),g.a.createElement("div",null,g.a.createElement(P.a,{value:n||"",floatingLabelText:"target:_blank|_self|_parent|_top|frame name",onChange:function(t,r){r?e.setState({target:r,name:""}):e.setState({target:r,name:e.props.name})}})),g.a.createElement("div",null,g.a.createElement(P.a,{value:o||"",floatingLabelText:"window features",onChange:function(t,r){e.setState({windowFeatures:r})}})))}},{key:"create",value:function(){var e=this,t=this.data=[],r=new O.Writable({write:function(e,r,n){t.push(e),n()}});r.on("error",(function(e){console.error(e)}));var n=this.props,o=n.name,a=n.format,i=n.target,u=n.windowFeatures;return r.on("finish",(function(){i?e.preview(i,u):e.download(-1!=o.indexOf(".")?o:"".concat(o,".").concat(a))})),r}},{key:"download",value:function(e){var t=window.URL.createObjectURL(this.blob),r=document.createElement("a");document.body.appendChild(r),r.download=e,r.href=t,r.click(),document.body.removeChild(r),window.URL.revokeObjectURL(t)}},{key:"preview",value:function(e,t){var r=window.URL.createObjectURL(this.blob);if(t){window.open(r,e||"we-edit-previewer",t).addEventListener("beforeunload",(function(){return window.URL.revokeObjectURL(r)}))}else{var n=document.createElement("a"),o=document.querySelector("body");n.href=r,n.target=e||"we-edit-previewer",o.appendChild(n),n.click(),o.removeChild(n)}}},{key:"blob",get:function(){switch(this.props.format){case"svg":return new Blob(this.data,{type:"image/svg+xml"});default:return new Blob(this.data,{type:"application/"+this.props.format})}}}]),t}(x.Stream.Base);y()(E,"defaultProps",L({},x.Stream.Base.defaultProps,{type:"browser"})),y()(E,"support",S);var R=function(e){function t(){var e;return i()(this,t),(e=c()(this,f()(t).apply(this,arguments))).state={},e}return h()(t,e),l()(t,[{key:"render",value:function(){var e=this;if(this.state.done)return null;var t=this.props.onLoad,r=x.Input.supports,n=Array.from(r.values()).map((function(e){return e.defaultProps.ext})).filter((function(e){return!!e})).join(",").split(",").map((function(e){return"."+e}));return g.a.createElement(q,{key:Date.now(),type:"file",accept:n.join(","),onChange:function(r){var n=r.target,o=n.files[0],a=new FileReader;a.onload=function(e){t({data:e.target.result,mimeType:o.type,name:o.name})},a.readAsArrayBuffer(o),n.value="",e.setState({done:!0})},style:{position:"fixed",left:-9999}})}}]),t}(x.Loader.Base);y()(R,"displayName","loader-browser"),y()(R,"defaultProps",L({},x.Loader.Base.defaultProps,{type:"browser"})),y()(R,"support",S);var q=function(e){function t(){return i()(this,t),c()(this,f()(t).apply(this,arguments))}return h()(t,e),l()(t,[{key:"render",value:function(){return g.a.createElement("input",o()({ref:"input"},this.props))}},{key:"componentDidMount",value:function(){this.refs.input.click()}}]),t}(g.a.Component);t.default={install:function(){R.install(),E.install()},uninstall:function(){R.uninstall(),E.uninstall()}}}]);
2//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2UtZWRpdFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2NyZWF0ZUNsYXNzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvaW5oZXJpdHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJtYXRlcmlhbC11aS9UZXh0RmllbGRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWRhYmxlLXN0cmVhbVwiIiwid2VicGFjazovLy8uL3BhY2thZ2VzL3dlLWVkaXQtbG9hZGVyLXN0cmVhbS1icm93c2VyL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsZWRNb2R1bGVzIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiZXhwb3J0cyIsIm1vZHVsZSIsImkiLCJsIiwibW9kdWxlcyIsImNhbGwiLCJtIiwiYyIsImQiLCJuYW1lIiwiZ2V0dGVyIiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsInIiLCJTeW1ib2wiLCJ0b1N0cmluZ1RhZyIsInZhbHVlIiwidCIsIm1vZGUiLCJfX2VzTW9kdWxlIiwibnMiLCJjcmVhdGUiLCJrZXkiLCJiaW5kIiwibiIsIm9iamVjdCIsInByb3BlcnR5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJwIiwicyIsInJlcXVpcmUiLCJzdXBwb3J0Iiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiZSIsIldyaXRlciIsIndpbmRvd0ZlYXR1cmVzIiwicHJvcHMiLCJmb3JtYXQiLCJmaXhOYW1lIiwidGhpcyIsInNldFN0YXRlIiwic3RhdGUiLCJ0YXJnZXQiLCJmbG9hdGluZ0xhYmVsVGV4dCIsIm9uQ2hhbmdlIiwiZGF0YSIsInN0cmVhbSIsIldyaXRhYmxlIiwid3JpdGUiLCJjaHVuayIsImVuYyIsIm5leHQiLCJwdXNoIiwib24iLCJjb25zb2xlIiwiZXJyb3IiLCJwcmV2aWV3IiwiZG93bmxvYWQiLCJpbmRleE9mIiwidXJsIiwiYmxvYiIsImxpbmsiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJocmVmIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsInNyYyIsIm9wZW4iLCJhZGRFdmVudExpc3RlbmVyIiwiYSIsInF1ZXJ5U2VsZWN0b3IiLCJCbG9iIiwidHlwZSIsIlN0cmVhbSIsIkJhc2UiLCJkZWZhdWx0UHJvcHMiLCJSZWFkZXIiLCJhcmd1bWVudHMiLCJkb25lIiwib25Mb2FkIiwic3VwcG9ydHMiLCJJbnB1dCIsInR5cGVzIiwiQXJyYXkiLCJmcm9tIiwidmFsdWVzIiwibWFwIiwiZXh0IiwiZmlsdGVyIiwiam9pbiIsInNwbGl0IiwiSW5wdXRPbmNlIiwiRGF0ZSIsIm5vdyIsImFjY2VwdCIsImZpbGUiLCJmaWxlcyIsInJlYWRlciIsIkZpbGVSZWFkZXIiLCJvbmxvYWQiLCJyZXN1bHQiLCJtaW1lVHlwZSIsInJlYWRBc0FycmF5QnVmZmVyIiwic3R5bGUiLCJwb3NpdGlvbiIsImxlZnQiLCJMb2FkZXIiLCJyZWYiLCJyZWZzIiwiaW5wdXQiLCJSZWFjdCIsIkNvbXBvbmVudCIsImluc3RhbGwiLCJ1bmluc3RhbGwiXSwibWFwcGluZ3MiOiIyQkFDRSxJQUFJQSxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVQyxRQUduQyxJQUFJQyxFQUFTSixFQUFpQkUsR0FBWSxDQUN6Q0csRUFBR0gsRUFDSEksR0FBRyxFQUNISCxRQUFTLElBVVYsT0FOQUksRUFBUUwsR0FBVU0sS0FBS0osRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBU0YsR0FHL0RHLEVBQU9FLEdBQUksRUFHSkYsRUFBT0QsUUEwRGYsT0FyREFGLEVBQW9CUSxFQUFJRixFQUd4Qk4sRUFBb0JTLEVBQUlWLEVBR3hCQyxFQUFvQlUsRUFBSSxTQUFTUixFQUFTUyxFQUFNQyxHQUMzQ1osRUFBb0JhLEVBQUVYLEVBQVNTLElBQ2xDRyxPQUFPQyxlQUFlYixFQUFTUyxFQUFNLENBQUVLLFlBQVksRUFBTUMsSUFBS0wsS0FLaEVaLEVBQW9Ca0IsRUFBSSxTQUFTaEIsR0FDWCxvQkFBWGlCLFFBQTBCQSxPQUFPQyxhQUMxQ04sT0FBT0MsZUFBZWIsRUFBU2lCLE9BQU9DLFlBQWEsQ0FBRUMsTUFBTyxXQUU3RFAsT0FBT0MsZUFBZWIsRUFBUyxhQUFjLENBQUVtQixPQUFPLEtBUXZEckIsRUFBb0JzQixFQUFJLFNBQVNELEVBQU9FLEdBRXZDLEdBRFUsRUFBUEEsSUFBVUYsRUFBUXJCLEVBQW9CcUIsSUFDL0IsRUFBUEUsRUFBVSxPQUFPRixFQUNwQixHQUFXLEVBQVBFLEdBQThCLGlCQUFWRixHQUFzQkEsR0FBU0EsRUFBTUcsV0FBWSxPQUFPSCxFQUNoRixJQUFJSSxFQUFLWCxPQUFPWSxP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K0MsSUFBTUMsV0FVZixXQUNkQyxRQURjLFdBRWJwQyxFQUFPb0MsVUFDUGhGLEVBQU9nRixXQUdSQyxVQU5jLFdBT2JyQyxFQUFPcUMsWUFDUGpGLEVBQU9pRiIsImZpbGUiOiJsb2FkZXItc3RyZWFtLWJyb3dzZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTIpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ3ZS1lZGl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvY2xhc3NDYWxsQ2hlY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm5cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2luaGVyaXRzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1hdGVyaWFsLXVpL1RleHRGaWVsZFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2V4dGVuZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3NlcnRUaGlzSW5pdGlhbGl6ZWRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhZGFibGUtc3RyZWFtXCIpOyIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtXcml0YWJsZX0gZnJvbSBcInJlYWRhYmxlLXN0cmVhbVwiXG5pbXBvcnQge1N0cmVhbSwgTG9hZGVyLCBJbnB1dH0gZnJvbSBcIndlLWVkaXRcIlxuXG5pbXBvcnQgVGV4dEZpZWxkIGZyb20gXCJtYXRlcmlhbC11aS9UZXh0RmllbGRcIlxuXG5jb25zdCBzdXBwb3J0PSgpPT57XG5cdHRyeXtcblx0XHRyZXR1cm4gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwgJiYgZG9jdW1lbnQuY3JlYXRlRWxlbWVudFxuXHR9Y2F0Y2goZSl7XG5cdFx0cmV0dXJuIGZhbHNlXG5cdH1cbn1cbi8qKlxuKiBvcHRpb25zOlxuKiBuYW1lOiBvbmx5IGZvciBkb3dubG9hZFxuKiB0YXJnZXQ6IHNob3cgb24gaWZyYW1lL3dpbmRvd1xuKi9cbmV4cG9ydCBjbGFzcyBXcml0ZXIgZXh0ZW5kcyBTdHJlYW0uQmFzZXtcblx0c3RhdGljIGRlZmF1bHRQcm9wcz17XG5cdFx0Li4uU3RyZWFtLkJhc2UuZGVmYXVsdFByb3BzLFxuXHRcdHR5cGU6XCJicm93c2VyXCIsXG5cdH1cblx0c3RhdGljIHN1cHBvcnQ9c3VwcG9ydFxuXG5cdHN0YXRlPXtcblx0XHR3aW5kb3dGZWF0dXJlczpcIm1lbnViYXI9bm8sbG9jYXRpb249bm8scmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllcyxzdGF0dXM9bm9cIixcblx0XHQuLi50aGlzLnByb3BzXG5cdH1cblxuXHRjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHtmb3JtYXQsZml4TmFtZX0pe1xuXHRcdGlmKHRoaXMucHJvcHMuZm9ybWF0IT1mb3JtYXQpe1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7bmFtZTpmaXhOYW1lKHRoaXMuc3RhdGUubmFtZSl9KVxuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpe1xuXHRcdGNvbnN0IHtuYW1lLCB0YXJnZXQsIHdpbmRvd0ZlYXR1cmVzfT10aGlzLnN0YXRlXG5cdFx0cmV0dXJuIChcblx0XHRcdDxjZW50ZXI+XG5cdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0PFRleHRGaWVsZFxuXHRcdFx0XHRcdFx0dmFsdWU9e25hbWV8fFwiXCJ9XG5cdFx0XHRcdFx0XHRmbG9hdGluZ0xhYmVsVGV4dD1cImZpbGUgbmFtZVwiXG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KGUsbmFtZSk9PnRoaXMuc2V0U3RhdGUoe25hbWV9KX0vPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHQ8VGV4dEZpZWxkXG5cdFx0XHRcdFx0XHR2YWx1ZT17dGFyZ2V0fHxcIlwifVxuXHRcdFx0XHRcdFx0ZmxvYXRpbmdMYWJlbFRleHQ9XCJ0YXJnZXQ6X2JsYW5rfF9zZWxmfF9wYXJlbnR8X3RvcHxmcmFtZSBuYW1lXCJcblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZSx0YXJnZXQpPT57XG5cdFx0XHRcdFx0XHRcdGlmKHRhcmdldCl7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7dGFyZ2V0LG5hbWU6XCJcIn0pXG5cdFx0XHRcdFx0XHRcdH1lbHNle1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe3RhcmdldCxuYW1lOnRoaXMucHJvcHMubmFtZX0pXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH19Lz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0PFRleHRGaWVsZFxuXHRcdFx0XHRcdFx0dmFsdWU9e3dpbmRvd0ZlYXR1cmVzfHxcIlwifVxuXHRcdFx0XHRcdFx0ZmxvYXRpbmdMYWJlbFRleHQ9XCJ3aW5kb3cgZmVhdHVyZXNcIlxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhlLHdpbmRvd0ZlYXR1cmVzKT0+e1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHt3aW5kb3dGZWF0dXJlc30pXG5cdFx0XHRcdFx0XHR9fS8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9jZW50ZXI+XG5cdFx0KVxuXHR9XG5cblx0Y3JlYXRlKCl7XG5cdFx0Y29uc3QgZGF0YT10aGlzLmRhdGE9W11cblx0XHRjb25zdCBzdHJlYW09bmV3IFdyaXRhYmxlKHtcblx0XHRcdHdyaXRlKGNodW5rLGVuYywgbmV4dCl7XG5cdFx0XHRcdGRhdGEucHVzaChjaHVuaylcblx0XHRcdFx0bmV4dCgpXG5cdFx0XHR9XG5cdFx0fSlcblxuXHRcdHN0cmVhbS5vbihcImVycm9yXCIsZnVuY3Rpb24oZSl7XG5cdFx0XHRjb25zb2xlLmVycm9yKGUpXG5cdFx0fSlcblxuXHRcdGNvbnN0IHtuYW1lLGZvcm1hdCx0YXJnZXQsd2luZG93RmVhdHVyZXN9PXRoaXMucHJvcHNcblx0XHRzdHJlYW0ub24oXCJmaW5pc2hcIiwoKT0+e1xuICAgICAgICAgICAgaWYodGFyZ2V0KXtcblx0XHRcdFx0dGhpcy5wcmV2aWV3KHRhcmdldCx3aW5kb3dGZWF0dXJlcylcbiAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgIHRoaXMuZG93bmxvYWQobmFtZS5pbmRleE9mKFwiLlwiKSE9LTEgPyBuYW1lIDogYCR7bmFtZX0uJHtmb3JtYXR9YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuXHRcdHJldHVybiBzdHJlYW1cblx0fVxuXG4gICAgZG93bmxvYWQobmFtZSl7XG4gICAgICAgIGxldCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTCh0aGlzLmJsb2IpXG4gICAgICAgIGxldCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluaylcbiAgICAgICAgbGluay5kb3dubG9hZCA9IG5hbWVcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmNsaWNrKClcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKVxuICAgICAgICB3aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpXG4gICAgfVxuXG4gICAgcHJldmlldyh0YXJnZXQsd2luZG93RmVhdHVyZXMpe1xuXHRcdGxldCBzcmM9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwodGhpcy5ibG9iKVxuXHRcdGlmKHdpbmRvd0ZlYXR1cmVzKXtcblx0XHRcdGxldCB3aW5QcmV2aWV3PXdpbmRvdy5vcGVuKHNyYyx0YXJnZXR8fFwid2UtZWRpdC1wcmV2aWV3ZXJcIix3aW5kb3dGZWF0dXJlcylcblx0XHRcdHdpblByZXZpZXcuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZXVubG9hZFwiLCgpPT53aW5kb3cuVVJMLnJldm9rZU9iamVjdFVSTChzcmMpKVxuXHRcdH1lbHNle1xuXHRcdFx0bGV0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIilcblx0XHRcdGxldCBib2R5PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2JvZHknKVxuXHRcdFx0YS5ocmVmPXNyY1xuXHRcdFx0YS50YXJnZXQ9dGFyZ2V0fHxcIndlLWVkaXQtcHJldmlld2VyXCJcblx0XHRcdGJvZHkuYXBwZW5kQ2hpbGQoYSlcblx0XHRcdGEuY2xpY2soKVxuXHRcdFx0Ym9keS5yZW1vdmVDaGlsZChhKVxuXHRcdH1cbiAgICB9XG5cblx0Z2V0IGJsb2IoKXtcblx0XHRzd2l0Y2godGhpcy5wcm9wcy5mb3JtYXQpe1xuXHRcdGNhc2UgJ3N2Zyc6XG5cdFx0XHRyZXR1cm4gbmV3IEJsb2IodGhpcy5kYXRhLHt0eXBlOlwiaW1hZ2Uvc3ZnK3htbFwifSlcblx0XHRicmVha1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gbmV3IEJsb2IodGhpcy5kYXRhLCB7dHlwZTpcImFwcGxpY2F0aW9uL1wiK3RoaXMucHJvcHMuZm9ybWF0fSlcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlYWRlciBleHRlbmRzIExvYWRlci5CYXNle1xuICAgIHN0YXRpYyBkaXNwbGF5TmFtZT1cImxvYWRlci1icm93c2VyXCJcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHM9e1xuXHRcdC4uLkxvYWRlci5CYXNlLmRlZmF1bHRQcm9wcyxcbiAgICAgICAgdHlwZTpcImJyb3dzZXJcIlxuICAgIH1cblxuXHRzdGF0aWMgc3VwcG9ydD1zdXBwb3J0XG5cblx0Y29uc3RydWN0b3IoKXtcblx0XHRzdXBlciguLi5hcmd1bWVudHMpXG5cdFx0dGhpcy5zdGF0ZT17fVxuXHR9XG5cbiAgICByZW5kZXIoKXtcblx0XHRjb25zdCB7ZG9uZX09dGhpcy5zdGF0ZVxuXHRcdGlmKGRvbmUpXG5cdFx0XHRyZXR1cm4gbnVsbFxuXHRcdGNvbnN0IHtvbkxvYWR9PXRoaXMucHJvcHNcblx0XHRjb25zdCBzdXBwb3J0cz1JbnB1dC5zdXBwb3J0c1xuXHRcdGNvbnN0IHR5cGVzPUFycmF5LmZyb20oc3VwcG9ydHMudmFsdWVzKCkpXG5cdFx0XHQubWFwKGE9PmEuZGVmYXVsdFByb3BzLmV4dClcblx0XHRcdC5maWx0ZXIoYT0+ISFhKS5qb2luKFwiLFwiKS5zcGxpdChcIixcIilcblx0XHRcdC5tYXAoYT0+XCIuXCIrYSlcblx0XHRyZXR1cm4gPElucHV0T25jZVxuXHRcdFx0a2V5PXtEYXRlLm5vdygpfVxuXHRcdFx0dHlwZT1cImZpbGVcIlxuXHRcdFx0YWNjZXB0PXt0eXBlcy5qb2luKFwiLFwiKX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoe3RhcmdldH0pPT57XG5cdFx0XHRcdGNvbnN0IGZpbGU9dGFyZ2V0LmZpbGVzWzBdXG4gICAgICAgICAgICAgICAgY29uc3QgcmVhZGVyPW5ldyBGaWxlUmVhZGVyKClcblx0XHRcdFx0cmVhZGVyLm9ubG9hZD1lPT57XG5cdFx0XHRcdFx0b25Mb2FkKHtcblx0XHRcdFx0XHRcdGRhdGE6ZS50YXJnZXQucmVzdWx0LFxuXHRcdFx0XHRcdFx0bWltZVR5cGU6ZmlsZS50eXBlLFxuXHRcdFx0XHRcdFx0bmFtZTpmaWxlLm5hbWVcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKVxuXHRcdFx0XHR0YXJnZXQudmFsdWU9XCJcIlxuXHRcdFx0XHR0aGlzLnNldFN0YXRlKHtkb25lOnRydWV9KVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHN0eWxlPXt7cG9zaXRpb246XCJmaXhlZFwiLCBsZWZ0Oi05OTk5fX0vPlxuICAgIH1cbn1cblxuY2xhc3MgSW5wdXRPbmNlIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50e1xuXHRyZW5kZXIoKXtcblx0XHRyZXR1cm4gPGlucHV0IHJlZj1cImlucHV0XCIgey4uLnRoaXMucHJvcHN9Lz5cblx0fVxuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKXtcblx0XHR0aGlzLnJlZnMuaW5wdXQuY2xpY2soKVxuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0aW5zdGFsbCgpe1xuXHRcdFJlYWRlci5pbnN0YWxsKClcblx0XHRXcml0ZXIuaW5zdGFsbCgpXG5cdH0sXG5cblx0dW5pbnN0YWxsKCl7XG5cdFx0UmVhZGVyLnVuaW5zdGFsbCgpXG5cdFx0V3JpdGVyLnVuaW5zdGFsbCgpXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=
\No newline at end of file